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 |