18 |
C == global variables == |
C == global variables == |
19 |
#include "SIZE.h" |
#include "SIZE.h" |
20 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
21 |
|
#include "PARAMS.h" |
22 |
#include "SEAICE_SIZE.h" |
#include "SEAICE_SIZE.h" |
23 |
#include "SEAICE_PARAMS.h" |
#include "SEAICE_PARAMS.h" |
24 |
#ifdef ALLOW_SITRACER |
#ifdef ALLOW_SITRACER |
51 |
ioUnit = standardMessageUnit |
ioUnit = standardMessageUnit |
52 |
|
|
53 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
|
&' ' |
|
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
|
|
& SQUEEZE_RIGHT , myThid) |
|
|
WRITE(msgBuf,'(A)') |
|
54 |
&'// =======================================================' |
&'// =======================================================' |
55 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
56 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
57 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
58 |
&'// Seaice configuration (SEAICE_PARM01) >>> START <<<' |
&'// Seaice configuration (SEAICE_PARM01) >>> START <<<' |
59 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
60 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
61 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
62 |
&'// =======================================================' |
&'// =======================================================' |
63 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
64 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
|
WRITE(msgBuf,'(A)') |
|
|
&' ' |
|
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
|
|
& SQUEEZE_RIGHT , myThid) |
|
65 |
|
|
66 |
C-- Time-stepping related param. |
C-- Time-stepping related param. |
67 |
|
|
68 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') ' ' |
|
&' ' |
|
69 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
70 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
71 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
72 |
&' Seaice time stepping configuration > START < ' |
&' Seaice time stepping configuration > START < ' |
73 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
74 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
75 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
76 |
&' ----------------------------------------------' |
&' ----------------------------------------------' |
77 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
78 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
79 |
|
|
80 |
CALL WRITE_0D_RL( SEAICE_deltaTtherm,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_deltaTtherm,INDEX_NONE, |
81 |
& 'SEAICE_deltaTtherm=', ' /* thermodynamic timestep */') |
& 'SEAICE_deltaTtherm=', ' /* thermodynamic timestep */') |
88 |
CALL WRITE_0D_L ( SEAICErestoreUnderIce, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICErestoreUnderIce, INDEX_NONE, |
89 |
& 'SEAICErestoreUnderIce =', ' /* restore T and S under ice */') |
& 'SEAICErestoreUnderIce =', ' /* restore T and S under ice */') |
90 |
|
|
91 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') ' ' |
|
&' ' |
|
92 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
93 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
94 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
95 |
&' Seaice dynamics configuration > START < ' |
&' Seaice dynamics configuration > START < ' |
96 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
97 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
98 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
99 |
&' ------------------------------------------' |
&' ------------------------------------------' |
100 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
101 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
102 |
|
|
103 |
C-- Seaice-Dynamics parameters |
C-- Seaice-Dynamics parameters |
104 |
CALL WRITE_0D_L ( SEAICEuseDYNAMICS, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICEuseDYNAMICS, INDEX_NONE, |
107 |
IF (.NOT.SEAICEuseDYNAMICS) THEN |
IF (.NOT.SEAICEuseDYNAMICS) THEN |
108 |
WRITE(msgBuf,'(A)') ' pkg/seaice dynamics is OFF ' |
WRITE(msgBuf,'(A)') ' pkg/seaice dynamics is OFF ' |
109 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
110 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
111 |
ELSE |
ELSE |
112 |
|
|
113 |
#ifdef SEAICE_CGRID |
#ifdef SEAICE_CGRID |
133 |
& 'SEAICE_waterDrag =', ' /* water-ice drag * density */') |
& 'SEAICE_waterDrag =', ' /* water-ice drag * density */') |
134 |
CALL WRITE_0D_RL( SEAICE_waterDrag_south ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_waterDrag_south ,INDEX_NONE, |
135 |
& 'SEAICE_waterDrag_south =', ' /* Southern Ocean waterDrag */') |
& 'SEAICE_waterDrag_south =', ' /* Southern Ocean waterDrag */') |
136 |
CALL WRITE_0D_L ( SEAICEuseTILT, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICEuseTilt, INDEX_NONE, |
137 |
& 'SEAICEuseTILT =', ' /* include surface tilt in dyna. */') |
& 'SEAICEuseTilt =', ' /* include surface tilt in dyna. */') |
138 |
CALL WRITE_0D_L ( SEAICEuseTEM, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICEuseTEM, INDEX_NONE, |
139 |
& 'SEAICEuseTEM =', ' /* use truncated ellipse rheology */') |
& 'SEAICEuseTEM =', ' /* use truncated ellipse rheology */') |
140 |
CALL WRITE_0D_RL( SEAICE_strength ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_strength ,INDEX_NONE, |
145 |
& 'SEAICEpresPow0 =', ' /* exponent for Heff<SEAICEpresH0 */') |
& 'SEAICEpresPow0 =', ' /* exponent for Heff<SEAICEpresH0 */') |
146 |
CALL WRITE_0D_I ( SEAICEpresPow1, INDEX_NONE, |
CALL WRITE_0D_I ( SEAICEpresPow1, INDEX_NONE, |
147 |
& 'SEAICEpresPow1 =', ' /* exponent for Heff>SEAICEpresH0 */') |
& 'SEAICEpresPow1 =', ' /* exponent for Heff>SEAICEpresH0 */') |
148 |
|
CALL WRITE_0D_I ( SEAICEetaZmethod, INDEX_NONE, |
149 |
|
& 'SEAICEetaZmethod =', ' /* method computing eta at Z-point */') |
150 |
CALL WRITE_0D_RL( SEAICE_zetaMin ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_zetaMin ,INDEX_NONE, |
151 |
& 'SEAICE_zetaMin =', ' /* lower bound for viscosity */') |
& 'SEAICE_zetaMin =', ' /* lower bound for viscosity */') |
152 |
CALL WRITE_0D_RL( SEAICE_eccen,INDEX_NONE,'SEAICE_eccen =', |
CALL WRITE_0D_RL( SEAICE_eccen,INDEX_NONE,'SEAICE_eccen =', |
173 |
& ' /* mix free-drift sol. into LSR initial Guess */') |
& ' /* mix free-drift sol. into LSR initial Guess */') |
174 |
CALL WRITE_0D_I ( SOLV_MAX_ITERS, INDEX_NONE, |
CALL WRITE_0D_I ( SOLV_MAX_ITERS, INDEX_NONE, |
175 |
& 'SOLV_MAX_ITERS =', ' /* max. number of LSR solver steps */') |
& 'SOLV_MAX_ITERS =', ' /* max. number of LSR solver steps */') |
176 |
|
CALL WRITE_0D_RL( SEAICE_LSRrelaxU ,INDEX_NONE, |
177 |
|
& 'SEAICE_LSRrelaxU =', ' /* LSR solver: relaxation parameter */') |
178 |
|
CALL WRITE_0D_RL( SEAICE_LSRrelaxV ,INDEX_NONE, |
179 |
|
& 'SEAICE_LSRrelaxV =', ' /* LSR solver: relaxation parameter */') |
180 |
CALL WRITE_0D_RL( LSR_ERROR ,INDEX_NONE, |
CALL WRITE_0D_RL( LSR_ERROR ,INDEX_NONE, |
181 |
& 'LSR_ERROR =', ' /* sets accuracy of LSR solver */') |
& 'LSR_ERROR =', ' /* sets accuracy of LSR solver */') |
182 |
CALL WRITE_0D_I ( SOLV_NCHECK, INDEX_NONE, |
CALL WRITE_0D_I ( SOLV_NCHECK, INDEX_NONE, |
183 |
& 'SOLV_NCHECK =', ' /* test interval for LSR solver */') |
& 'SOLV_NCHECK =', ' /* test interval for LSR solver */') |
184 |
CALL WRITE_0D_I ( NPSEUDOTIMESTEPS, INDEX_NONE, |
CALL WRITE_0D_I ( NPSEUDOTIMESTEPS, INDEX_NONE, |
185 |
& 'NPSEUDOTIMESTEPS =', ' /* num. of extra pseudo time steps */') |
& 'NPSEUDOTIMESTEPS =', ' /* num. of extra pseudo time steps */') |
186 |
|
CALL WRITE_0D_L ( SEAICEuseMultiTileSolver, INDEX_NONE, |
187 |
|
& 'SEAICEuseMultiTileSolver =', |
188 |
|
& ' /* use full domain tri-diag solver */') |
189 |
|
CALL WRITE_0D_I ( SEAICE_OLx, INDEX_NONE, |
190 |
|
& 'SEAICE_OLx =', ' /* overlap for LSR/preconditioner */') |
191 |
|
CALL WRITE_0D_I ( SEAICE_OLy, INDEX_NONE, |
192 |
|
& 'SEAICE_OLy =', ' /* overlap for LSR/preconditioner */') |
193 |
|
#ifdef SEAICE_ALLOW_JFNK |
194 |
|
IF ( SEAICEuseJFNK ) THEN |
195 |
|
CALL WRITE_0D_I ( SEAICEnewtonIterMax, INDEX_NONE, |
196 |
|
& 'SEAICEnewtonIterMax =', ' /* num. of JFNK Newton steps */') |
197 |
|
CALL WRITE_0D_I ( SEAICEkrylovIterMax, INDEX_NONE, |
198 |
|
& 'SEAICEkrylovIterMax =', ' /* num. of JFNK Krylov steps */') |
199 |
|
CALL WRITE_0D_I ( SEAICE_JFNK_lsIter, INDEX_NONE, |
200 |
|
& 'SEAICE_JFNK_lsIter =', ' /* start of line search */') |
201 |
|
CALL WRITE_0D_I ( SEAICE_JFNK_tolIter, INDEX_NONE, |
202 |
|
& 'SEAICE_JFNK_tolIter =', ' /* tol. is relaxed after this */') |
203 |
|
CALL WRITE_0D_RL( JFNKgamma_nonlin ,INDEX_NONE, |
204 |
|
& 'JFNKgamma_nonlin=', ' /* JFNK tolerance */') |
205 |
|
CALL WRITE_0D_RL( JFNKres_t ,INDEX_NONE, |
206 |
|
& 'JFNKres_t=', ' /* JFNK parameter */') |
207 |
|
CALL WRITE_0D_RL( JFNKres_tFac ,INDEX_NONE, |
208 |
|
& 'JFNKres_tFac=', ' /* JFNK parameter */') |
209 |
|
CALL WRITE_0D_RL( SEAICE_JFNKepsilon, INDEX_NONE, |
210 |
|
& 'SEAICE_JFNKepsilon=', ' /* JFNK: FD-gradient step size */') |
211 |
|
ENDIF |
212 |
|
#endif /* SEAICE_ALLOW_JFNK */ |
213 |
#ifdef SEAICE_ALLOW_EVP |
#ifdef SEAICE_ALLOW_EVP |
214 |
ELSE |
ELSE |
215 |
CALL WRITE_0D_RL( SEAICE_elasticParm ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_elasticParm ,INDEX_NONE, |
218 |
& 'SEAICE_evpTauRelax=', ' /* EVP relaxation timescale */') |
& 'SEAICE_evpTauRelax=', ' /* EVP relaxation timescale */') |
219 |
CALL WRITE_0D_RL( SEAICE_evpDampC ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_evpDampC ,INDEX_NONE, |
220 |
& 'SEAICE_evpDampC =', ' /* EVP damping parameter */') |
& 'SEAICE_evpDampC =', ' /* EVP damping parameter */') |
221 |
CALL WRITE_0D_L ( SEAICEuseEVPpickup, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICEuseEVPstar, INDEX_NONE, |
222 |
|
& 'SEAICEuseEVPstar=', ' /* use EVP* solver */') |
223 |
|
CALL WRITE_0D_RL( SEAICE_evpAlpha ,INDEX_NONE, |
224 |
|
& 'SEAICE_evpAlpha =', ' /* EVP* parameter*/') |
225 |
|
CALL WRITE_0D_RL( SEAICE_evpBeta ,INDEX_NONE, |
226 |
|
& 'SEAICE_evpBeta =', ' /* EVP* parameter */') |
227 |
|
CALL WRITE_0D_I ( SEAICEnEVPstarSteps, INDEX_NONE, |
228 |
|
& 'SEAICEnEVPstarSteps =', ' /* num. of EVP* steps */') |
229 |
|
CALL WRITE_0D_L ( SEAICEuseEVPpickup, INDEX_NONE, |
230 |
& 'SEAICEuseEVPpickup=', ' /* start EVP solver with EVP pickup*/') |
& 'SEAICEuseEVPpickup=', ' /* start EVP solver with EVP pickup*/') |
231 |
#endif /* SEAICE_ALLOW_EVP */ |
#endif /* SEAICE_ALLOW_EVP */ |
232 |
ENDIF |
ENDIF |
234 |
C end if SEAICEuseDYNAMICS bloc |
C end if SEAICEuseDYNAMICS bloc |
235 |
ENDIF |
ENDIF |
236 |
|
|
237 |
C-- Thermodynamics parameters |
WRITE(msgBuf,'(A)') ' ' |
238 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
239 |
|
& SQUEEZE_RIGHT, myThid ) |
240 |
|
WRITE(msgBuf,'(A)') |
241 |
|
&' Seaice advection diffusion config, > START < ' |
242 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
243 |
|
& SQUEEZE_RIGHT, myThid ) |
244 |
|
WRITE(msgBuf,'(A)') |
245 |
|
&' -----------------------------------------------' |
246 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
247 |
|
& SQUEEZE_RIGHT, myThid ) |
248 |
|
IF ( useThSIce ) THEN |
249 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
250 |
&' ' |
&' ==> advection diffusion done in pkg ThSIce' |
251 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
252 |
|
& SQUEEZE_RIGHT, myThid ) |
253 |
|
ELSE |
254 |
|
|
255 |
|
CALL WRITE_0D_L ( SEAICEadvHeff, INDEX_NONE, |
256 |
|
& 'SEAICEadvHeff =', ' /* advect effective ice thickness */') |
257 |
|
CALL WRITE_0D_L ( SEAICEadvArea, INDEX_NONE, |
258 |
|
& 'SEAICEadvArea =', ' /* advect fractional ice area */') |
259 |
|
CALL WRITE_0D_L ( SEAICEadvSnow, INDEX_NONE, |
260 |
|
& 'SEAICEadvSnow =', ' /* advect snow layer together with ice */') |
261 |
|
#ifdef SEAICE_VARIABLE_SALINITY |
262 |
|
CALL WRITE_0D_L ( SEAICEadvSalt, INDEX_NONE, |
263 |
|
& 'SEAICEadvSalt =', ' /* advect salinity together with ice */') |
264 |
|
#endif |
265 |
|
CALL WRITE_0D_I ( SEAICEadvScheme, INDEX_NONE, |
266 |
|
& 'SEAICEadvScheme =', ' /* advection scheme for ice */') |
267 |
|
IF ( SEAICEadvScheme .EQ. 2 ) |
268 |
|
& CALL WRITE_0D_L ( SEAICEuseFluxForm, INDEX_NONE, |
269 |
|
& 'SEAICEuseFluxForm =', ' /* advection in FV flux form */') |
270 |
|
IF ( SEAICEadvArea ) |
271 |
|
&CALL WRITE_0D_I ( SEAICEadvSchArea, INDEX_NONE, |
272 |
|
& 'SEAICEadvSchArea =', ' /* advection scheme for area */') |
273 |
|
IF ( SEAICEadvHeff ) |
274 |
|
&CALL WRITE_0D_I ( SEAICEadvSchHeff, INDEX_NONE, |
275 |
|
& 'SEAICEadvSchHeff =', ' /* advection scheme for thickness */') |
276 |
|
IF ( SEAICEadvSnow ) |
277 |
|
&CALL WRITE_0D_I ( SEAICEadvSchSnow, INDEX_NONE, |
278 |
|
& 'SEAICEadvSchSnow =', ' /* advection scheme for snow */') |
279 |
|
#ifdef SEAICE_VARIABLE_SALINITY |
280 |
|
IF ( SEAICEadvSalt ) |
281 |
|
&CALL WRITE_0D_I ( SEAICEadvSchSalt, INDEX_NONE, |
282 |
|
& 'SEAICEadvSchSalt =', ' /* advection scheme for salt */') |
283 |
|
#endif |
284 |
|
CALL WRITE_0D_RL( SEAICEdiffKhArea, INDEX_NONE, |
285 |
|
& 'SEAICEdiffKhArea =', ' /* diffusivity (m^2/s) for area */') |
286 |
|
CALL WRITE_0D_RL( SEAICEdiffKhHeff, INDEX_NONE, |
287 |
|
& 'SEAICEdiffKhHeff =', ' /* diffusivity (m^2/s) for heff */') |
288 |
|
CALL WRITE_0D_RL( SEAICEdiffKhSnow, INDEX_NONE, |
289 |
|
& 'SEAICEdiffKhSnow =', ' /* diffusivity (m^2/s) for snow */') |
290 |
|
IF ( SEAICEadvSalt ) |
291 |
|
&CALL WRITE_0D_RL( SEAICEdiffKhSalt, INDEX_NONE, |
292 |
|
& 'SEAICEdiffKhSalt =', ' /* diffusivity (m^2/s) for salt */') |
293 |
|
CALL WRITE_0D_RL( DIFF1, INDEX_NONE, 'DIFF1 =', |
294 |
|
& ' /* parameter used in advect.F [m/s] */') |
295 |
|
|
296 |
|
C end if useThSIce bloc |
297 |
|
ENDIF |
298 |
|
|
299 |
|
|
300 |
|
C-- Thermodynamics parameters |
301 |
|
WRITE(msgBuf,'(A)') ' ' |
302 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
303 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
304 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
305 |
&' Seaice thermodynamics configuration > START < ' |
&' Seaice thermodynamics configuration > START < ' |
306 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
307 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
308 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
309 |
&' -----------------------------------------------' |
&' -----------------------------------------------' |
310 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
311 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
312 |
C- note: air and seaice (+ snow ?) density are used in both dynamics & thermo |
C- note: air and seaice (+ snow ?) density are used in both dynamics & thermo |
313 |
CALL WRITE_0D_RL( SEAICE_rhoIce ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_rhoIce ,INDEX_NONE, |
314 |
& 'SEAICE_rhoIce =', ' /* density of sea ice (kg/m3) */') |
& 'SEAICE_rhoIce =', ' /* density of sea ice (kg/m3) */') |
322 |
IF (.NOT.usePW79thermodynamics) THEN |
IF (.NOT.usePW79thermodynamics) THEN |
323 |
WRITE(msgBuf,'(A)') ' pkg/seaice thermodynamics is OFF ' |
WRITE(msgBuf,'(A)') ' pkg/seaice thermodynamics is OFF ' |
324 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
325 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
326 |
ELSE |
ELSE |
327 |
|
|
328 |
CALL WRITE_0D_RL( SEAICE_lhEvap ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_lhEvap ,INDEX_NONE, |
392 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
393 |
&' Sea ice has a variable salinity such that ' |
&' Sea ice has a variable salinity such that ' |
394 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
395 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
396 |
CALL WRITE_0D_RL( SEAICE_saltFrac, INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_saltFrac, INDEX_NONE, |
397 |
& 'SEAICE_saltFrac =', |
& 'SEAICE_saltFrac =', |
398 |
& ' /* fraction of ocn salinity in new ice */') |
& ' /* fraction of ocn salinity in new ice */') |
404 |
& 'SEAICE_salinityTracer =', ' /* test SITR varia. salinity */') |
& 'SEAICE_salinityTracer =', ' /* test SITR varia. salinity */') |
405 |
CALL WRITE_0D_L ( SEAICEuseFlooding, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICEuseFlooding, INDEX_NONE, |
406 |
& 'SEAICEuseFlooding =', ' /* turn submerged snow into ice */') |
& 'SEAICEuseFlooding =', ' /* turn submerged snow into ice */') |
|
#ifndef SEAICE_CAP_HEFF |
|
|
WRITE(msgBuf,'(A,A)') |
|
|
& 'MAX_HEFF has no effect because SEAICE_CAP_HEFF is undefined' |
|
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
|
|
& SQUEEZE_RIGHT , myThid) |
|
|
#endif /* SEAICE_CAP_HEFF */ |
|
|
CALL WRITE_0D_RL( MAX_HEFF ,INDEX_NONE, |
|
|
& 'MAX_HEFF =', ' /* maximum ice thickness */') |
|
|
|
|
|
WRITE(msgBuf,'(A)') |
|
|
&' ' |
|
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
|
|
& SQUEEZE_RIGHT , myThid) |
|
|
WRITE(msgBuf,'(A)') |
|
|
&' Seaice advection diffusion config, > START < ' |
|
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
|
|
& SQUEEZE_RIGHT , myThid) |
|
|
WRITE(msgBuf,'(A)') |
|
|
&' -----------------------------------------------' |
|
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
|
|
& SQUEEZE_RIGHT , myThid) |
|
|
|
|
|
CALL WRITE_0D_L ( SEAICEadvHeff, INDEX_NONE, |
|
|
& 'SEAICEadvHeff =', ' /* advect effective ice thickness */') |
|
|
CALL WRITE_0D_L ( SEAICEadvArea, INDEX_NONE, |
|
|
& 'SEAICEadvArea =', ' /* advect fractional ice area */') |
|
|
CALL WRITE_0D_L ( SEAICEadvSnow, INDEX_NONE, |
|
|
& 'SEAICEadvSnow =', ' /* advect snow layer together with ice */') |
|
|
#ifdef SEAICE_VARIABLE_SALINITY |
|
|
CALL WRITE_0D_L ( SEAICEadvSalt, INDEX_NONE, |
|
|
& 'SEAICEadvSalt =', ' /* advect salinity together with ice */') |
|
|
#endif |
|
|
CALL WRITE_0D_I ( SEAICEadvScheme, INDEX_NONE, |
|
|
& 'SEAICEadvScheme =', ' /* advection scheme for ice */') |
|
|
IF ( SEAICEadvScheme .EQ. 2 ) |
|
|
& CALL WRITE_0D_L ( SEAICEuseFluxForm, INDEX_NONE, |
|
|
& 'SEAICEuseFluxForm =', ' /* advection in FV flux form */') |
|
|
IF ( SEAICEadvArea ) |
|
|
&CALL WRITE_0D_I ( SEAICEadvSchArea, INDEX_NONE, |
|
|
& 'SEAICEadvSchArea =', ' /* advection scheme for area */') |
|
|
IF ( SEAICEadvHeff ) |
|
|
&CALL WRITE_0D_I ( SEAICEadvSchHeff, INDEX_NONE, |
|
|
& 'SEAICEadvSchHeff =', ' /* advection scheme for thickness */') |
|
|
IF ( SEAICEadvSnow ) |
|
|
&CALL WRITE_0D_I ( SEAICEadvSchSnow, INDEX_NONE, |
|
|
& 'SEAICEadvSchSnow =', ' /* advection scheme for snow */') |
|
|
#ifdef SEAICE_VARIABLE_SALINITY |
|
|
IF ( SEAICEadvSalt ) |
|
|
&CALL WRITE_0D_I ( SEAICEadvSchSalt, INDEX_NONE, |
|
|
& 'SEAICEadvSchSalt =', ' /* advection scheme for salt */') |
|
|
#endif |
|
|
CALL WRITE_0D_RL( SEAICEdiffKhArea, INDEX_NONE, |
|
|
& 'SEAICEdiffKhArea =', ' /* diffusivity (m^2/s) for area */') |
|
|
CALL WRITE_0D_RL( SEAICEdiffKhHeff, INDEX_NONE, |
|
|
& 'SEAICEdiffKhHeff =', ' /* diffusivity (m^2/s) for heff */') |
|
|
CALL WRITE_0D_RL( SEAICEdiffKhSnow, INDEX_NONE, |
|
|
& 'SEAICEdiffKhSnow =', ' /* diffusivity (m^2/s) for snow */') |
|
|
IF ( SEAICEadvSalt ) |
|
|
&CALL WRITE_0D_RL( SEAICEdiffKhSalt, INDEX_NONE, |
|
|
& 'SEAICEdiffKhSalt =', ' /* diffusivity (m^2/s) for salt */') |
|
|
CALL WRITE_0D_RL( DIFF1, INDEX_NONE, 'DIFF1 =', |
|
|
& ' /* parameter used in advect.F [m/s] */') |
|
407 |
|
|
408 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') ' ' |
|
&' ' |
|
409 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
410 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
411 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
412 |
&' Seaice air-sea fluxes configuration, > START < ' |
&' Seaice air-sea fluxes configuration, > START < ' |
413 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
414 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
415 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
416 |
&' -----------------------------------------------' |
&' -----------------------------------------------' |
417 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
418 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
419 |
|
|
420 |
CALL WRITE_0D_L ( SEAICEheatConsFix, INDEX_NONE, |
CALL WRITE_0D_L ( SEAICEheatConsFix, INDEX_NONE, |
421 |
& 'SEAICEheatConsFix =', |
& 'SEAICEheatConsFix =', |
422 |
& ' /* accound for ocn<->seaice advect. heat flux */') |
& ' /* accound for ocn<->seaice advect. heat flux */') |
|
CToM<<< |
|
423 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
424 |
CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'nITD =' |
CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'nITD =' |
425 |
& , ' /* number of ice thickness categories */') |
& , ' /* number of ice thickness categories */') |
426 |
#else |
#else |
|
CToM>>> |
|
427 |
CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'SEAICE_multDim =' |
CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'SEAICE_multDim =' |
428 |
& , ' /* number of ice categories (1 or 7) */') |
& , ' /* number of ice categories (1 or 7) */') |
|
CToM<<< |
|
429 |
#endif |
#endif |
|
CToM>>> |
|
430 |
CALL WRITE_0D_I ( IMAX_TICE, INDEX_NONE, |
CALL WRITE_0D_I ( IMAX_TICE, INDEX_NONE, |
431 |
& 'IMAX_TICE =', ' /* iterations for ice surface temp */') |
& 'IMAX_TICE =', ' /* iterations for ice surface temp */') |
432 |
CALL WRITE_0D_I ( postSolvTempIter, INDEX_NONE, |
CALL WRITE_0D_I ( postSolvTempIter, INDEX_NONE, |
487 |
C end if usePW79thermodynamics bloc |
C end if usePW79thermodynamics bloc |
488 |
ENDIF |
ENDIF |
489 |
|
|
490 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') ' ' |
|
&' ' |
|
491 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
492 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
493 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
494 |
&' Seaice initialization and IO config., > START < ' |
&' Seaice initialization and IO config., > START < ' |
495 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
496 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
497 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
498 |
&' -------------------------------------------------' |
&' -------------------------------------------------' |
499 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
500 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
501 |
|
|
502 |
C-- Initial Condition/Input related param. |
C-- Initial Condition/Input related param. |
503 |
CALL WRITE_0D_RL( SEAICE_initialHEFF,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_initialHEFF,INDEX_NONE, |
550 |
WRITE(msgBuf,'(A,I3,A)') '== SItracer no. ',iTracer, |
WRITE(msgBuf,'(A,I3,A)') '== SItracer no. ',iTracer, |
551 |
&' is in use and defined as' |
&' is in use and defined as' |
552 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
553 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
554 |
CALL WRITE_0D_C ( SItrMate(iTracer), -1, INDEX_NONE, |
CALL WRITE_0D_C ( SItrMate(iTracer), -1, INDEX_NONE, |
555 |
& ' -- SItrMate =',' /* tracer of HEFF or AREA */') |
& ' -- SItrMate =',' /* tracer of HEFF or AREA */') |
556 |
CALL WRITE_0D_C ( SItrName(iTracer), -1, INDEX_NONE, |
CALL WRITE_0D_C ( SItrName(iTracer), -1, INDEX_NONE, |
576 |
ENDDO |
ENDDO |
577 |
#endif /* ALLOW_SITRACER */ |
#endif /* ALLOW_SITRACER */ |
578 |
|
|
579 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') ' ' |
|
&' ' |
|
580 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
581 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
582 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
583 |
&' Seaice regularization numbers, > START < ' |
&' Seaice regularization numbers, > START < ' |
584 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
585 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
586 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
587 |
&' -----------------------------------------------' |
&' -----------------------------------------------' |
588 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
589 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
590 |
|
|
591 |
CALL WRITE_0D_RL( SEAICE_EPS ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_EPS ,INDEX_NONE, |
592 |
& 'SEAICE_EPS =', ' /* reduce derivative singularities */') |
& 'SEAICE_EPS =', ' /* reduce derivative singularities */') |
599 |
CALL WRITE_0D_RL( SEAICE_area_floor ,INDEX_NONE, |
CALL WRITE_0D_RL( SEAICE_area_floor ,INDEX_NONE, |
600 |
& 'SEAICE_area_floor =', ' /* reduce derivative singularities */') |
& 'SEAICE_area_floor =', ' /* reduce derivative singularities */') |
601 |
|
|
602 |
|
WRITE(msgBuf,'(A)') ' ' |
603 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
604 |
|
& SQUEEZE_RIGHT, myThid ) |
605 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
606 |
&'// =======================================================' |
&'// =======================================================' |
607 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
608 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
609 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
610 |
&'// Seaice configuration (SEAICE_PARM01) >>> END <<<' |
&'// Seaice configuration (SEAICE_PARM01) >>> END <<<' |
611 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
612 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
613 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
614 |
&'// =======================================================' |
&'// =======================================================' |
615 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
616 |
& SQUEEZE_RIGHT , myThid) |
& SQUEEZE_RIGHT, myThid ) |
617 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') ' ' |
618 |
|
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
619 |
|
& SQUEEZE_RIGHT, myThid ) |
620 |
|
|
621 |
_END_MASTER(myThid) |
_END_MASTER(myThid) |
622 |
|
|