/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_check.F
ViewVC logotype

Annotation of /MITgcm_contrib/dgoldberg/streamice/streamice_check.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download)
Wed Aug 27 19:29:13 2014 UTC (10 years, 10 months ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +147 -147 lines
updating contrib streamice repo with latest files, and separated out convergence checks; and parameterised maximum iteration counts and interface w shelfice for coupling

1 dgoldberg 1.3 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_check.F,v 1.3 2014/07/10 15:09:40 dgoldberg Exp $
2 heimbach 1.1 C $Name: $
3    
4     #include "STREAMICE_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7     CBOP 0
8     C !ROUTINE: STREAMICE_CHECK
9    
10     C !INTERFACE:
11     SUBROUTINE STREAMICE_CHECK( myThid )
12    
13     C !DESCRIPTION:
14     C Check dependances with other packages
15    
16     C !USES:
17     IMPLICIT NONE
18     #include "SIZE.h"
19     #include "GRID.h"
20     #include "EEPARAMS.h"
21     #include "PARAMS.h"
22     #include "STREAMICE.h"
23     #include "STREAMICE_CG.h"
24     #include "STREAMICE_BDRY.h"
25    
26     C !INPUT PARAMETERS:
27     INTEGER myThid
28     CEOP
29    
30     #ifdef ALLOW_STREAMICE
31     C !LOCAL VARIABLES:
32     C msgBuf :: Informational/error message buffer
33     CHARACTER*(MAX_LEN_MBUF) msgBuf
34 dgoldberg 1.3 CHARACTER*(10) fname
35 heimbach 1.1 INTEGER m,n,k
36    
37     _BEGIN_MASTER(myThid)
38    
39     WRITE(msgBuf,'(A)') 'STREAMICE_CHECK: #define STREAMICE'
40     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
41     & SQUEEZE_RIGHT , 1)
42    
43     C- write out integer parameters
44    
45 dgoldberg 1.3 CALL WRITE_0D_I( streamice_max_cg_iter, INDEX_NONE,
46 heimbach 1.1 & ' max cg interations =',
47     & ' /* user defined parameter */')
48 dgoldberg 1.3 CALL WRITE_0D_I( streamice_max_nl_iter, INDEX_NONE,
49 heimbach 1.1 & ' max nonlin interations =',
50     & ' /* user defined parameter */')
51 dgoldberg 1.3 CALL WRITE_0D_I( streamice_nstep_velocity, INDEX_NONE,
52 heimbach 1.1 & ' # of timesteps per velocity solve =',
53     & ' /* user defined parameter */')
54    
55    
56     C- write out real parameters
57    
58     CALL WRITE_0D_RL( streamice_density, INDEX_NONE,
59     & ' streamice_density =', ' /* user defined parameter */')
60 dgoldberg 1.3 CALL WRITE_0D_RL( streamice_density_ocean_avg, INDEX_NONE,
61     & ' streamice_density_ocean_avg =',
62 heimbach 1.1 & ' /* user defined parameter */')
63 dgoldberg 1.3 CALL WRITE_0D_RL( B_glen_isothermal, INDEX_NONE,
64     & ' glens law stifness =',
65 heimbach 1.1 & ' /* user defined parameter */')
66 dgoldberg 1.3 CALL WRITE_0D_RL( n_glen, INDEX_NONE,
67     & ' glens law exponent =',
68 heimbach 1.1 & ' /* user defined parameter */')
69 dgoldberg 1.3 CALL WRITE_0D_RL( C_basal_fric_const, INDEX_NONE,
70     & ' basal trac coeff =',
71 heimbach 1.1 & ' /* user defined parameter */')
72 dgoldberg 1.3 CALL WRITE_0D_RL( n_basal_friction, INDEX_NONE,
73     & ' basal exponent =',
74 heimbach 1.1 & ' /* user defined parameter */')
75 dgoldberg 1.3 CALL WRITE_0D_RL( streamice_input_flux_unif, INDEX_NONE,
76     & ' uniform input flux (m^2/a) =',
77 heimbach 1.1 & ' /* user defined parameter */')
78 dgoldberg 1.3 CALL WRITE_0D_RL( streamice_vel_update, INDEX_NONE,
79     & ' time for ice vel update (sec) =',
80 heimbach 1.1 & ' /* user defined parameter */')
81 dgoldberg 1.3 CALL WRITE_0D_RL( streamice_cg_tol, INDEX_NONE,
82     & ' conj grad tolerance =',
83 heimbach 1.1 & ' /* user defined parameter */')
84 dgoldberg 1.3 CALL WRITE_0D_RL( streamice_nonlin_tol, INDEX_NONE,
85     & ' ice velocity nonlinear iter tol =',
86 heimbach 1.1 & ' /* user defined parameter */')
87 dgoldberg 1.3 CALL WRITE_0D_RL( shelf_max_draft, INDEX_NONE,
88     & ' max shelf draft for analytic init (m) =',
89 heimbach 1.1 & ' /* user defined parameter */')
90 dgoldberg 1.3 CALL WRITE_0D_RL( shelf_min_draft, INDEX_NONE,
91     & ' min shelf draft for analytic init (m) =',
92 heimbach 1.1 & ' /* user defined parameter */')
93 dgoldberg 1.3 CALL WRITE_0D_RL( shelf_edge_pos, INDEX_NONE,
94     & ' shelf extent for analytic init (km) =',
95 heimbach 1.1 & ' /* user defined parameter */')
96 dgoldberg 1.3 CALL WRITE_0D_RL( shelf_slope_scale, INDEX_NONE,
97     & ' slope scale for analytic init (km) =',
98 heimbach 1.1 & ' /* user defined parameter */')
99 dgoldberg 1.3 CALL WRITE_0D_RL( shelf_flat_width, INDEX_NONE,
100     & ' flat shelf width for analytic init (km) =',
101 heimbach 1.1 & ' /* user defined parameter */')
102 dgoldberg 1.3 CALL WRITE_0D_RL( flow_dir, INDEX_NONE,
103     & ' flow direction for analytic init =',
104 heimbach 1.1 & ' /* user defined parameter */')
105    
106 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_noflow_NORTH, INDEX_NONE,
107     & ' min range on no bd for no-slip (km) =',
108 heimbach 1.1 & ' /* user defined parameter */')
109 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_noflow_NORTH, INDEX_NONE,
110     & ' max range on no bd for no-slip (km) =',
111 heimbach 1.1 & ' /* user defined parameter */')
112 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_noflow_SOUTH, INDEX_NONE,
113     & ' min range on so bd for no-slip (km) =',
114 heimbach 1.1 & ' /* user defined parameter */')
115 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_noflow_SOUTH, INDEX_NONE,
116     & ' max range on so bd for no-slip (km) =',
117 heimbach 1.1 & ' /* user defined parameter */')
118 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_noflow_EAST, INDEX_NONE,
119     & ' min range on east bd for no-slip (km) =',
120 heimbach 1.1 & ' /* user defined parameter */')
121 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_noflow_EAST, INDEX_NONE,
122     & ' max range on east bd for no-slip (km) =',
123 heimbach 1.1 & ' /* user defined parameter */')
124 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_noflow_WEST, INDEX_NONE,
125     & ' min range on west bd for no-slip (km) =',
126 heimbach 1.1 & ' /* user defined parameter */')
127 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_noflow_WEST, INDEX_NONE,
128     & ' max range on west bd for no-slip (km) =',
129 heimbach 1.1 & ' /* user defined parameter */')
130    
131 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_noStress_NORTH, INDEX_NONE,
132     & ' min range on no bd for no-stress (km) =',
133 heimbach 1.1 & ' /* user defined parameter */')
134 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_noStress_NORTH, INDEX_NONE,
135     & ' max range on no bd for no-stress (km) =',
136 heimbach 1.1 & ' /* user defined parameter */')
137 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_noStress_SOUTH, INDEX_NONE,
138     & ' min range on so bd for no-stress (km) =',
139 heimbach 1.1 & ' /* user defined parameter */')
140 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_noStress_SOUTH, INDEX_NONE,
141     & ' max range on so bd for no-stress (km) =',
142 heimbach 1.1 & ' /* user defined parameter */')
143 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_noStress_EAST, INDEX_NONE,
144     & ' min range on east bd for no-stress (km) =',
145 heimbach 1.1 & ' /* user defined parameter */')
146 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_noStress_EAST, INDEX_NONE,
147     & ' max range on east bd for no-stress (km) =',
148 heimbach 1.1 & ' /* user defined parameter */')
149 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_noStress_WEST, INDEX_NONE,
150     & ' min range on west bd for no-stress (km) =',
151 heimbach 1.1 & ' /* user defined parameter */')
152 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_noStress_WEST, INDEX_NONE,
153     & ' max range on west bd for no-stress (km) =',
154 heimbach 1.1 & ' /* user defined parameter */')
155    
156 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_FluxBdry_NORTH, INDEX_NONE,
157     & ' min range on no bd for FluxBdry (km) =',
158 heimbach 1.1 & ' /* user defined parameter */')
159 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_FluxBdry_NORTH, INDEX_NONE,
160     & ' max range on no bd for FluxBdry (km) =',
161 heimbach 1.1 & ' /* user defined parameter */')
162 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_FluxBdry_SOUTH, INDEX_NONE,
163     & ' min range on so bd for FluxBdry (km) =',
164 heimbach 1.1 & ' /* user defined parameter */')
165 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_FluxBdry_SOUTH, INDEX_NONE,
166     & ' max range on so bd for FluxBdry (km) =',
167 heimbach 1.1 & ' /* user defined parameter */')
168 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_FluxBdry_EAST, INDEX_NONE,
169     & ' min range on east bd for FluxBdry (km) =',
170 heimbach 1.1 & ' /* user defined parameter */')
171 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_FluxBdry_EAST, INDEX_NONE,
172     & ' max range on east bd for FluxBdry (km) =',
173 heimbach 1.1 & ' /* user defined parameter */')
174 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_FluxBdry_WEST, INDEX_NONE,
175     & ' min range on west bd for FluxBdry (km) =',
176 heimbach 1.1 & ' /* user defined parameter */')
177 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_FluxBdry_WEST, INDEX_NONE,
178     & ' max range on west bd for FluxBdry (km) =',
179 heimbach 1.1 & ' /* user defined parameter */')
180    
181 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_Dirich_NORTH, INDEX_NONE,
182     & ' min range on no bd for Dirich (km) =',
183 heimbach 1.1 & ' /* user defined parameter */')
184 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_Dirich_NORTH, INDEX_NONE,
185     & ' max range on no bd for Dirich (km) =',
186 heimbach 1.1 & ' /* user defined parameter */')
187 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_Dirich_SOUTH, INDEX_NONE,
188     & ' min range on so bd for Dirich (km) =',
189 heimbach 1.1 & ' /* user defined parameter */')
190 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_Dirich_SOUTH, INDEX_NONE,
191     & ' max range on so bd for Dirich (km) =',
192 heimbach 1.1 & ' /* user defined parameter */')
193 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_Dirich_EAST, INDEX_NONE,
194     & ' min range on east bd for Dirich (km) =',
195 heimbach 1.1 & ' /* user defined parameter */')
196 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_Dirich_EAST, INDEX_NONE,
197     & ' max range on east bd for Dirich (km) =',
198 heimbach 1.1 & ' /* user defined parameter */')
199 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_Dirich_WEST, INDEX_NONE,
200     & ' min range on west bd for Dirich (km) =',
201 heimbach 1.1 & ' /* user defined parameter */')
202 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_Dirich_WEST, INDEX_NONE,
203     & ' max range on west bd for Dirich (km) =',
204 heimbach 1.1 & ' /* user defined parameter */')
205    
206 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_CFBC_NORTH, INDEX_NONE,
207     & ' min range on no bd for CFBC (km) =',
208 heimbach 1.1 & ' /* user defined parameter */')
209 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_CFBC_NORTH, INDEX_NONE,
210     & ' max range on no bd for CFBC (km) =',
211 heimbach 1.1 & ' /* user defined parameter */')
212 dgoldberg 1.3 CALL WRITE_0D_RL( min_x_CFBC_SOUTH, INDEX_NONE,
213     & ' min range on so bd for CFBC (km) =',
214 heimbach 1.1 & ' /* user defined parameter */')
215 dgoldberg 1.3 CALL WRITE_0D_RL( max_x_CFBC_SOUTH, INDEX_NONE,
216     & ' max range on so bd for CFBC (km) =',
217 heimbach 1.1 & ' /* user defined parameter */')
218 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_CFBC_EAST, INDEX_NONE,
219     & ' min range on east bd for CFBC (km) =',
220 heimbach 1.1 & ' /* user defined parameter */')
221 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_CFBC_EAST, INDEX_NONE,
222     & ' max range on east bd for CFBC (km) =',
223 heimbach 1.1 & ' /* user defined parameter */')
224 dgoldberg 1.3 CALL WRITE_0D_RL( min_y_CFBC_WEST, INDEX_NONE,
225     & ' min range on west bd for CFBC (km) =',
226 heimbach 1.1 & ' /* user defined parameter */')
227 dgoldberg 1.3 CALL WRITE_0D_RL( max_y_CFBC_WEST, INDEX_NONE,
228     & ' max range on west bd for CFBC (km) =',
229 heimbach 1.1 & ' /* user defined parameter */')
230    
231 dgoldberg 1.3 CALL WRITE_0D_RL( flux_bdry_val_NORTH, INDEX_NONE,
232     & ' val (m^2/a) for north flux bdry =',
233 heimbach 1.1 & ' /* user defined parameter */')
234 dgoldberg 1.3 CALL WRITE_0D_RL( flux_bdry_val_SOUTH, INDEX_NONE,
235     & ' val (m^2/a) for south flux bdry =',
236 heimbach 1.1 & ' /* user defined parameter */')
237 dgoldberg 1.3 CALL WRITE_0D_RL( flux_bdry_val_EAST, INDEX_NONE,
238     & ' val (m^2/a) for east flux bdry =',
239 heimbach 1.1 & ' /* user defined parameter */')
240 dgoldberg 1.3 CALL WRITE_0D_RL( flux_bdry_val_WEST, INDEX_NONE,
241     & ' val (m^2/a) for west flux bdry =',
242 heimbach 1.1 & ' /* user defined parameter */')
243 dgoldberg 1.3
244 heimbach 1.1
245     C- write out logical parameters
246    
247 dgoldberg 1.3 CALL WRITE_0D_L( STREAMICE_dump_mdsio, INDEX_NONE,
248 heimbach 1.1 & ' streamice_dump_mdsio =', ' /* user defined parameter */')
249 dgoldberg 1.3 CALL WRITE_0D_L( STREAMICE_dump_mdsio, INDEX_NONE,
250 heimbach 1.1 & ' streamice_dump_mdsio =', ' /* user defined parameter */')
251 dgoldberg 1.3 CALL WRITE_0D_L( STREAMICE_dump_mnc, INDEX_NONE,
252 heimbach 1.1 & ' streamice_dump_mnc =', ' /* user defined parameter */')
253 dgoldberg 1.3 CALL WRITE_0D_L( STREAMICE_tave_mnc, INDEX_NONE,
254 heimbach 1.1 & ' streamice_tave_mnc =', ' /* user defined parameter */')
255 dgoldberg 1.3 ! CALL WRITE_0D_L( STREAMICE_GL_regularize, INDEX_NONE,
256     ! & ' streamice_GL_regularize =', ' /* user defined parameter */')
257     CALL WRITE_0D_L( STREAMICE_move_front, INDEX_NONE,
258 heimbach 1.1 & ' streamice_move_front =', ' /* user defined parameter */')
259 dgoldberg 1.3 CALL WRITE_0D_L( STREAMICE_calve_to_mask, INDEX_NONE,
260 heimbach 1.1 & ' streamice_calve_to_mask =', ' /* user defined parameter */')
261    
262     C- write out string parameters
263    
264     CALL WRITE_0D_C( STREAMICEthickInit,-1,INDEX_NONE,
265     & 'STREAMICEthickInit =',
266     & ' /* user defined parameter */')
267     CALL WRITE_0D_C( STREAMICEthickFile,-1,INDEX_NONE,
268     & 'STREAMICEthickFile =',
269     & ' /* user defined parameter */')
270     CALL WRITE_0D_C( STREAMICEcalveMaskFile,-1,INDEX_NONE,
271     & 'STREAMICEcalveMaskFile =',
272     & ' /* user defined parameter */')
273    
274     C- Put stops here if some flags are wrongly chosen.
275     C- For example, require this package to use tempStepping
276    
277     _END_MASTER(myThid)
278    
279     C write init_thickness array to a binary file
280    
281 dgoldberg 1.3 ! CALL WRITE_FLD_XY_RL ( "H_streamIce", "init",
282 heimbach 1.1 ! & H_streamIce, 0, myThid )
283 dgoldberg 1.3 ! CALL WRITE_FLD_XY_RL ( "area_shelf_streamice", "init",
284 heimbach 1.1 ! & area_shelf_streamice, 0, myThid )
285 dgoldberg 1.3 ! CALL WRITE_FLD_XY_RL ( "STREAMICE_hmask", "init",
286 heimbach 1.1 ! & STREAMICE_hmask, 0, myThid )
287 dgoldberg 1.3 ! CALL WRITE_FLD_XY_RL ( "base_el_streamice", "init",
288 heimbach 1.1 ! & base_el_streamice, 0, myThid )
289 dgoldberg 1.3 ! CALL WRITE_FLD_XY_RL ( "ssurf_el_streamice", "init",
290 heimbach 1.1 ! & surf_el_streamice, 0, myThid )
291 dgoldberg 1.3
292 heimbach 1.1 DO m=1,4
293     DO n=1,4
294     DO k=1,2
295 dgoldberg 1.3 WRITE(fname,'(A,I1,A,I1,A,I1)')
296 heimbach 1.1 & "Dphi_", m, "_", n, "_", k
297     CALL WRITE_FLD_XY_RL (fname, "",
298     & Dphi(:,:,:,:,m,n,k),0,myThid)
299     ENDDO
300     ENDDO
301     ENDDO
302    
303 dgoldberg 1.3 CALL WRITE_FLD_XY_RL ( "k1AtC_str", "out",
304 heimbach 1.1 & k1AtC_str, 0, myThid )
305 dgoldberg 1.3 CALL WRITE_FLD_XY_RL ( "k2AtC_str", "out",
306 heimbach 1.1 & k2AtC_str, 0, myThid )
307 dgoldberg 1.3 CALL WRITE_FLD_XY_RS ( "STREAMICE_ufacemask_bdry", "out",
308 heimbach 1.1 & STREAMICE_ufacemask_bdry, 0, myThid )
309 dgoldberg 1.3 CALL WRITE_FLD_XY_RS ( "STREAMICE_vfacemask_bdry", "out",
310 heimbach 1.1 & STREAMICE_vfacemask_bdry, 0, myThid )
311 dgoldberg 1.3 CALL WRITE_FLD_XY_RL ( "u_bdry_values_SI", "out",
312 heimbach 1.1 & u_bdry_values_SI, 0, myThid )
313 dgoldberg 1.3 CALL WRITE_FLD_XY_RL ( "v_bdry_values_SI", "out",
314 heimbach 1.1 & v_bdry_values_SI, 0, myThid )
315 dgoldberg 1.3 CALL WRITE_FLD_XY_RL ( "u_flux_bdry_SI", "out",
316 heimbach 1.1 & u_flux_bdry_SI, 0, myThid )
317 dgoldberg 1.3 CALL WRITE_FLD_XY_RL ( "v_flux_bdry_SI", "out",
318 heimbach 1.1 & v_flux_bdry_SI, 0, myThid )
319    
320     #endif /* ALLOW_STREAMICE */
321    
322     RETURN
323     END

  ViewVC Help
Powered by ViewVC 1.1.22