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

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

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


Revision 1.4 - (hide annotations) (download)
Mon Dec 10 22:19:50 2012 UTC (12 years, 7 months ago) by torge
Branch: MAIN
Changes since 1.3: +112 -109 lines
include updates from main branch

1 torge 1.4 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_summary.F,v 1.57 2012/11/16 22:52:56 jmc Exp $
2 dimitri 1.1 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 torge 1.4 #include "PARAMS.h"
22 dimitri 1.1 #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 torge 1.4 & SQUEEZE_RIGHT, myThid )
57 dimitri 1.1 WRITE(msgBuf,'(A)')
58     &'// Seaice configuration (SEAICE_PARM01) >>> START <<<'
59     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
60 torge 1.4 & SQUEEZE_RIGHT, myThid )
61 dimitri 1.1 WRITE(msgBuf,'(A)')
62     &'// ======================================================='
63     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
64 torge 1.4 & SQUEEZE_RIGHT, myThid )
65 dimitri 1.1
66     C-- Time-stepping related param.
67    
68 torge 1.4 WRITE(msgBuf,'(A)') ' '
69 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
70 torge 1.4 & SQUEEZE_RIGHT, myThid )
71 dimitri 1.1 WRITE(msgBuf,'(A)')
72     &' Seaice time stepping configuration > START < '
73     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
74 torge 1.4 & SQUEEZE_RIGHT, myThid )
75 dimitri 1.1 WRITE(msgBuf,'(A)')
76     &' ----------------------------------------------'
77     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
78 torge 1.4 & SQUEEZE_RIGHT, myThid )
79 dimitri 1.1
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 torge 1.4 WRITE(msgBuf,'(A)') ' '
92 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
93 torge 1.4 & SQUEEZE_RIGHT, myThid )
94 dimitri 1.1 WRITE(msgBuf,'(A)')
95     &' Seaice dynamics configuration > START < '
96     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
97 torge 1.4 & SQUEEZE_RIGHT, myThid )
98 dimitri 1.1 WRITE(msgBuf,'(A)')
99     &' ------------------------------------------'
100     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
101 torge 1.4 & SQUEEZE_RIGHT, myThid )
102 dimitri 1.1
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 torge 1.4 & SQUEEZE_RIGHT, myThid )
111 dimitri 1.1 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 heimbach 1.3 CALL WRITE_0D_L ( SEAICEuseTILT, INDEX_NONE,
137     & 'SEAICEuseTILT =', ' /* include surface tilt in dyna. */')
138 dimitri 1.1 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 heimbach 1.3 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 torge 1.4 CALL WRITE_0D_I ( SEAICEetaZmethod, INDEX_NONE,
149     & 'SEAICEetaZmethod =', ' /* method computing eta at Z-point */')
150 dimitri 1.1 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 torge 1.4 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 dimitri 1.1 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     #ifdef SEAICE_ALLOW_EVP
187     ELSE
188     CALL WRITE_0D_RL( SEAICE_elasticParm ,INDEX_NONE,
189     & 'SEAICE_elasticParm=', ' /* EVP elastic parameter */')
190     CALL WRITE_0D_RL( SEAICE_evpTauRelax ,INDEX_NONE,
191     & 'SEAICE_evpTauRelax=', ' /* EVP relaxation timescale */')
192     CALL WRITE_0D_RL( SEAICE_evpDampC ,INDEX_NONE,
193     & 'SEAICE_evpDampC =', ' /* EVP damping parameter */')
194     CALL WRITE_0D_L ( SEAICEuseEVPpickup, INDEX_NONE,
195     & 'SEAICEuseEVPpickup=', ' /* start EVP solver with EVP pickup*/')
196     #endif /* SEAICE_ALLOW_EVP */
197     ENDIF
198    
199     C end if SEAICEuseDYNAMICS bloc
200     ENDIF
201    
202 torge 1.4 WRITE(msgBuf,'(A)') ' '
203     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
204     & SQUEEZE_RIGHT, myThid )
205     WRITE(msgBuf,'(A)')
206     &' Seaice advection diffusion config, > START < '
207     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
208     & SQUEEZE_RIGHT, myThid )
209     WRITE(msgBuf,'(A)')
210     &' -----------------------------------------------'
211     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
212     & SQUEEZE_RIGHT, myThid )
213     IF ( useThSIce ) THEN
214     WRITE(msgBuf,'(A)')
215     &' ==> advection diffusion done in pkg ThSIce'
216     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
217     & SQUEEZE_RIGHT, myThid )
218     ELSE
219    
220     CALL WRITE_0D_L ( SEAICEadvHeff, INDEX_NONE,
221     & 'SEAICEadvHeff =', ' /* advect effective ice thickness */')
222     CALL WRITE_0D_L ( SEAICEadvArea, INDEX_NONE,
223     & 'SEAICEadvArea =', ' /* advect fractional ice area */')
224     CALL WRITE_0D_L ( SEAICEadvSnow, INDEX_NONE,
225     & 'SEAICEadvSnow =', ' /* advect snow layer together with ice */')
226     #ifdef SEAICE_VARIABLE_SALINITY
227     CALL WRITE_0D_L ( SEAICEadvSalt, INDEX_NONE,
228     & 'SEAICEadvSalt =', ' /* advect salinity together with ice */')
229     #endif
230     CALL WRITE_0D_I ( SEAICEadvScheme, INDEX_NONE,
231     & 'SEAICEadvScheme =', ' /* advection scheme for ice */')
232     IF ( SEAICEadvScheme .EQ. 2 )
233     & CALL WRITE_0D_L ( SEAICEuseFluxForm, INDEX_NONE,
234     & 'SEAICEuseFluxForm =', ' /* advection in FV flux form */')
235     IF ( SEAICEadvArea )
236     &CALL WRITE_0D_I ( SEAICEadvSchArea, INDEX_NONE,
237     & 'SEAICEadvSchArea =', ' /* advection scheme for area */')
238     IF ( SEAICEadvHeff )
239     &CALL WRITE_0D_I ( SEAICEadvSchHeff, INDEX_NONE,
240     & 'SEAICEadvSchHeff =', ' /* advection scheme for thickness */')
241     IF ( SEAICEadvSnow )
242     &CALL WRITE_0D_I ( SEAICEadvSchSnow, INDEX_NONE,
243     & 'SEAICEadvSchSnow =', ' /* advection scheme for snow */')
244     #ifdef SEAICE_VARIABLE_SALINITY
245     IF ( SEAICEadvSalt )
246     &CALL WRITE_0D_I ( SEAICEadvSchSalt, INDEX_NONE,
247     & 'SEAICEadvSchSalt =', ' /* advection scheme for salt */')
248     #endif
249     CALL WRITE_0D_RL( SEAICEdiffKhArea, INDEX_NONE,
250     & 'SEAICEdiffKhArea =', ' /* diffusivity (m^2/s) for area */')
251     CALL WRITE_0D_RL( SEAICEdiffKhHeff, INDEX_NONE,
252     & 'SEAICEdiffKhHeff =', ' /* diffusivity (m^2/s) for heff */')
253     CALL WRITE_0D_RL( SEAICEdiffKhSnow, INDEX_NONE,
254     & 'SEAICEdiffKhSnow =', ' /* diffusivity (m^2/s) for snow */')
255     IF ( SEAICEadvSalt )
256     &CALL WRITE_0D_RL( SEAICEdiffKhSalt, INDEX_NONE,
257     & 'SEAICEdiffKhSalt =', ' /* diffusivity (m^2/s) for salt */')
258     CALL WRITE_0D_RL( DIFF1, INDEX_NONE, 'DIFF1 =',
259     & ' /* parameter used in advect.F [m/s] */')
260    
261     C end if useThSIce bloc
262     ENDIF
263    
264    
265 dimitri 1.1 C-- Thermodynamics parameters
266 torge 1.4 WRITE(msgBuf,'(A)') ' '
267 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
268 torge 1.4 & SQUEEZE_RIGHT, myThid )
269 dimitri 1.1 WRITE(msgBuf,'(A)')
270     &' Seaice thermodynamics configuration > START < '
271     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
272 torge 1.4 & SQUEEZE_RIGHT, myThid )
273 dimitri 1.1 WRITE(msgBuf,'(A)')
274     &' -----------------------------------------------'
275     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
276 torge 1.4 & SQUEEZE_RIGHT, myThid )
277 dimitri 1.1 C- note: air and seaice (+ snow ?) density are used in both dynamics & thermo
278     CALL WRITE_0D_RL( SEAICE_rhoIce ,INDEX_NONE,
279     & 'SEAICE_rhoIce =', ' /* density of sea ice (kg/m3) */')
280     CALL WRITE_0D_RL( SEAICE_rhoSnow ,INDEX_NONE,
281     & 'SEAICE_rhoSnow =', ' /* density of snow (kg/m3) */')
282     CALL WRITE_0D_RL( SEAICE_rhoAir ,INDEX_NONE,
283     & 'SEAICE_rhoAir =', ' /* density of air (kg/m3) */')
284    
285     CALL WRITE_0D_L ( usePW79thermodynamics, INDEX_NONE,
286     & 'usePW79thermodynamics =', ' /* default 0-layer TD */')
287     IF (.NOT.usePW79thermodynamics) THEN
288     WRITE(msgBuf,'(A)') ' pkg/seaice thermodynamics is OFF '
289     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
290 torge 1.4 & SQUEEZE_RIGHT, myThid )
291 dimitri 1.1 ELSE
292    
293     CALL WRITE_0D_RL( SEAICE_lhEvap ,INDEX_NONE,
294     & 'SEAICE_lhEvap =', ' /* latent heat of evaporation */')
295     CALL WRITE_0D_RL( SEAICE_lhFusion ,INDEX_NONE,
296     & 'SEAICE_lhFusion =', ' /* latent heat of fusion */')
297     CALL WRITE_0D_RL ( SEAICE_mcPheePiston, INDEX_NONE,
298     & 'SEAICE_mcPheePiston =',
299     & ' /* turbulent flux "piston velocity" a la McPhee (m/s) */')
300     CALL WRITE_0D_RL ( SEAICE_mcPheeTaper, INDEX_NONE,
301     & 'SEAICE_mcPheeTaper =',
302     & ' /* tapering of turbulent flux (0.< <1.) for AREA=1. */')
303     CALL WRITE_0D_L ( SEAICE_mcPheeStepFunc, INDEX_NONE,
304     & 'SEAICE_mcPheeStepFunc =',
305     & ' /* replace linear tapering with step funct. */')
306     CALL WRITE_0D_RL ( SEAICE_frazilFrac, INDEX_NONE,
307     & 'SEAICE_frazilFrac =',
308     & ' /* frazil (T<tempFrz) to seaice conversion rate (0.< <1.) */')
309     CALL WRITE_0D_RL( SEAICE_tempFrz0 ,INDEX_NONE,
310     & 'SEAICE_tempFrz0 =',
311     & ' /* freezing temp. of sea water (intercept) */')
312     CALL WRITE_0D_RL( SEAICE_dTempFrz_dS,INDEX_NONE,
313     & 'SEAICE_dTempFrz_dS=',
314     & ' /* freezing temp. of sea water (slope) */')
315     c print the various values meining for SEAICE_areaGain/LossFormula
316     WRITE(msgBuf,'(2A)') 'SEAICE_areaGainFormula =',
317     & ' /* ice cover gain formula (1,2)*/'
318     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
319     buffI(1) = SEAICE_areaGainFormula
320     CALL PRINT_LIST_I( buffI, 1, 1, INDEX_NONE,
321     & .FALSE., .TRUE., ioUnit )
322     WRITE(msgBuf,'(A)') ' 1=from growth by ATM '
323     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
324     WRITE(msgBuf,'(A)') ' 2=from predicted growth by ATM'
325     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
326     CALL PRINT_MESSAGE(endList, ioUnit, SQUEEZE_RIGHT, myThid )
327     c
328     WRITE(msgBuf,'(2A)') 'SEAICE_areaLossFormula =',
329     & ' /* ice cover loss formula (1,2)*/'
330     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
331     buffI(1) = SEAICE_areaLossFormula
332     CALL PRINT_LIST_I( buffI, 1, 1, INDEX_NONE,
333     & .FALSE., .TRUE., ioUnit )
334     WRITE(msgBuf,'(2A)') ' 1=from all but only melt ',
335     & 'conributions by ATM and OCN'
336     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
337     WRITE(msgBuf,'(A)') ' 2=from net melt-grow>0 by ATM and OCN'
338     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
339     WRITE(msgBuf,'(A)') ' 3=from predicted melt by ATM'
340     CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
341     CALL PRINT_MESSAGE(endList, ioUnit, SQUEEZE_RIGHT, myThid )
342     c
343 heimbach 1.3 #ifdef EXF_ALLOW_SEAICE_RELAX
344     CALL WRITE_0D_RL( SEAICE_tauAreaObsRelax,INDEX_NONE,
345     & 'SEAICE_tauAreaObsRelax=',
346     & ' /* relaxation timescale of sea-ice concentration */')
347     #endif
348     c
349 dimitri 1.1 CALL WRITE_0D_RL( HO ,INDEX_NONE,
350     & 'HO =', ' /* nominal thickness of new ice */')
351     CALL WRITE_0D_RL( HO_south ,INDEX_NONE,
352     & 'HO_south =', ' /* Southern Ocean HO */')
353     CALL WRITE_0D_RL( SEAICE_area_max ,INDEX_NONE,
354     & 'SEAICE_area_max =',
355     & ' /* set to les than 1. to mimic open leads */')
356     #ifdef SEAICE_VARIABLE_SALINITY
357     WRITE(msgBuf,'(A)')
358     &' Sea ice has a variable salinity such that '
359     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
360 torge 1.4 & SQUEEZE_RIGHT, myThid )
361 dimitri 1.1 CALL WRITE_0D_RL( SEAICE_saltFrac, INDEX_NONE,
362     & 'SEAICE_saltFrac =',
363     & ' /* fraction of ocn salinity in new ice */')
364     #else
365     CALL WRITE_0D_RL( SEAICE_salt0, INDEX_NONE,
366     & 'SEAICE_salt0 =', ' /* constant sea ice salinity */')
367     #endif
368     CALL WRITE_0D_L ( SEAICE_salinityTracer, INDEX_NONE,
369     & 'SEAICE_salinityTracer =', ' /* test SITR varia. salinity */')
370     CALL WRITE_0D_L ( SEAICEuseFlooding, INDEX_NONE,
371     & 'SEAICEuseFlooding =', ' /* turn submerged snow into ice */')
372     #ifndef SEAICE_CAP_HEFF
373     WRITE(msgBuf,'(A,A)')
374     & 'MAX_HEFF has no effect because SEAICE_CAP_HEFF is undefined'
375     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
376 torge 1.4 & SQUEEZE_RIGHT, myThid )
377 dimitri 1.1 #endif /* SEAICE_CAP_HEFF */
378     CALL WRITE_0D_RL( MAX_HEFF ,INDEX_NONE,
379     & 'MAX_HEFF =', ' /* maximum ice thickness */')
380    
381 torge 1.4 WRITE(msgBuf,'(A)') ' '
382 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
383 torge 1.4 & SQUEEZE_RIGHT, myThid )
384 dimitri 1.1 WRITE(msgBuf,'(A)')
385     &' Seaice air-sea fluxes configuration, > START < '
386     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
387 torge 1.4 & SQUEEZE_RIGHT, myThid )
388 dimitri 1.1 WRITE(msgBuf,'(A)')
389     &' -----------------------------------------------'
390     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
391 torge 1.4 & SQUEEZE_RIGHT, myThid )
392 dimitri 1.1
393     CALL WRITE_0D_L ( SEAICEheatConsFix, INDEX_NONE,
394     & 'SEAICEheatConsFix =',
395     & ' /* accound for ocn<->seaice advect. heat flux */')
396 dimitri 1.2 #ifdef SEAICE_ITD
397     CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'nITD ='
398     & , ' /* number of ice thickness categories */')
399     #else
400 dimitri 1.1 CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'SEAICE_multDim ='
401     & , ' /* number of ice categories (1 or 7) */')
402 dimitri 1.2 #endif
403 dimitri 1.1 CALL WRITE_0D_I ( IMAX_TICE, INDEX_NONE,
404     & 'IMAX_TICE =', ' /* iterations for ice surface temp */')
405     CALL WRITE_0D_I ( postSolvTempIter, INDEX_NONE,
406     & 'postSolvTempIter=',
407     & ' /* flux calculation after surf. temp iter */')
408     #ifndef SEAICE_EXTERNAL_FLUXES
409     CALL WRITE_0D_RL( SEAICE_waterAlbedo,INDEX_NONE,
410     & 'SEAICE_waterAlbedo=', ' /* water albedo */')
411     CALL WRITE_0D_RL( SEAICE_emissivity, INDEX_NONE,
412     & 'SEAICE_emissivity =', ' /* ocean-surface emissivity */')
413     #endif /* SEAICE_EXTERNAL_FLUXES */
414     CALL WRITE_0D_RL( SEAICE_dryIceAlb ,INDEX_NONE,
415     & 'SEAICE_dryIceAlb =', ' /* winter albedo */')
416     CALL WRITE_0D_RL( SEAICE_wetIceAlb ,INDEX_NONE,
417     & 'SEAICE_wetIceAlb =', ' /* summer albedo */')
418     CALL WRITE_0D_RL( SEAICE_drySnowAlb ,INDEX_NONE,
419     & 'SEAICE_drySnowAlb =', ' /* dry snow albedo */')
420     CALL WRITE_0D_RL( SEAICE_wetSnowAlb ,INDEX_NONE,
421     & 'SEAICE_wetSnowAlb =', ' /* wet snow albedo */')
422     CALL WRITE_0D_RL( SEAICE_dryIceAlb_south ,INDEX_NONE,
423     & 'SEAICE_dryIceAlb_south =', ' /* Southern Ocean dryIceAlb */')
424     CALL WRITE_0D_RL( SEAICE_wetIceAlb_south ,INDEX_NONE,
425     & 'SEAICE_wetIceAlb_south =', ' /* Southern Ocean wetIceAlb */')
426     CALL WRITE_0D_RL( SEAICE_drySnowAlb_south ,INDEX_NONE,
427     & 'SEAICE_drySnowAlb_south=', ' /* Southern Ocean drySnowAlb */')
428     CALL WRITE_0D_RL( SEAICE_wetSnowAlb_south ,INDEX_NONE,
429     & 'SEAICE_wetSnowAlb_south=', ' /* Southern Ocean wetSnowAlb */')
430     CALL WRITE_0D_RL( SEAICE_wetAlbTemp ,INDEX_NONE,
431     & 'SEAICE_wetAlbTemp=',
432     & ' /* Temp (o.C) threshold for wet-albedo */')
433     CALL WRITE_0D_RL( SEAICE_snow_emiss ,INDEX_NONE,
434     & 'SEAICE_snow_emiss =', ' /* snow emissivity */')
435     CALL WRITE_0D_RL( SEAICE_ice_emiss ,INDEX_NONE,
436     & 'SEAICE_ice_emiss =', ' /* seaice emissivity */')
437     CALL WRITE_0D_RL( SEAICE_cpAir ,INDEX_NONE,
438     & 'SEAICE_cpAir =', ' /* heat capacity of air */')
439     CALL WRITE_0D_RL( SEAICE_dalton ,INDEX_NONE,
440     & 'SEAICE_dalton =', ' /* constant dalton number */')
441     CALL WRITE_0D_RL( SEAICE_iceConduct ,INDEX_NONE,
442     & 'SEAICE_iceConduct =', ' /* sea-ice conductivity */')
443     CALL WRITE_0D_RL( SEAICE_snowConduct,INDEX_NONE,
444     & 'SEAICE_snowConduct=', ' /* snow conductivity */')
445     CALL WRITE_0D_RL( SEAICE_snowThick ,INDEX_NONE,
446     & 'SEAICE_snowThick =',
447     & ' /* cutoff snow thickness (for albedo) */')
448     CALL WRITE_0D_RL( SEAICE_shortwave ,INDEX_NONE,
449     & 'SEAICE_shortwave =', ' /* penetration shortwave radiation */')
450     CALL WRITE_0D_L ( useMaykutSatVapPoly, INDEX_NONE,
451     & 'useMaykutSatVapPoly =',
452     & ' /* use Maykut Polynomial for Sat.Vap.Pr */')
453     CALL WRITE_0D_RL( MIN_ATEMP ,INDEX_NONE,
454     & 'MIN_ATEMP =', ' /* minimum air temperature */')
455     CALL WRITE_0D_RL( MIN_LWDOWN ,INDEX_NONE,
456     & 'MIN_LWDOWN =', ' /* minimum downward longwave */')
457     CALL WRITE_0D_RL( MIN_TICE ,INDEX_NONE,
458     & 'MIN_TICE =', ' /* minimum ice temperature */')
459    
460     C end if usePW79thermodynamics bloc
461     ENDIF
462    
463 torge 1.4 WRITE(msgBuf,'(A)') ' '
464 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
465 torge 1.4 & SQUEEZE_RIGHT, myThid )
466 dimitri 1.1 WRITE(msgBuf,'(A)')
467     &' Seaice initialization and IO config., > START < '
468     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
469 torge 1.4 & SQUEEZE_RIGHT, myThid )
470 dimitri 1.1 WRITE(msgBuf,'(A)')
471     &' -------------------------------------------------'
472     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
473 torge 1.4 & SQUEEZE_RIGHT, myThid )
474 dimitri 1.1
475     C-- Initial Condition/Input related param.
476     CALL WRITE_0D_RL( SEAICE_initialHEFF,INDEX_NONE,
477     & 'SEAICE_initialHEFF=', ' /* initial sea-ice thickness */')
478     CALL WRITE_0D_C( AreaFile, -1, INDEX_NONE,
479     & 'AreaFile =', ' /* Initial ice concentration File */')
480     CALL WRITE_0D_C( HeffFile, -1, INDEX_NONE,
481     & 'HeffFile =', ' /* Initial effective ice thickness File */')
482     CALL WRITE_0D_C( HsnowFile, -1, INDEX_NONE,
483     & 'HsnowFile =', ' /* Initial snow thickness File */')
484     #ifdef SEAICE_VARIABLE_SALINITY
485     CALL WRITE_0D_C( HsaltFile, -1, INDEX_NONE,
486     & 'HsaltFile =', ' /* Initial HSALT File */')
487     #endif
488     CALL WRITE_0D_C( uIceFile, -1, INDEX_NONE,
489     & 'uIceFile =', ' /* Initial U-ice velocity File */')
490     CALL WRITE_0D_C( vIceFile, -1, INDEX_NONE,
491     & 'vIceFile =', ' /* Initial V-ice velocity File */')
492    
493     C-- Output related param.
494     CALL WRITE_0D_L ( SEAICEwriteState, INDEX_NONE,
495     & 'SEAICEwriteState =', ' /* write sea ice state to file */')
496     CALL WRITE_0D_RL( SEAICE_monFreq, INDEX_NONE,
497     & 'SEAICE_monFreq =',' /* monitor frequency */')
498     CALL WRITE_0D_RL( SEAICE_dumpFreq ,INDEX_NONE,
499     & 'SEAICE_dumpFreq =', ' /* dump frequency */')
500     CALL WRITE_0D_RL( SEAICE_taveFreq ,INDEX_NONE,
501     & 'SEAICE_taveFreq =', ' /* time-averaging frequency */')
502     CALL WRITE_0D_L ( SEAICE_mon_stdio, INDEX_NONE,
503     & 'SEAICE_mon_stdio =',' /* write monitor to std-outp */')
504     CALL WRITE_0D_L ( SEAICE_dump_mdsio, INDEX_NONE,
505     & 'SEAICE_dump_mdsio =',' /* write snap-shot using MDSIO */')
506     CALL WRITE_0D_L ( SEAICE_tave_mdsio, INDEX_NONE,
507     & 'SEAICE_tave_mdsio =',' /* write TimeAverage using MDSIO */')
508     #ifdef ALLOW_MNC
509     CALL WRITE_0D_L ( SEAICE_mon_mnc, INDEX_NONE,
510     & 'SEAICE_mon_mnc =',' /* write monitor to netcdf file */')
511     CALL WRITE_0D_L ( SEAICE_dump_mnc, INDEX_NONE,
512     & 'SEAICE_dump_mnc =',' /* write snap-shot using MNC */')
513     CALL WRITE_0D_L ( SEAICE_tave_mnc, INDEX_NONE,
514     & 'SEAICE_tave_mnc =',' /* write TimeAverage using MNC */')
515     #endif /* ALLOW_MNC */
516    
517     #ifdef ALLOW_SITRACER
518     CALL WRITE_0D_I ( SItrNumInUse, INDEX_NONE,
519     & 'SItrNumInUse =',
520     & ' /* number of tracers that are in use (<SItrMaxNum) */')
521     DO iTracer = 1, SItrNumInUse
522     IF (SItrName(iTracer).NE.' ') THEN
523     WRITE(msgBuf,'(A,I3,A)') '== SItracer no. ',iTracer,
524     &' is in use and defined as'
525     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
526 torge 1.4 & SQUEEZE_RIGHT, myThid )
527 dimitri 1.1 CALL WRITE_0D_C ( SItrMate(iTracer), -1, INDEX_NONE,
528     & ' -- SItrMate =',' /* tracer of HEFF or AREA */')
529     CALL WRITE_0D_C ( SItrName(iTracer), -1, INDEX_NONE,
530     & ' -- SItrName =',' /* tracer name*/')
531     CALL WRITE_0D_C ( SItrNameLong(iTracer), -1, INDEX_NONE,
532     & ' -- SItrNameLong =',' /* tracer long name*/')
533     CALL WRITE_0D_C ( SItrFile(iTracer), -1, INDEX_NONE,
534     & ' -- SItrFile =',' /* tracer initial condition file */')
535     CALL WRITE_0D_C ( SItrUnit(iTracer), -1, INDEX_NONE,
536     & ' -- SItrUnit =',' /* tracer unit */')
537     CALL WRITE_0D_RL ( SItrFromOcean0(iTracer), INDEX_NONE,
538     & ' -- SItrFromOcean0 =',' /* for new ice from freeze */')
539     CALL WRITE_0D_RL ( SItrFromOceanFrac(iTracer), INDEX_NONE,
540     & ' -- SItrFromOceanFrac =',' /* for new ice from freeze */')
541     CALL WRITE_0D_RL ( SItrFromFlood0(iTracer), INDEX_NONE,
542     & ' -- SItrFromFlood0 =',' /* for new ice from freeze */')
543     CALL WRITE_0D_RL ( SItrFromFloodFrac(iTracer), INDEX_NONE,
544     & ' -- SItrFromFloodFrac =',' /* for new ice from freeze */')
545     CALL WRITE_0D_RL ( SItrExpand0(iTracer), INDEX_NONE,
546     & ' -- SItrExpand0 =',' /* for ice cover thermo. expans. */')
547    
548     ENDIF
549     ENDDO
550     #endif /* ALLOW_SITRACER */
551    
552 torge 1.4 WRITE(msgBuf,'(A)') ' '
553 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
554 torge 1.4 & SQUEEZE_RIGHT, myThid )
555 dimitri 1.1 WRITE(msgBuf,'(A)')
556     &' Seaice regularization numbers, > START < '
557     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
558 torge 1.4 & SQUEEZE_RIGHT, myThid )
559 dimitri 1.1 WRITE(msgBuf,'(A)')
560     &' -----------------------------------------------'
561     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
562 torge 1.4 & SQUEEZE_RIGHT, myThid )
563 dimitri 1.1
564     CALL WRITE_0D_RL( SEAICE_EPS ,INDEX_NONE,
565     & 'SEAICE_EPS =', ' /* reduce derivative singularities */')
566     CALL WRITE_0D_RL( SEAICE_EPS_SQ ,INDEX_NONE,
567     & 'SEAICE_EPS_SQ =', ' /* reduce derivative singularities */')
568     CALL WRITE_0D_RL( SEAICE_area_reg ,INDEX_NONE,
569     & 'SEAICE_area_reg =', ' /* reduce derivative singularities */')
570     CALL WRITE_0D_RL( SEAICE_hice_reg ,INDEX_NONE,
571     & 'SEAICE_hice_reg =', ' /* reduce derivative singularities */')
572     CALL WRITE_0D_RL( SEAICE_area_floor ,INDEX_NONE,
573     & 'SEAICE_area_floor =', ' /* reduce derivative singularities */')
574    
575 torge 1.4 WRITE(msgBuf,'(A)') ' '
576     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
577     & SQUEEZE_RIGHT, myThid )
578 dimitri 1.1 WRITE(msgBuf,'(A)')
579     &'// ======================================================='
580     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
581 torge 1.4 & SQUEEZE_RIGHT, myThid )
582 dimitri 1.1 WRITE(msgBuf,'(A)')
583     &'// Seaice configuration (SEAICE_PARM01) >>> END <<<'
584     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
585 torge 1.4 & SQUEEZE_RIGHT, myThid )
586 dimitri 1.1 WRITE(msgBuf,'(A)')
587     &'// ======================================================='
588     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
589 torge 1.4 & SQUEEZE_RIGHT, myThid )
590     WRITE(msgBuf,'(A)') ' '
591     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
592     & SQUEEZE_RIGHT, myThid )
593 dimitri 1.1
594     _END_MASTER(myThid)
595    
596     RETURN
597     END

  ViewVC Help
Powered by ViewVC 1.1.22