/[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.5 - (hide 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 torge 1.5 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_summary.F,v 1.66 2013/02/28 16:21:40 mlosch 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 torge 1.5 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 torge 1.5 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 dimitri 1.1 #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 torge 1.5 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 dimitri 1.1 & '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 torge 1.4 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 dimitri 1.1 C-- Thermodynamics parameters
301 torge 1.4 WRITE(msgBuf,'(A)') ' '
302 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
303 torge 1.4 & SQUEEZE_RIGHT, myThid )
304 dimitri 1.1 WRITE(msgBuf,'(A)')
305     &' Seaice thermodynamics configuration > START < '
306     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
307 torge 1.4 & SQUEEZE_RIGHT, myThid )
308 dimitri 1.1 WRITE(msgBuf,'(A)')
309     &' -----------------------------------------------'
310     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
311 torge 1.4 & SQUEEZE_RIGHT, myThid )
312 dimitri 1.1 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 torge 1.4 & SQUEEZE_RIGHT, myThid )
326 dimitri 1.1 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 heimbach 1.3 #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 dimitri 1.1 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 torge 1.4 & SQUEEZE_RIGHT, myThid )
396 dimitri 1.1 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 torge 1.4 WRITE(msgBuf,'(A)') ' '
409 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
410 torge 1.4 & SQUEEZE_RIGHT, myThid )
411 dimitri 1.1 WRITE(msgBuf,'(A)')
412     &' Seaice air-sea fluxes configuration, > START < '
413     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
414 torge 1.4 & SQUEEZE_RIGHT, myThid )
415 dimitri 1.1 WRITE(msgBuf,'(A)')
416     &' -----------------------------------------------'
417     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
418 torge 1.4 & SQUEEZE_RIGHT, myThid )
419 dimitri 1.1
420     CALL WRITE_0D_L ( SEAICEheatConsFix, INDEX_NONE,
421     & 'SEAICEheatConsFix =',
422     & ' /* accound for ocn<->seaice advect. heat flux */')
423 dimitri 1.2 #ifdef SEAICE_ITD
424     CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'nITD ='
425     & , ' /* number of ice thickness categories */')
426     #else
427 dimitri 1.1 CALL WRITE_0D_I (SEAICE_multDim,INDEX_NONE,'SEAICE_multDim ='
428     & , ' /* number of ice categories (1 or 7) */')
429 dimitri 1.2 #endif
430 dimitri 1.1 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 torge 1.4 WRITE(msgBuf,'(A)') ' '
491 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
492 torge 1.4 & SQUEEZE_RIGHT, myThid )
493 dimitri 1.1 WRITE(msgBuf,'(A)')
494     &' Seaice initialization and IO config., > START < '
495     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
496 torge 1.4 & SQUEEZE_RIGHT, myThid )
497 dimitri 1.1 WRITE(msgBuf,'(A)')
498     &' -------------------------------------------------'
499     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
500 torge 1.4 & SQUEEZE_RIGHT, myThid )
501 dimitri 1.1
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 torge 1.4 & SQUEEZE_RIGHT, myThid )
554 dimitri 1.1 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 torge 1.4 WRITE(msgBuf,'(A)') ' '
580 dimitri 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
581 torge 1.4 & SQUEEZE_RIGHT, myThid )
582 dimitri 1.1 WRITE(msgBuf,'(A)')
583     &' Seaice regularization numbers, > START < '
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 dimitri 1.1
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 torge 1.4 WRITE(msgBuf,'(A)') ' '
603     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
604     & SQUEEZE_RIGHT, myThid )
605 dimitri 1.1 WRITE(msgBuf,'(A)')
606     &'// ======================================================='
607     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
608 torge 1.4 & SQUEEZE_RIGHT, myThid )
609 dimitri 1.1 WRITE(msgBuf,'(A)')
610     &'// Seaice configuration (SEAICE_PARM01) >>> END <<<'
611     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
612 torge 1.4 & SQUEEZE_RIGHT, myThid )
613 dimitri 1.1 WRITE(msgBuf,'(A)')
614     &'// ======================================================='
615     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
616 torge 1.4 & SQUEEZE_RIGHT, myThid )
617     WRITE(msgBuf,'(A)') ' '
618     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
619     & SQUEEZE_RIGHT, myThid )
620 dimitri 1.1
621     _END_MASTER(myThid)
622    
623     RETURN
624     END

  ViewVC Help
Powered by ViewVC 1.1.22