/[MITgcm]/MITgcm_contrib/torge/itd/code/seaice_summary.F
ViewVC logotype

Contents of /MITgcm_contrib/torge/itd/code/seaice_summary.F

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


Revision 1.5 - (show annotations) (download)
Wed Mar 27 18:59:53 2013 UTC (12 years, 4 months ago) by torge
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +39 -12 lines
updating my MITgcm_contrib directory to include latest changes on main branch;
settings are to run a 1D test szenario with ITD code and 7 categories

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_summary.F,v 1.66 2013/02/28 16:21:40 mlosch Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SEAICE_SUMMARY
8 SUBROUTINE SEAICE_SUMMARY( myThid )
9
10 C !DESCRIPTION:
11 C *==========================================================*
12 C | SUBROUTINE SEAICE_SUMMARY
13 C | o Summarize pkg/seaice parameters.
14 C *==========================================================*
15
16 C !USES:
17 IMPLICIT NONE
18 C == global variables ==
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "SEAICE_SIZE.h"
23 #include "SEAICE_PARAMS.h"
24 #ifdef ALLOW_SITRACER
25 # include "SEAICE_TRACER.h"
26 #endif
27
28 C !INPUT PARAMETERS:
29 C == routine arguments ==
30 C myThid :: my Thread Id. number
31 INTEGER myThid
32 CEOP
33
34 C !LOCAL VARIABLES:
35 C == local variables ==
36 C msgBuf :: Informational/error message buffer
37 CHARACTER*(MAX_LEN_MBUF) msgBuf
38 INTEGER buffI(1)
39 CHARACTER*10 endList
40 INTEGER ioUnit
41 #ifdef ALLOW_SITRACER
42 INTEGER iTracer
43 #endif
44
45 C == end of interface ==
46
47 _BARRIER
48 _BEGIN_MASTER(myThid)
49
50 endList = ' ; '
51 ioUnit = standardMessageUnit
52
53 WRITE(msgBuf,'(A)')
54 &'// ======================================================='
55 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
56 & SQUEEZE_RIGHT, myThid )
57 WRITE(msgBuf,'(A)')
58 &'// Seaice configuration (SEAICE_PARM01) >>> START <<<'
59 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
60 & SQUEEZE_RIGHT, myThid )
61 WRITE(msgBuf,'(A)')
62 &'// ======================================================='
63 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
64 & SQUEEZE_RIGHT, myThid )
65
66 C-- Time-stepping related param.
67
68 WRITE(msgBuf,'(A)') ' '
69 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
70 & SQUEEZE_RIGHT, myThid )
71 WRITE(msgBuf,'(A)')
72 &' Seaice time stepping configuration > START < '
73 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
74 & SQUEEZE_RIGHT, myThid )
75 WRITE(msgBuf,'(A)')
76 &' ----------------------------------------------'
77 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
78 & SQUEEZE_RIGHT, myThid )
79
80 CALL WRITE_0D_RL( SEAICE_deltaTtherm,INDEX_NONE,
81 & 'SEAICE_deltaTtherm=', ' /* thermodynamic timestep */')
82 CALL WRITE_0D_RL( SEAICE_deltaTdyn ,INDEX_NONE,
83 & 'SEAICE_deltaTdyn =', ' /* dynamic timestep */')
84 #ifdef SEAICE_ALLOW_EVP
85 CALL WRITE_0D_RL( SEAICE_deltaTevp ,INDEX_NONE,
86 & 'SEAICE_deltaTevp =', ' /* EVP timestep */')
87 #endif
88 CALL WRITE_0D_L ( SEAICErestoreUnderIce, INDEX_NONE,
89 & 'SEAICErestoreUnderIce =', ' /* restore T and S under ice */')
90
91 WRITE(msgBuf,'(A)') ' '
92 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
93 & SQUEEZE_RIGHT, myThid )
94 WRITE(msgBuf,'(A)')
95 &' Seaice dynamics configuration > START < '
96 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
97 & SQUEEZE_RIGHT, myThid )
98 WRITE(msgBuf,'(A)')
99 &' ------------------------------------------'
100 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
101 & SQUEEZE_RIGHT, myThid )
102
103 C-- Seaice-Dynamics parameters
104 CALL WRITE_0D_L ( SEAICEuseDYNAMICS, INDEX_NONE,
105 & 'SEAICEuseDYNAMICS =', ' /* use dynamics */')
106
107 IF (.NOT.SEAICEuseDYNAMICS) THEN
108 WRITE(msgBuf,'(A)') ' pkg/seaice dynamics is OFF '
109 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
110 & SQUEEZE_RIGHT, myThid )
111 ELSE
112
113 #ifdef SEAICE_CGRID
114 CALL WRITE_0D_C( 'C-GRID', -1, INDEX_NONE,
115 & 'model grid type =', ' /* type of sea ice model grid */')
116 #else /* not SEAICE_CGRID */
117 CALL WRITE_0D_C( 'B-GRID', -1, INDEX_NONE,
118 & 'model grid type =', ' /* type of sea ice model grid */')
119 #endif /* SEAICE_CGRID */
120 CALL WRITE_0D_L ( SEAICEuseEVP, INDEX_NONE,
121 & 'SEAICEuseEVP =', ' /* use EVP solver rather than LSR */')
122 #ifdef SEAICE_ALLOW_FREEDRIFT
123 CALL WRITE_0D_L ( SEAICEuseFREEDRIFT, INDEX_NONE,
124 & 'SEAICEuseFREEDRIFT =', ' /* use free drift solution */')
125 #endif /* SEAICE_ALLOW_FREEDRIFT */
126 CALL WRITE_0D_RL( OCEAN_drag ,INDEX_NONE,
127 & 'OCEAN_drag =', ' /* air-ocean drag coefficient */')
128 CALL WRITE_0D_RL( SEAICE_drag ,INDEX_NONE,
129 & 'SEAICE_drag =', ' /* air-ice drag coefficient */')
130 CALL WRITE_0D_RL( SEAICE_drag_south ,INDEX_NONE,
131 & 'SEAICE_drag_south =', ' /* Southern Ocean SEAICE_drag */')
132 CALL WRITE_0D_RL( SEAICE_waterDrag ,INDEX_NONE,
133 & 'SEAICE_waterDrag =', ' /* water-ice drag * density */')
134 CALL WRITE_0D_RL( SEAICE_waterDrag_south ,INDEX_NONE,
135 & 'SEAICE_waterDrag_south =', ' /* Southern Ocean waterDrag */')
136 CALL WRITE_0D_L ( SEAICEuseTilt, INDEX_NONE,
137 & 'SEAICEuseTilt =', ' /* include surface tilt in dyna. */')
138 CALL WRITE_0D_L ( SEAICEuseTEM, INDEX_NONE,
139 & 'SEAICEuseTEM =', ' /* use truncated ellipse rheology */')
140 CALL WRITE_0D_RL( SEAICE_strength ,INDEX_NONE,
141 & 'SEAICE_strength =', ' /* sea-ice strength Pstar */')
142 CALL WRITE_0D_RL( SEAICEpresH0 ,INDEX_NONE,
143 & 'SEAICEpresH0 =', ' /* sea-ice strength Heff threshold */')
144 CALL WRITE_0D_I ( SEAICEpresPow0, INDEX_NONE,
145 & 'SEAICEpresPow0 =', ' /* exponent for Heff<SEAICEpresH0 */')
146 CALL WRITE_0D_I ( SEAICEpresPow1, INDEX_NONE,
147 & '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,
151 & 'SEAICE_zetaMin =', ' /* lower bound for viscosity */')
152 CALL WRITE_0D_RL( SEAICE_eccen,INDEX_NONE,'SEAICE_eccen =',
153 & ' /* elliptical yield curve eccent */')
154 CALL WRITE_0D_RL( SEAICEstressFactor,INDEX_NONE,
155 & 'SEAICEstressFactor =',' /* wind stress scaling factor */')
156 CALL WRITE_0D_RL( SEAICE_airTurnAngle,INDEX_NONE,
157 & 'SEAICE_airTurnAngle =',' /* air-ice turning angle */')
158 CALL WRITE_0D_RL( SEAICE_waterTurnAngle,INDEX_NONE,
159 & 'SEAICE_waterTurnAngle =',' /* ice-water turning angle */')
160 CALL WRITE_0D_L ( SEAICEuseMetricTerms, INDEX_NONE,
161 & 'SEAICEuseMetricTerms =', ' /* use metric terms */')
162 CALL WRITE_0D_L ( SEAICE_no_slip, INDEX_NONE,
163 & 'SEAICE_no_slip =', ' /* no slip boundary conditions */')
164 CALL WRITE_0D_L ( SEAICE_clipVelocities, INDEX_NONE,
165 & 'SEAICE_clipVeloctities =', ' /* impose max. vels. */')
166 CALL WRITE_0D_L ( useHB87stressCoupling, INDEX_NONE,
167 & 'useHB87stressCoupling =', ' /* altern. ice-ocean stress */')
168 CALL WRITE_0D_L ( SEAICE_maskRHS, INDEX_NONE,
169 & 'SEAICE_maskRHS =', ' /* mask RHS of solver */')
170 IF (.NOT.SEAICEuseEVP) THEN
171 CALL WRITE_0D_I ( LSR_mixIniGuess, INDEX_NONE,
172 & 'LSR_mixIniGuess =',
173 & ' /* mix free-drift sol. into LSR initial Guess */')
174 CALL WRITE_0D_I ( SOLV_MAX_ITERS, INDEX_NONE,
175 & '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,
181 & 'LSR_ERROR =', ' /* sets accuracy of LSR solver */')
182 CALL WRITE_0D_I ( SOLV_NCHECK, INDEX_NONE,
183 & 'SOLV_NCHECK =', ' /* test interval for LSR solver */')
184 CALL WRITE_0D_I ( NPSEUDOTIMESTEPS, INDEX_NONE,
185 & '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
214 ELSE
215 CALL WRITE_0D_RL( SEAICE_elasticParm ,INDEX_NONE,
216 & 'SEAICE_elasticParm=', ' /* EVP elastic parameter */')
217 CALL WRITE_0D_RL( SEAICE_evpTauRelax ,INDEX_NONE,
218 & 'SEAICE_evpTauRelax=', ' /* EVP relaxation timescale */')
219 CALL WRITE_0D_RL( SEAICE_evpDampC ,INDEX_NONE,
220 & 'SEAICE_evpDampC =', ' /* EVP damping parameter */')
221 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*/')
231 #endif /* SEAICE_ALLOW_EVP */
232 ENDIF
233
234 C end if SEAICEuseDYNAMICS bloc
235 ENDIF
236
237 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)')
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,
303 & SQUEEZE_RIGHT, myThid )
304 WRITE(msgBuf,'(A)')
305 &' Seaice thermodynamics configuration > START < '
306 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
307 & SQUEEZE_RIGHT, myThid )
308 WRITE(msgBuf,'(A)')
309 &' -----------------------------------------------'
310 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
311 & SQUEEZE_RIGHT, myThid )
312 C- note: air and seaice (+ snow ?) density are used in both dynamics & thermo
313 CALL WRITE_0D_RL( SEAICE_rhoIce ,INDEX_NONE,
314 & 'SEAICE_rhoIce =', ' /* density of sea ice (kg/m3) */')
315 CALL WRITE_0D_RL( SEAICE_rhoSnow ,INDEX_NONE,
316 & 'SEAICE_rhoSnow =', ' /* density of snow (kg/m3) */')
317 CALL WRITE_0D_RL( SEAICE_rhoAir ,INDEX_NONE,
318 & 'SEAICE_rhoAir =', ' /* density of air (kg/m3) */')
319
320 CALL WRITE_0D_L ( usePW79thermodynamics, INDEX_NONE,
321 & 'usePW79thermodynamics =', ' /* default 0-layer TD */')
322 IF (.NOT.usePW79thermodynamics) THEN
323 WRITE(msgBuf,'(A)') ' pkg/seaice thermodynamics is OFF '
324 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
325 & SQUEEZE_RIGHT, myThid )
326 ELSE
327
328 CALL WRITE_0D_RL( SEAICE_lhEvap ,INDEX_NONE,
329 & 'SEAICE_lhEvap =', ' /* latent heat of evaporation */')
330 CALL WRITE_0D_RL( SEAICE_lhFusion ,INDEX_NONE,
331 & 'SEAICE_lhFusion =', ' /* latent heat of fusion */')
332 CALL WRITE_0D_RL ( SEAICE_mcPheePiston, INDEX_NONE,
333 & 'SEAICE_mcPheePiston =',
334 & ' /* turbulent flux "piston velocity" a la McPhee (m/s) */')
335 CALL WRITE_0D_RL ( SEAICE_mcPheeTaper, INDEX_NONE,
336 & 'SEAICE_mcPheeTaper =',
337 & ' /* tapering of turbulent flux (0.< <1.) for AREA=1. */')
338 CALL WRITE_0D_L ( SEAICE_mcPheeStepFunc, INDEX_NONE,
339 & 'SEAICE_mcPheeStepFunc =',
340 & ' /* replace linear tapering with step funct. */')
341 CALL WRITE_0D_RL ( SEAICE_frazilFrac, INDEX_NONE,
342 & 'SEAICE_frazilFrac =',
343 & ' /* frazil (T<tempFrz) to seaice conversion rate (0.< <1.) */')
344 CALL WRITE_0D_RL( SEAICE_tempFrz0 ,INDEX_NONE,
345 & 'SEAICE_tempFrz0 =',
346 & ' /* freezing temp. of sea water (intercept) */')
347 CALL WRITE_0D_RL( SEAICE_dTempFrz_dS,INDEX_NONE,
348 & 'SEAICE_dTempFrz_dS=',
349 & ' /* freezing temp. of sea water (slope) */')
350 c print the various values meining for SEAICE_areaGain/LossFormula
351 WRITE(msgBuf,'(2A)') 'SEAICE_areaGainFormula =',
352 & ' /* ice cover gain formula (1,2)*/'
353 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
354 buffI(1) = SEAICE_areaGainFormula
355 CALL PRINT_LIST_I( buffI, 1, 1, INDEX_NONE,
356 & .FALSE., .TRUE., ioUnit )
357 WRITE(msgBuf,'(A)') ' 1=from growth by ATM '
358 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
359 WRITE(msgBuf,'(A)') ' 2=from predicted growth by ATM'
360 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
361 CALL PRINT_MESSAGE(endList, ioUnit, SQUEEZE_RIGHT, myThid )
362 c
363 WRITE(msgBuf,'(2A)') 'SEAICE_areaLossFormula =',
364 & ' /* ice cover loss formula (1,2)*/'
365 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
366 buffI(1) = SEAICE_areaLossFormula
367 CALL PRINT_LIST_I( buffI, 1, 1, INDEX_NONE,
368 & .FALSE., .TRUE., ioUnit )
369 WRITE(msgBuf,'(2A)') ' 1=from all but only melt ',
370 & 'conributions by ATM and OCN'
371 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
372 WRITE(msgBuf,'(A)') ' 2=from net melt-grow>0 by ATM and OCN'
373 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
374 WRITE(msgBuf,'(A)') ' 3=from predicted melt by ATM'
375 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
376 CALL PRINT_MESSAGE(endList, ioUnit, SQUEEZE_RIGHT, myThid )
377 c
378 #ifdef EXF_ALLOW_SEAICE_RELAX
379 CALL WRITE_0D_RL( SEAICE_tauAreaObsRelax,INDEX_NONE,
380 & 'SEAICE_tauAreaObsRelax=',
381 & ' /* relaxation timescale of sea-ice concentration */')
382 #endif
383 c
384 CALL WRITE_0D_RL( HO ,INDEX_NONE,
385 & 'HO =', ' /* nominal thickness of new ice */')
386 CALL WRITE_0D_RL( HO_south ,INDEX_NONE,
387 & 'HO_south =', ' /* Southern Ocean HO */')
388 CALL WRITE_0D_RL( SEAICE_area_max ,INDEX_NONE,
389 & 'SEAICE_area_max =',
390 & ' /* set to les than 1. to mimic open leads */')
391 #ifdef SEAICE_VARIABLE_SALINITY
392 WRITE(msgBuf,'(A)')
393 &' Sea ice has a variable salinity such that '
394 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
395 & SQUEEZE_RIGHT, myThid )
396 CALL WRITE_0D_RL( SEAICE_saltFrac, INDEX_NONE,
397 & 'SEAICE_saltFrac =',
398 & ' /* fraction of ocn salinity in new ice */')
399 #else
400 CALL WRITE_0D_RL( SEAICE_salt0, INDEX_NONE,
401 & 'SEAICE_salt0 =', ' /* constant sea ice salinity */')
402 #endif
403 CALL WRITE_0D_L ( SEAICE_salinityTracer, INDEX_NONE,
404 & 'SEAICE_salinityTracer =', ' /* test SITR varia. salinity */')
405 CALL WRITE_0D_L ( SEAICEuseFlooding, INDEX_NONE,
406 & 'SEAICEuseFlooding =', ' /* turn submerged snow into ice */')
407
408 WRITE(msgBuf,'(A)') ' '
409 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
410 & SQUEEZE_RIGHT, myThid )
411 WRITE(msgBuf,'(A)')
412 &' Seaice air-sea fluxes configuration, > START < '
413 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
414 & SQUEEZE_RIGHT, myThid )
415 WRITE(msgBuf,'(A)')
416 &' -----------------------------------------------'
417 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
418 & SQUEEZE_RIGHT, myThid )
419
420 CALL WRITE_0D_L ( SEAICEheatConsFix, INDEX_NONE,
421 & 'SEAICEheatConsFix =',
422 & ' /* accound for ocn<->seaice advect. heat flux */')
423 #ifdef SEAICE_ITD
424 CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'nITD ='
425 & , ' /* number of ice thickness categories */')
426 #else
427 CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'SEAICE_multDim ='
428 & , ' /* number of ice categories (1 or 7) */')
429 #endif
430 CALL WRITE_0D_I ( IMAX_TICE, INDEX_NONE,
431 & 'IMAX_TICE =', ' /* iterations for ice surface temp */')
432 CALL WRITE_0D_I ( postSolvTempIter, INDEX_NONE,
433 & 'postSolvTempIter=',
434 & ' /* flux calculation after surf. temp iter */')
435 #ifndef SEAICE_EXTERNAL_FLUXES
436 CALL WRITE_0D_RL( SEAICE_waterAlbedo,INDEX_NONE,
437 & 'SEAICE_waterAlbedo=', ' /* water albedo */')
438 CALL WRITE_0D_RL( SEAICE_emissivity, INDEX_NONE,
439 & 'SEAICE_emissivity =', ' /* ocean-surface emissivity */')
440 #endif /* SEAICE_EXTERNAL_FLUXES */
441 CALL WRITE_0D_RL( SEAICE_dryIceAlb ,INDEX_NONE,
442 & 'SEAICE_dryIceAlb =', ' /* winter albedo */')
443 CALL WRITE_0D_RL( SEAICE_wetIceAlb ,INDEX_NONE,
444 & 'SEAICE_wetIceAlb =', ' /* summer albedo */')
445 CALL WRITE_0D_RL( SEAICE_drySnowAlb ,INDEX_NONE,
446 & 'SEAICE_drySnowAlb =', ' /* dry snow albedo */')
447 CALL WRITE_0D_RL( SEAICE_wetSnowAlb ,INDEX_NONE,
448 & 'SEAICE_wetSnowAlb =', ' /* wet snow albedo */')
449 CALL WRITE_0D_RL( SEAICE_dryIceAlb_south ,INDEX_NONE,
450 & 'SEAICE_dryIceAlb_south =', ' /* Southern Ocean dryIceAlb */')
451 CALL WRITE_0D_RL( SEAICE_wetIceAlb_south ,INDEX_NONE,
452 & 'SEAICE_wetIceAlb_south =', ' /* Southern Ocean wetIceAlb */')
453 CALL WRITE_0D_RL( SEAICE_drySnowAlb_south ,INDEX_NONE,
454 & 'SEAICE_drySnowAlb_south=', ' /* Southern Ocean drySnowAlb */')
455 CALL WRITE_0D_RL( SEAICE_wetSnowAlb_south ,INDEX_NONE,
456 & 'SEAICE_wetSnowAlb_south=', ' /* Southern Ocean wetSnowAlb */')
457 CALL WRITE_0D_RL( SEAICE_wetAlbTemp ,INDEX_NONE,
458 & 'SEAICE_wetAlbTemp=',
459 & ' /* Temp (o.C) threshold for wet-albedo */')
460 CALL WRITE_0D_RL( SEAICE_snow_emiss ,INDEX_NONE,
461 & 'SEAICE_snow_emiss =', ' /* snow emissivity */')
462 CALL WRITE_0D_RL( SEAICE_ice_emiss ,INDEX_NONE,
463 & 'SEAICE_ice_emiss =', ' /* seaice emissivity */')
464 CALL WRITE_0D_RL( SEAICE_cpAir ,INDEX_NONE,
465 & 'SEAICE_cpAir =', ' /* heat capacity of air */')
466 CALL WRITE_0D_RL( SEAICE_dalton ,INDEX_NONE,
467 & 'SEAICE_dalton =', ' /* constant dalton number */')
468 CALL WRITE_0D_RL( SEAICE_iceConduct ,INDEX_NONE,
469 & 'SEAICE_iceConduct =', ' /* sea-ice conductivity */')
470 CALL WRITE_0D_RL( SEAICE_snowConduct,INDEX_NONE,
471 & 'SEAICE_snowConduct=', ' /* snow conductivity */')
472 CALL WRITE_0D_RL( SEAICE_snowThick ,INDEX_NONE,
473 & 'SEAICE_snowThick =',
474 & ' /* cutoff snow thickness (for albedo) */')
475 CALL WRITE_0D_RL( SEAICE_shortwave ,INDEX_NONE,
476 & 'SEAICE_shortwave =', ' /* penetration shortwave radiation */')
477 CALL WRITE_0D_L ( useMaykutSatVapPoly, INDEX_NONE,
478 & 'useMaykutSatVapPoly =',
479 & ' /* use Maykut Polynomial for Sat.Vap.Pr */')
480 CALL WRITE_0D_RL( MIN_ATEMP ,INDEX_NONE,
481 & 'MIN_ATEMP =', ' /* minimum air temperature */')
482 CALL WRITE_0D_RL( MIN_LWDOWN ,INDEX_NONE,
483 & 'MIN_LWDOWN =', ' /* minimum downward longwave */')
484 CALL WRITE_0D_RL( MIN_TICE ,INDEX_NONE,
485 & 'MIN_TICE =', ' /* minimum ice temperature */')
486
487 C end if usePW79thermodynamics bloc
488 ENDIF
489
490 WRITE(msgBuf,'(A)') ' '
491 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
492 & SQUEEZE_RIGHT, myThid )
493 WRITE(msgBuf,'(A)')
494 &' Seaice initialization and IO config., > START < '
495 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
496 & SQUEEZE_RIGHT, myThid )
497 WRITE(msgBuf,'(A)')
498 &' -------------------------------------------------'
499 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
500 & SQUEEZE_RIGHT, myThid )
501
502 C-- Initial Condition/Input related param.
503 CALL WRITE_0D_RL( SEAICE_initialHEFF,INDEX_NONE,
504 & 'SEAICE_initialHEFF=', ' /* initial sea-ice thickness */')
505 CALL WRITE_0D_C( AreaFile, -1, INDEX_NONE,
506 & 'AreaFile =', ' /* Initial ice concentration File */')
507 CALL WRITE_0D_C( HeffFile, -1, INDEX_NONE,
508 & 'HeffFile =', ' /* Initial effective ice thickness File */')
509 CALL WRITE_0D_C( HsnowFile, -1, INDEX_NONE,
510 & 'HsnowFile =', ' /* Initial snow thickness File */')
511 #ifdef SEAICE_VARIABLE_SALINITY
512 CALL WRITE_0D_C( HsaltFile, -1, INDEX_NONE,
513 & 'HsaltFile =', ' /* Initial HSALT File */')
514 #endif
515 CALL WRITE_0D_C( uIceFile, -1, INDEX_NONE,
516 & 'uIceFile =', ' /* Initial U-ice velocity File */')
517 CALL WRITE_0D_C( vIceFile, -1, INDEX_NONE,
518 & 'vIceFile =', ' /* Initial V-ice velocity File */')
519
520 C-- Output related param.
521 CALL WRITE_0D_L ( SEAICEwriteState, INDEX_NONE,
522 & 'SEAICEwriteState =', ' /* write sea ice state to file */')
523 CALL WRITE_0D_RL( SEAICE_monFreq, INDEX_NONE,
524 & 'SEAICE_monFreq =',' /* monitor frequency */')
525 CALL WRITE_0D_RL( SEAICE_dumpFreq ,INDEX_NONE,
526 & 'SEAICE_dumpFreq =', ' /* dump frequency */')
527 CALL WRITE_0D_RL( SEAICE_taveFreq ,INDEX_NONE,
528 & 'SEAICE_taveFreq =', ' /* time-averaging frequency */')
529 CALL WRITE_0D_L ( SEAICE_mon_stdio, INDEX_NONE,
530 & 'SEAICE_mon_stdio =',' /* write monitor to std-outp */')
531 CALL WRITE_0D_L ( SEAICE_dump_mdsio, INDEX_NONE,
532 & 'SEAICE_dump_mdsio =',' /* write snap-shot using MDSIO */')
533 CALL WRITE_0D_L ( SEAICE_tave_mdsio, INDEX_NONE,
534 & 'SEAICE_tave_mdsio =',' /* write TimeAverage using MDSIO */')
535 #ifdef ALLOW_MNC
536 CALL WRITE_0D_L ( SEAICE_mon_mnc, INDEX_NONE,
537 & 'SEAICE_mon_mnc =',' /* write monitor to netcdf file */')
538 CALL WRITE_0D_L ( SEAICE_dump_mnc, INDEX_NONE,
539 & 'SEAICE_dump_mnc =',' /* write snap-shot using MNC */')
540 CALL WRITE_0D_L ( SEAICE_tave_mnc, INDEX_NONE,
541 & 'SEAICE_tave_mnc =',' /* write TimeAverage using MNC */')
542 #endif /* ALLOW_MNC */
543
544 #ifdef ALLOW_SITRACER
545 CALL WRITE_0D_I ( SItrNumInUse, INDEX_NONE,
546 & 'SItrNumInUse =',
547 & ' /* number of tracers that are in use (<SItrMaxNum) */')
548 DO iTracer = 1, SItrNumInUse
549 IF (SItrName(iTracer).NE.' ') THEN
550 WRITE(msgBuf,'(A,I3,A)') '== SItracer no. ',iTracer,
551 &' is in use and defined as'
552 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
553 & SQUEEZE_RIGHT, myThid )
554 CALL WRITE_0D_C ( SItrMate(iTracer), -1, INDEX_NONE,
555 & ' -- SItrMate =',' /* tracer of HEFF or AREA */')
556 CALL WRITE_0D_C ( SItrName(iTracer), -1, INDEX_NONE,
557 & ' -- SItrName =',' /* tracer name*/')
558 CALL WRITE_0D_C ( SItrNameLong(iTracer), -1, INDEX_NONE,
559 & ' -- SItrNameLong =',' /* tracer long name*/')
560 CALL WRITE_0D_C ( SItrFile(iTracer), -1, INDEX_NONE,
561 & ' -- SItrFile =',' /* tracer initial condition file */')
562 CALL WRITE_0D_C ( SItrUnit(iTracer), -1, INDEX_NONE,
563 & ' -- SItrUnit =',' /* tracer unit */')
564 CALL WRITE_0D_RL ( SItrFromOcean0(iTracer), INDEX_NONE,
565 & ' -- SItrFromOcean0 =',' /* for new ice from freeze */')
566 CALL WRITE_0D_RL ( SItrFromOceanFrac(iTracer), INDEX_NONE,
567 & ' -- SItrFromOceanFrac =',' /* for new ice from freeze */')
568 CALL WRITE_0D_RL ( SItrFromFlood0(iTracer), INDEX_NONE,
569 & ' -- SItrFromFlood0 =',' /* for new ice from freeze */')
570 CALL WRITE_0D_RL ( SItrFromFloodFrac(iTracer), INDEX_NONE,
571 & ' -- SItrFromFloodFrac =',' /* for new ice from freeze */')
572 CALL WRITE_0D_RL ( SItrExpand0(iTracer), INDEX_NONE,
573 & ' -- SItrExpand0 =',' /* for ice cover thermo. expans. */')
574
575 ENDIF
576 ENDDO
577 #endif /* ALLOW_SITRACER */
578
579 WRITE(msgBuf,'(A)') ' '
580 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
581 & SQUEEZE_RIGHT, myThid )
582 WRITE(msgBuf,'(A)')
583 &' Seaice regularization numbers, > START < '
584 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
585 & SQUEEZE_RIGHT, myThid )
586 WRITE(msgBuf,'(A)')
587 &' -----------------------------------------------'
588 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
589 & SQUEEZE_RIGHT, myThid )
590
591 CALL WRITE_0D_RL( SEAICE_EPS ,INDEX_NONE,
592 & 'SEAICE_EPS =', ' /* reduce derivative singularities */')
593 CALL WRITE_0D_RL( SEAICE_EPS_SQ ,INDEX_NONE,
594 & 'SEAICE_EPS_SQ =', ' /* reduce derivative singularities */')
595 CALL WRITE_0D_RL( SEAICE_area_reg ,INDEX_NONE,
596 & 'SEAICE_area_reg =', ' /* reduce derivative singularities */')
597 CALL WRITE_0D_RL( SEAICE_hice_reg ,INDEX_NONE,
598 & 'SEAICE_hice_reg =', ' /* reduce derivative singularities */')
599 CALL WRITE_0D_RL( SEAICE_area_floor ,INDEX_NONE,
600 & '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)')
606 &'// ======================================================='
607 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
608 & SQUEEZE_RIGHT, myThid )
609 WRITE(msgBuf,'(A)')
610 &'// Seaice configuration (SEAICE_PARM01) >>> END <<<'
611 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
612 & SQUEEZE_RIGHT, myThid )
613 WRITE(msgBuf,'(A)')
614 &'// ======================================================='
615 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
616 & SQUEEZE_RIGHT, myThid )
617 WRITE(msgBuf,'(A)') ' '
618 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
619 & SQUEEZE_RIGHT, myThid )
620
621 _END_MASTER(myThid)
622
623 RETURN
624 END

  ViewVC Help
Powered by ViewVC 1.1.22