/[MITgcm]/MITgcm/pkg/seaice/seaice_readparms.F
ViewVC logotype

Contents of /MITgcm/pkg/seaice/seaice_readparms.F

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


Revision 1.172 - (show annotations) (download)
Thu Jan 28 16:17:05 2016 UTC (8 years, 4 months ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint65v, checkpoint65t, checkpoint65u
Changes since 1.171: +7 -6 lines
adjust a comment

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_readparms.F,v 1.171 2016/01/28 12:54:12 mlosch Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5 #ifdef ALLOW_AUTODIFF
6 # include "AUTODIFF_OPTIONS.h"
7 #endif
8
9 CBOP
10 C !ROUTINE: SEAICE_READPARMS
11 C !INTERFACE:
12 SUBROUTINE SEAICE_READPARMS( myThid )
13
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | S/R SEAICE_READPARMS
17 C | o Routine to read in file data.seaice
18 C *==========================================================*
19 C \ev
20
21 C !USES:
22 IMPLICIT NONE
23
24 C === Global variables ===
25 #include "SIZE.h"
26 #include "EEPARAMS.h"
27 #include "PARAMS.h"
28 #include "GRID.h"
29 #include "SEAICE_SIZE.h"
30 #include "SEAICE_PARAMS.h"
31 #include "SEAICE_TRACER.h"
32 #ifdef ALLOW_COST
33 # include "SEAICE_COST.h"
34 #endif
35 #ifdef ALLOW_MNC
36 # include "MNC_PARAMS.h"
37 #endif
38 #ifdef ALLOW_EXF
39 # include "EXF_CONSTANTS.h"
40 #endif /* ALLOW_EXF */
41 #ifdef ALLOW_AUTODIFF
42 # include "AUTODIFF_PARAMS.h"
43 #endif
44
45 C !INPUT/OUTPUT PARAMETERS:
46 C === Routine arguments ===
47 C myThid :: my Thread Id. number
48 INTEGER myThid
49 CEOP
50
51 C !LOCAL VARIABLES:
52 C === Local variables ===
53 C msgBuf :: Informational/error message buffer
54 C iUnit :: Work variable for IO unit number
55 CHARACTER*(MAX_LEN_MBUF) msgBuf
56 LOGICAL chkFlag
57 INTEGER iUnit
58 INTEGER l
59 #ifdef ALLOW_SITRACER
60 INTEGER iTracer
61 #endif
62 #ifdef ALLOW_COST
63 INTEGER locDate(4)
64 #endif /* ALLOW_COST */
65 INTEGER nRetired
66 _RL tmp
67
68 C- Old parameters (to be retired one day):
69 _RL SEAICE_availHeatTaper
70 _RL SEAICE_gamma_t, SEAICE_gamma_t_frz, SEAICE_availHeatFracFrz
71
72 C- Retired parameters:
73 C MAX_TICE :: maximum ice temperature (deg C)
74 C LAD :: time stepping used for sea-ice advection:
75 C 1 = LEAPFROG, 2 = BACKWARD EULER.
76 C SEAICE_freeze :: FREEZING TEMP. OF SEA WATER
77 _RL SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce
78 _RL SEAICE_salinity, SIsalFRAC, SIsal0
79 _RL SEAICE_lhSublim, SEAICE_freeze, MAX_HEFF
80 _RL areaMin, areaMax, A22, hiceMin, MAX_TICE
81 LOGICAL SEAICEadvAge
82 INTEGER SEAICEadvSchAge, LAD, SEAICEturbFluxFormula
83 INTEGER NPSEUDOTIMESTEPS, SOLV_MAX_ITERS
84 INTEGER SEAICEnewtonIterMax, SEAICEkrylovIterMax
85 _RL JFNKgamma_nonlin
86 _RL SEAICEdiffKhAge
87 CHARACTER*(MAX_LEN_MBUF) IceAgeFile, IceAgeTrFile(4)
88 _RL SEAICE_abEps
89 LOGICAL SEAICEuseAB2
90
91 C-- SEAICE parameters
92 NAMELIST /SEAICE_PARM01/
93 & SEAICEuseDYNAMICS, SEAICEuseFREEDRIFT, SEAICEuseStrImpCpl,
94 & SEAICEuseTEM, SEAICEuseMetricTerms, SEAICEuseTilt,
95 & useHB87stressCoupling, SEAICEuseFlooding,
96 & usePW79thermodynamics, useMaykutSatVapPoly,
97 & SEAICErestoreUnderIce, SEAICE_growMeltByConv,
98 & SEAICE_salinityTracer, SEAICE_ageTracer,
99 & SEAICEadvHeff, SEAICEadvArea, SEAICEadvSnow,
100 & SEAICEadvSalt, SEAICEadvAge,
101 & SEAICE_clipVelocities, SEAICE_maskRHS, SEAICE_no_slip,
102 & SEAICEetaZmethod, LAD, IMAX_TICE, postSolvTempIter,
103 & SEAICEuseFluxForm, SEAICEadvScheme, SEAICEadvSchArea,
104 & SEAICEadvSchHeff, SEAICEadvSchSnow,
105 & SEAICEadvSchSalt, SEAICEadvSchAge,
106 & SEAICEdiffKhHeff, SEAICEdiffKhSnow, SEAICEdiffKhArea,
107 & SEAICEdiffKhSalt, SEAICEdiffKhAge, DIFF1,
108 & SEAICE_deltaTtherm, SEAICE_deltaTdyn,
109 & SEAICE_LSRrelaxU, SEAICE_LSRrelaxV,
110 & SOLV_MAX_ITERS, SOLV_NCHECK, NPSEUDOTIMESTEPS,
111 & LSR_ERROR, LSR_mixIniGuess, SEAICEuseMultiTileSolver,
112 & SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax,
113 & SEAICE_evpDampC, SEAICEnEVPstarSteps,
114 & SEAICE_evpAlpha, SEAICE_evpBeta,
115 & SEAICEaEVPcoeff, SEAICEaEVPcStar, SEAICEaEVPalphaMin,
116 & SEAICE_zetaMin, SEAICE_zetaMaxFac, SEAICEusePicardAsPrecon,
117 & SEAICEuseKrylov, SEAICEuseJFNK,
118 & SEAICEnonLinIterMax, SEAICElinearIterMax, SEAICEnonLinTol,
119 & SEAICEnewtonIterMax, SEAICEkrylovIterMax, JFNKgamma_nonlin,
120 & SEAICEpreconNL_Iter, SEAICEpreconLinIter,
121 & SEAICE_JFNK_lsIter, SEAICE_JFNK_tolIter, JFNKres_t,JFNKres_tFac,
122 & JFNKgamma_lin_min,JFNKgamma_lin_max,
123 & SEAICE_JFNKepsilon, SEAICE_OLx, SEAICE_OLy,
124 & SEAICE_JFNKphi, SEAICE_JFNKalpha, SEAICEuseIMEX, SEAICEuseBDF2,
125 & useHibler79IceStrength, SEAICEpartFunc, SEAICEredistFunc,
126 & SEAICEridgingIterMax, SEAICEsimpleRidging, SEAICEsnowFracRidge,
127 & SEAICEgStar, SEAICEhStar, SEAICEaStar, SEAICEshearParm,
128 & SEAICEmuRidging, SEAICEmaxRaft, SEAICE_cf,
129 & SEAICEuseAB2, SEAICE_abEps,
130 & SEAICEpresH0, SEAICEpresPow0, SEAICEpresPow1,
131 & SEAICE_initialHEFF, SEAICEturbFluxFormula,
132 & SEAICE_areaGainFormula, SEAICE_areaLossFormula,
133 & SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt,
134 & SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR,
135 & SEAICE_cpAir, SEAICEscaleSurfStress,
136 & SEAICE_drag, SEAICE_waterDrag, SEAICE_dryIceAlb,
137 & SEAICE_wetIceAlb, SEAICE_drySnowAlb, SEAICE_wetSnowAlb, HO,
138 & SEAICE_drag_south, SEAICE_waterDrag_south,
139 & SEAICE_dryIceAlb_south, SEAICE_wetIceAlb_south,
140 & SEAICE_drySnowAlb_south, SEAICE_wetSnowAlb_south, HO_south,
141 & SEAICE_wetAlbTemp, SEAICE_waterAlbedo,
142 & SEAICE_strength, SEAICE_cStar, SEAICE_eccen,
143 & SEAICEpressReplFac, SEAICE_tensilFac, SEAICE_tensilDepth,
144 & SEAICE_lhFusion, SEAICE_lhEvap, SEAICE_dalton,
145 & SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce,
146 & SEAICE_salinity, SIsalFRAC, SIsal0,
147 & areaMin, areaMax, A22, hiceMin,
148 & SEAICE_iceConduct, SEAICE_snowConduct,
149 & SEAICE_emissivity, SEAICE_ice_emiss, SEAICE_snow_emiss,
150 & SEAICE_snowThick, SEAICE_shortwave, SEAICE_freeze, OCEAN_drag,
151 & SEAICE_tempFrz0, SEAICE_dTempFrz_dS, SEAICE_salt0,
152 & SEAICE_saltFrac, SEAICEstressFactor, SEAICE_availHeatTaper,
153 & SEAICE_mcPheePiston, SEAICE_frazilFrac, SEAICE_mcPheeTaper,
154 & SEAICE_mcPheeStepFunc, SEAICE_gamma_t, SEAICE_gamma_t_frz,
155 & SEAICE_availHeatFrac, SEAICE_availHeatFracFrz, SEAICE_PDF,
156 & AreaFile, HeffFile, uIceFile, vIceFile, HsnowFile, HsaltFile,
157 & SEAICEheatConsFix, SEAICE_multDim, SEAICE_useMultDimSnow,
158 & SEAICE_deltaMin, SEAICE_area_reg, SEAICE_hice_reg,
159 & SEAICE_area_floor, SEAICE_area_max, SEAICE_tauAreaObsRelax,
160 & SEAICE_airTurnAngle, SEAICE_waterTurnAngle,
161 & MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE,
162 & SEAICE_EPS, SEAICE_EPS_SQ,
163 & SEAICEwriteState, SEAICEuseEVPpickup,
164 & SEAICEuseEVPstar, SEAICEuseEVPrev,
165 & SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq,
166 & SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc,
167 #ifdef SEAICE_ITD
168 & Hlimit_c1, Hlimit_c2, Hlimit_c3,
169 #endif
170 & SEAICE_debugPointI, SEAICE_debugPointJ
171
172 #ifdef ALLOW_COST
173 NAMELIST /SEAICE_PARM02/
174 & mult_ice_export, mult_ice, cost_ice_flag,
175 & costIceStart1, costIceStart2,
176 & costIceEnd1, costIceEnd2,
177 & cost_ice_flag,
178 & SEAICE_clamp_salt, SEAICE_clamp_theta,
179 & SEAICE_cutoff_area, SEAICE_cutoff_heff,
180 & mult_smrsst, smrsstbarfile,
181 & mult_smrsss, smrsssbarfile,
182 & mult_smrarea, smrareabarfile, smrareadatfile,
183 & wsmrarea0, wmean_smrarea, smrarea_errfile,
184 & smrareastartdate1, smrareastartdate2, smrareaperiod
185 #endif
186
187 #ifdef ALLOW_SITRACER
188 NAMELIST /SEAICE_PARM03/
189 & SItrFile, SItrName, SItrNameLong, SItrUnit, SItrMate,
190 & SItrFromOcean0, SItrFromOceanFrac, SItrFromFlood0,
191 & SItrFromFloodFrac, SItrExpand0,
192 & IceAgeTrFile, SItrNumInUse
193 #endif
194
195 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
196
197 IF ( .NOT.useSEAICE ) THEN
198 C- pkg SEAICE is not used
199 _BEGIN_MASTER(myThid)
200 C- Track pkg activation status:
201 C print a (weak) warning if data.seaice is found
202 CALL PACKAGES_UNUSED_MSG( 'useSEAICE', ' ', ' ' )
203 _END_MASTER(myThid)
204 RETURN
205 ENDIF
206
207 _BEGIN_MASTER(myThid)
208
209 C-- set default sea ice parameters
210 #ifdef SEAICE_ALLOW_DYNAMICS
211 SEAICEuseDYNAMICS = .TRUE.
212 #else
213 SEAICEuseDYNAMICS = .FALSE.
214 #endif
215 SEAICEadjMODE = 0
216 SEAICEuseFREEDRIFT = .FALSE.
217 SEAICEuseStrImpCpl = .FALSE.
218 SEAICEuseTilt = .TRUE.
219 SEAICEheatConsFix = .FALSE.
220 SEAICEuseTEM = .FALSE.
221 SEAICEuseMetricTerms = .TRUE.
222 SEAICEuseEVPpickup = .TRUE.
223 SEAICEuseEVPstar = .FALSE.
224 SEAICEuseEVPrev = .FALSE.
225 SEAICErestoreUnderIce = .FALSE.
226 SEAICE_growMeltByConv = .FALSE.
227 SEAICE_salinityTracer = .FALSE.
228 SEAICE_ageTracer = .FALSE.
229 useHB87stressCoupling = .FALSE.
230 SEAICEscaleSurfStress = .FALSE.
231 usePW79thermodynamics = .TRUE.
232 C start of ridging parameters
233 useHibler79IceStrength= .TRUE.
234 SEAICEsimpleRidging = .TRUE.
235 C The range of this proportionality constant is 2 to 17
236 SEAICE_cf = 17. _d 0
237 C By default use partition function of Thorndyke et al. (1975) ...
238 SEAICEpartFunc = 0
239 C and redistribution function of Hibler (1980)
240 SEAICEredistFunc = 0
241 SEAICEridgingIterMax = 10
242 C This parameter is not well constraint (Lipscomb et al. 2007)
243 SEAICEshearParm = 0.5 _d 0
244 C Thorndyke et al. (1975)
245 SEAICEgStar = 0.15 _d 0
246 C suggested by Hibler (1980), Flato and Hibler (1995)
247 C SEAICEhStar = 100. _d 0
248 C but this value of 25 seems to give thinner ridges in better agreement
249 C with observations (according to Lipscomb et al 2007)
250 SEAICEhStar = 25. _d 0
251 C according to Lipscomb et al. (2007) these values for aStar and mu
252 C are approximately equivalent to gStar=0.15 (aStar = gStar/3) for
253 C SEAICEpartFunc = 1 ...
254 SEAICEaStar = 0.05 _d 0
255 C ... and hStar=25 for SEAICEredistFunc = 1
256 C Libscomb et al. (2007): mu = 3, 4, 5, 6
257 C correspond to hStar = 25, 50, 75, 100
258 SEAICEmuRidging = 3. _d 0
259 SEAICEmaxRaft = 1. _d 0
260 SEAICEsnowFracRidge = 0.5 _d 0
261 C end ridging parampeters
262 useMaykutSatVapPoly = .FALSE.
263 SEAICEuseFluxForm = .TRUE.
264 SEAICEadvHeff = .TRUE.
265 SEAICEadvArea = .TRUE.
266 SEAICEadvSnow = .TRUE.
267 #ifdef SEAICE_VARIABLE_SALINITY
268 SEAICEadvSalt = .TRUE.
269 #else
270 SEAICEadvSalt = .FALSE.
271 #endif
272 SEAICEuseFlooding = .TRUE.
273 SEAICE_no_slip = .FALSE.
274 SEAICE_clipVelocities = .FALSE.
275 SEAICE_maskRHS = .FALSE.
276 SEAICEetaZmethod = 0
277 SEAICEadvScheme = 2
278 SEAICEadvSchArea = UNSET_I
279 SEAICEadvSchHeff = UNSET_I
280 SEAICEadvSchSnow = UNSET_I
281 SEAICEadvSchSalt = UNSET_I
282 SEAICEdiffKhArea = UNSET_RL
283 SEAICEdiffKhHeff = UNSET_RL
284 SEAICEdiffKhSnow = UNSET_RL
285 SEAICEdiffKhSalt = UNSET_RL
286 DIFF1 = UNSET_RL
287 C-- old DIFF1 default:
288 c DIFF1 = .004 _d 0
289 SEAICE_deltaTtherm = dTtracerLev(1)
290 SEAICE_deltaTdyn = dTtracerLev(1)
291 SEAICE_deltaTevp = UNSET_RL
292 SEAICEuseBDF2 = .FALSE.
293 SEAICEuseKrylov = .FALSE.
294 C JFNK stuff
295 SEAICEuseJFNK = .FALSE.
296 SEAICEuseIMEX = .FALSE.
297 SEAICE_JFNK_lsIter = UNSET_I
298 SEAICE_JFNK_tolIter = 100
299 C This should be the default for both JFNK and for LSR but in order
300 C to not jeopardize any existing results, and because it does not yet
301 C work for llc/cubed-sphere topologies, we require that the user knows
302 C what he/she is doing when turning this on.
303 CML SEAICE_OLx = OLx-2
304 CML SEAICE_OLy = OLy-2
305 SEAICE_OLx = UNSET_I
306 SEAICE_OLy = UNSET_I
307 JFNKgamma_nonlin = 1. _d -05
308 JFNKgamma_lin_min = 0.10 _d 0
309 JFNKgamma_lin_max = 0.99 _d 0
310 JFNKres_t = UNSET_RL
311 JFNKres_tFac = UNSET_RL
312 SEAICE_JFNKepsilon = 1. _d -06
313 C factor for inexact Newton forcing, .gt. 0 and .le. 1
314 SEAICE_JFNKphi = 1. _d 0
315 C exponent for inexact Newton forcing .gt. 1 and .le. 2
316 SEAICE_JFNKalpha = 1. _d 0
317 C Hunke, JCP, 2001 use 615 kg/m^2 for this, but does not recommend using it
318 SEAICE_evpDampC = -1. _d 0
319 SEAICE_zetaMin = 0. _d 0
320 SEAICE_zetaMaxFac = 2.5 _d 8
321 SEAICEpresH0 = 1. _d 0
322 SEAICEpresPow0 = 1
323 SEAICEpresPow1 = 1
324 SEAICE_evpTauRelax = -1. _d 0
325 SEAICE_elasticParm = 0.33333333333333333333333333 _d 0
326 SEAICE_evpAlpha = UNSET_RL
327 SEAICE_evpBeta = UNSET_RL
328 SEAICEnEVPstarSteps = UNSET_I
329 SEAICEaEVPcoeff = UNSET_RL
330 SEAICEaEVPcStar = UNSET_RL
331 SEAICEaEVPalphaMin = UNSET_RL
332 SEAICE_initialHEFF = ZERO
333 #ifdef SEAICE_ITD
334 C Coefficients used to calculate sea ice thickness category limits
335 C after Lipscomb et al. (2001, JGR), Equ. 22
336 C choose between
337 C - original parameters of Lipscomb et al. (2001):
338 C c1=3.0/N, c2=15*c1, c3=3.0
339 C - and a higher resolution of thin end of ITD:
340 C c1=1.5/N, c2=42*c1, c3=3.3
341 Hlimit_c1 = 3.0
342 Hlimit_c2 = 15.
343 Hlimit_c3 = 3.0
344 #endif
345 SEAICE_rhoIce = 0.91 _d +03
346 SEAICE_rhoSnow = 330. _d 0
347 ICE2WATR = UNSET_RL
348 SEAICE_drag = 0.002 _d 0
349 OCEAN_drag = 0.001 _d 0
350 SEAICE_waterDrag = 5.5 _d 0
351 SEAICE_dryIceAlb = 0.75 _d 0
352 SEAICE_wetIceAlb = 0.66 _d 0
353 SEAICE_drySnowAlb = 0.84 _d 0
354 SEAICE_wetSnowAlb = 0.7 _d 0
355 HO = 0.5 _d 0
356 SEAICE_drag_south = UNSET_RL
357 SEAICE_waterDrag_south = UNSET_RL
358 SEAICE_dryIceAlb_south = UNSET_RL
359 SEAICE_wetIceAlb_south = UNSET_RL
360 SEAICE_drySnowAlb_south = UNSET_RL
361 SEAICE_wetSnowAlb_south = UNSET_RL
362 HO_south = UNSET_RL
363 SEAICE_wetAlbTemp = -1. _d -3
364 #ifdef SEAICE_EXTERNAL_FLUXES
365 SEAICE_waterAlbedo = UNSET_RL
366 #else /* if undef SEAICE_EXTERNAL_FLUXES */
367 SEAICE_waterAlbedo = 0.1 _d +00
368 #endif /* SEAICE_EXTERNAL_FLUXES */
369 SEAICE_strength = 2.75 _d +04
370 SEAICE_cStar = 20. _d 0
371 SEAICEpressReplFac = 1. _d 0
372 SEAICE_eccen = 2. _d 0
373 SEAICE_tensilFac = 0. _d 0
374 SEAICE_tensilDepth = 0. _d 0
375 C coefficients for flux computations/bulk formulae
376 SEAICE_dalton = 1.75 _d -03
377 #ifdef ALLOW_EXF
378 IF ( useEXF ) THEN
379 C Use parameters that have already been set in data.exf
380 C to be consistent
381 SEAICE_rhoAir = atmrho
382 SEAICE_cpAir = atmcp
383 SEAICE_lhEvap = flamb
384 SEAICE_lhFusion = flami
385 SEAICE_boltzmann = stefanBoltzmann
386 SEAICE_emissivity = ocean_emissivity
387 SEAICE_ice_emiss = ice_emissivity
388 SEAICE_snow_emiss = snow_emissivity
389 ELSE
390 #else
391 IF ( .TRUE. ) THEN
392 #endif /* ALLOW_EXF */
393 SEAICE_rhoAir = 1.3 _d 0
394 SEAICE_cpAir = 1004. _d 0
395 SEAICE_lhEvap = 2.50 _d 6
396 SEAICE_lhFusion = 3.34 _d 5
397 SEAICE_boltzmann = 5.670 _d -08
398 C old default value of 0.97001763668430343479
399 SEAICE_emissivity = 5.5 _d -08/5.670 _d -08
400 SEAICE_ice_emiss = SEAICE_emissivity
401 SEAICE_snow_emiss = SEAICE_emissivity
402 ENDIF
403 SEAICE_iceConduct = 2.1656 _d +00
404 SEAICE_snowConduct = 3.1 _d -01
405 SEAICE_snowThick = 0.15 _d 0
406 SEAICE_shortwave = 0.30 _d 0
407 SEAICE_salt0 = 0.0 _d 0
408 SEAICE_saltFrac = 0.0 _d 0
409 #ifdef SEAICE_ITD
410 C in case defined(SEAICE_ITD) MULTDIM = nITD (see SEAICE_SIZE.h)
411 c SEAICE_multDim = MULTDIM
412 C the switch MULTICATEGORY (and with it parameter MULTDIM) has been retired
413 C and SEAICE_multDim is now a runtime parameter;
414 C in case SEAICE_multDim is given in data.seaice it needs to be overwritten
415 C after PARM01 was read (see below)
416 SEAICE_multDim = nITD
417 SEAICE_PDF(1) = 1. _d 0
418 DO l=2,nITD
419 SEAICE_PDF(l) = 0. _d 0
420 ENDDO
421 #else
422 SEAICE_multDim = 1
423 DO l=1,nITD
424 SEAICE_PDF(l) = UNSET_RL
425 ENDDO
426 #endif
427 SEAICE_useMultDimSnow = .FALSE.
428 C default to be set later (ocean-seaice turbulent flux coeff):
429 SEAICE_mcPheeStepFunc = .FALSE.
430 SEAICE_mcPheeTaper = UNSET_RL
431 SEAICE_availHeatTaper = UNSET_RL
432 SEAICE_mcPheePiston = UNSET_RL
433 SEAICE_frazilFrac = UNSET_RL
434 SEAICE_gamma_t = UNSET_RL
435 SEAICE_gamma_t_frz = UNSET_RL
436 SEAICE_availHeatFrac = UNSET_RL
437 SEAICE_availHeatFracFrz = UNSET_RL
438 SEAICE_doOpenWaterGrowth=.TRUE.
439 SEAICE_doOpenWaterMelt=.FALSE.
440 SEAICE_areaLossFormula=1
441 SEAICE_areaGainFormula=1
442 SEAICE_tempFrz0 = 0.0901 _d 0
443 SEAICE_dTempFrz_dS = -0.0575 _d 0
444 C old default for constant freezing point
445 c SEAICE_tempFrz0 = -1.96 _d 0
446 c SEAICE_dTempFrz_dS = 0. _d 0
447 SEAICEstressFactor = 1. _d 0
448 SEAICE_tauAreaObsRelax = -999. _d 0
449 AreaFile = ' '
450 HsnowFile = ' '
451 HsaltFile = ' '
452 HeffFile = ' '
453 uIceFile = ' '
454 vIceFile = ' '
455 IMAX_TICE = 10
456 postSolvTempIter = 2
457 C LSR parameters
458 SEAICEuseLSR = .TRUE.
459 SEAICEusePicardAsPrecon = .FALSE.
460 SEAICE_LSRrelaxU = 0.95 _d 0
461 SEAICE_LSRrelaxV = 0.95 _d 0
462 SOLV_NCHECK= 2
463 SEAICEnonLinIterMax = UNSET_I
464 SEAICElinearIterMax = UNSET_I
465 SEAICEpreconNL_Iter = 0
466 SEAICEpreconLinIter = 10
467 #ifdef SEAICE_ALLOW_FREEDRIFT
468 LSR_mixIniGuess = 0
469 #else
470 LSR_mixIniGuess = -1
471 #endif
472 LSR_ERROR = 0.0001 _d 0
473 SEAICEuseMultiTileSolver = .FALSE.
474
475 SEAICE_area_floor = siEPS
476 SEAICE_area_reg = siEPS
477 SEAICE_hice_reg = 0.05 _d 0
478 SEAICE_area_max = 1.00 _d 0
479
480 SEAICE_airTurnAngle = 0.0 _d 0
481 SEAICE_waterTurnAngle = 0.0 _d 0
482 MIN_ATEMP = -50. _d 0
483 MIN_LWDOWN = 60. _d 0
484 MIN_TICE = -50. _d 0
485 SEAICE_deltaMin = UNSET_RL
486 SEAICE_EPS = 1. _d -10
487 SEAICE_EPS_SQ = -99999.
488
489 SEAICEwriteState = .FALSE.
490 SEAICE_monFreq = monitorFreq
491 SEAICE_dumpFreq = dumpFreq
492 SEAICE_taveFreq = taveFreq
493 #ifdef ALLOW_MNC
494 SEAICE_tave_mnc = timeave_mnc
495 SEAICE_dump_mnc = snapshot_mnc
496 SEAICE_mon_mnc = monitor_mnc
497 #else
498 SEAICE_tave_mnc = .FALSE.
499 SEAICE_dump_mnc = .FALSE.
500 SEAICE_mon_mnc = .FALSE.
501 #endif
502 SEAICE_debugPointI = UNSET_I
503 SEAICE_debugPointJ = UNSET_I
504
505 C- Retired parameters:
506 c LAD = 2
507 LAD = UNSET_I
508 NPSEUDOTIMESTEPS = UNSET_I
509 SOLV_MAX_ITERS = UNSET_I
510 SEAICEnewtonIterMax= UNSET_I
511 SEAICEkrylovIterMax= UNSET_I
512 JFNKgamma_nonlin = UNSET_RL
513 c SEAICE_sensHeat = 1.75 _d -03 * 1004 * 1.3
514 c SEAICE_sensHeat = 2.284 _d +00
515 SEAICE_sensHeat = UNSET_RL
516 c SEAICE_latentWater = 1.75 _d -03 * 2.500 _d 06 * 1.3
517 c SEAICE_latentWater = 5.6875 _d +03
518 SEAICE_latentWater = UNSET_RL
519 c SEAICE_latentIce = 1.75 _d -03 * 2.834 _d 06 * 1.3
520 c SEAICE_latentIce = 6.4474 _d +03
521 SEAICE_latentIce = UNSET_RL
522 SEAICE_salinity = UNSET_RL
523 SIsalFRAC = UNSET_RL
524 SIsal0 = UNSET_RL
525 IceAgeFile = ' '
526 c MAX_TICE = 30. _d 0
527 MAX_TICE = UNSET_RL
528 areaMin = UNSET_RL
529 hiceMin = UNSET_RL
530 A22 = UNSET_RL
531 areaMax = UNSET_RL
532 SEAICE_lhSublim = UNSET_RL
533 SEAICEadvAge = .TRUE.
534 SEAICEadvSchAge = UNSET_I
535 SEAICEdiffKhAge = UNSET_RL
536 IceAgeTrFile(1) = ' '
537 IceAgeTrFile(2) = ' '
538 IceAgeTrFile(3) = ' '
539 IceAgeTrFile(4) = ' '
540 SEAICEturbFluxFormula =UNSET_I
541 SEAICE_freeze = UNSET_RL
542 MAX_HEFF = UNSET_RL
543 SEAICEuseAB2 = .FALSE.
544 SEAICE_abEps = UNSET_RL
545 C- end retired parameters
546
547 #ifdef ALLOW_COST
548 locDate(1) = 0
549 locDate(2) = 0
550 # ifdef ALLOW_CAL
551 CALL CAL_GETDATE( -1, startTime, locDate, myThid )
552 # endif /* ALLOW_CAL */
553 mult_ice_export = 0. _d 0
554 mult_ice = 0. _d 0
555 costIceStart1 = locDate(1)
556 costIceStart2 = locDate(2)
557 costIceEnd1 = 0
558 costIceEnd2 = 0
559 cost_ice_flag = 1
560 SEAICE_clamp_salt = 27.5 _d 0
561 SEAICE_clamp_theta = 0.0001 _d 0
562 SEAICE_cutoff_area = 0.0001 _d 0
563 SEAICE_cutoff_heff = 0. _d 0
564 c
565 mult_smrsst = 0. _d 0
566 mult_smrsss = 0. _d 0
567 mult_smrarea = 0. _d 0
568 wsmrarea0 = 0.5 _d 0
569 wmean_smrarea = 0.5 _d 0
570 smrsstbarfile = 'smrsstbar'
571 smrsssbarfile = 'smrsssbar'
572 smrareabarfile = 'smrareabar'
573 smrareadatfile = ' '
574 smrarea_errfile = ' '
575 smrareastartdate1 = locDate(1)
576 smrareastartdate2 = locDate(2)
577 #endif /* ALLOW_COST */
578
579 #ifdef ALLOW_SITRACER
580 SItrNumInUse=SItrMaxNum
581 DO iTracer = 1, SItrMaxNum
582 SItrFile(iTracer) = ' '
583 SItrName(iTracer) = ' '
584 SItrNameLong(iTracer) = ' '
585 SItrUnit(iTracer) = ' '
586 SItrMate(iTracer) = 'HEFF'
587 SItrFromOcean0(iTracer) = ZERO
588 SItrFromOceanFrac(iTracer) = ZERO
589 SItrFromFlood0(iTracer) = ZERO
590 SItrFromFloodFrac(iTracer) = ZERO
591 SItrExpand0(iTracer) = ZERO
592 ENDDO
593 #endif /* ALLOW_SITRACER */
594 nRetired = 0
595
596 C Open and read the data.seaice file
597 WRITE(msgBuf,'(A)')
598 &' '
599 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
600 & SQUEEZE_RIGHT , myThid)
601 WRITE(msgBuf,'(A)') ' SEAICE_READPARMS: opening data.seaice'
602 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
603 & SQUEEZE_RIGHT , myThid)
604
605 CALL OPEN_COPY_DATA_FILE(
606 I 'data.seaice', 'SEAICE_READPARMS',
607 O iUnit,
608 I myThid )
609
610 C-- Read settings from model parameter file "data.seaice".
611 READ(UNIT=iUnit,NML=SEAICE_PARM01)
612
613 #ifdef ALLOW_COST
614 READ(UNIT=iUnit,NML=SEAICE_PARM02)
615 #endif /* ALLOW_COST */
616
617 #ifdef ALLOW_SITRACER
618 READ(UNIT=iUnit,NML=SEAICE_PARM03)
619 #endif /* ALLOW_SITRACER */
620
621 CLOSE(iUnit)
622
623 #ifdef SEAICE_ITD
624 C SEAICE_multDim has become a runtime parameter but if SEAICE_ITD is defined
625 C it needs to equal nITD because of shared code (mostly in seaice_growth.F).
626 C nITD is set in SEAICE_SIZE.h
627 SEAICE_multDim = nITD
628 #endif
629
630 WRITE(msgBuf,'(A)')
631 & ' SEAICE_READPARMS: finished reading data.seaice'
632 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
633 & SQUEEZE_RIGHT , myThid)
634
635 C-- Set default values (if not specified in data.seaice namelist)
636
637 C-- Default for regularizing Delta to remain backward compatible
638 IF ( SEAICE_deltaMin .EQ. UNSET_RL ) SEAICE_deltaMin = SEAICE_EPS
639
640 C-- If no PDF was prescribed use the default uniform pdf
641 tmp = SEAICE_multDim
642 DO l = 1, SEAICE_multDim
643 IF (SEAICE_PDF(l).EQ.UNSET_RL) SEAICE_PDF(l) = ONE/tmp
644 ENDDO
645 DO l = SEAICE_multDim+1, nITD
646 IF (SEAICE_PDF(l).EQ.UNSET_RL) SEAICE_PDF(l) = 0. _d 0
647 ENDDO
648
649 IF (ICE2WATR.EQ.UNSET_RL) ICE2WATR = SEAICE_rhoIce*recip_rhoConst
650 IF (SEAICE_drag_south .EQ. UNSET_RL)
651 & SEAICE_drag_south = SEAICE_drag
652 IF (SEAICE_waterDrag_south .EQ. UNSET_RL)
653 & SEAICE_waterDrag_south = SEAICE_waterDrag
654 IF (SEAICE_dryIceAlb_south .EQ. UNSET_RL)
655 & SEAICE_dryIceAlb_south = SEAICE_dryIceAlb
656 IF (SEAICE_wetIceAlb_south .EQ. UNSET_RL)
657 & SEAICE_wetIceAlb_south = SEAICE_wetIceAlb
658 IF (SEAICE_drySnowAlb_south .EQ. UNSET_RL)
659 & SEAICE_drySnowAlb_south = SEAICE_drySnowAlb
660 IF (SEAICE_wetSnowAlb_south .EQ. UNSET_RL)
661 & SEAICE_wetSnowAlb_south = SEAICE_wetSnowAlb
662 IF (HO_south .EQ. UNSET_RL)
663 & HO_south = HO
664
665 C Check that requested time step size is supported. The combination
666 C below is the only one that is supported at this time. Does not
667 C mean that something fancier will not work, just that it has not
668 C yet been tried nor thought through.
669 IF ( SEAICE_deltaTtherm .NE. dTtracerLev(1) .OR.
670 & SEAICE_deltaTdyn .LT. SEAICE_deltaTtherm .OR.
671 & (SEAICE_deltaTdyn/SEAICE_deltaTtherm) .NE.
672 & INT(SEAICE_deltaTdyn/SEAICE_deltaTtherm) ) THEN
673 WRITE(msgBuf,'(A)')
674 & 'Unsupported combination of SEAICE_deltaTtherm,'
675 CALL PRINT_ERROR( msgBuf , myThid)
676 WRITE(msgBuf,'(A)')
677 & ' SEAICE_deltaTdyn, and dTtracerLev(1)'
678 CALL PRINT_ERROR( msgBuf , myThid)
679 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
680 ENDIF
681 SEAICEuseEVP = .FALSE.
682 #ifdef SEAICE_ALLOW_EVP
683 C There are four ways to turn on EVP
684 C 1. original EVP (Hunke, 2001)
685 IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
686 C 2. modified EVP (Lemieux et al., 2012) or revised EVP (Bouillon
687 C et al., 2014) by setting alpha and beta
688 IF ( SEAICE_evpAlpha .NE. UNSET_RL
689 & .OR. SEAICE_evpBeta .NE. UNSET_RL ) SEAICEuseEVPstar = .TRUE.
690 C 3. adaptive EVP
691 IF ( SEAICEaEVPcoeff .NE. UNSET_RL ) SEAICEuseEVPstar = .TRUE.
692 C 4. modified EVP* (Lemieux et al., 2012) or revised EVP (Bouillon
693 C et al., 2014) by explicitly setting up specific flags
694 IF ( SEAICEuseEVPstar.OR.SEAICEuseEVPrev ) SEAICEuseEVP = .TRUE.
695 C if EVP is turned on, a couple of parameters need to be computed
696 IF ( SEAICEuseEVP ) THEN
697 IF ( (SEAICE_deltaTdyn/SEAICE_deltaTevp) .NE.
698 & INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) .AND.
699 & .NOT. (SEAICEuseEVPstar.OR.SEAICEuseEVPrev) ) THEN
700 WRITE(msgBuf,'(A)')
701 & 'SEAICE_deltaTevp must be a factor of SEAICE_deltaTdyn.'
702 CALL PRINT_ERROR( msgBuf , myThid)
703 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
704 ENDIF
705 IF ( SEAICE_elasticParm .LE. 0. _d 0 ) THEN
706 WRITE(msgBuf,'(A)')
707 & 'SEAICE_elasticParm must greater than 0.'
708 CALL PRINT_ERROR( msgBuf , myThid)
709 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
710 ENDIF
711 IF ( SEAICE_evpTauRelax .LE. 0. _d 0 )
712 & SEAICE_evpTauRelax = SEAICE_deltaTdyn*SEAICE_elasticParm
713 C default: evpAlpha = evpBeta
714 IF ( SEAICE_evpAlpha .NE. UNSET_RL .AND.
715 & SEAICE_evpBeta .EQ. UNSET_RL ) SEAICE_evpBeta = SEAICE_evpAlpha
716 IF ( SEAICE_evpBeta .NE. UNSET_RL .AND.
717 & SEAICE_evpAlpha .EQ. UNSET_RL ) SEAICE_evpAlpha = SEAICE_evpBeta
718 C derive other parameters
719 IF ( SEAICE_evpBeta .EQ. UNSET_RL ) THEN
720 SEAICE_evpBeta = SEAICE_deltaTdyn/SEAICE_deltaTevp
721 ELSE
722 SEAICE_deltaTevp = SEAICE_deltaTdyn/SEAICE_evpBeta
723 ENDIF
724 IF ( SEAICE_evpAlpha .EQ. UNSET_RL ) THEN
725 SEAICE_evpAlpha = 2. _d 0 * SEAICE_evpTauRelax/SEAICE_deltaTevp
726 ELSE
727 SEAICE_evpTauRelax = 0.5 _d 0 *SEAICE_evpAlpha*SEAICE_deltaTevp
728 ENDIF
729 C this turns on adaptive EVP
730 IF ( SEAICEaEVPcoeff .NE. UNSET_RL ) THEN
731 IF ( SEAICEaEVPcStar .EQ.UNSET_RL) SEAICEaEVPcStar =4. _d 0
732 IF (SEAICEaEVPalphaMin.EQ.UNSET_RL) SEAICEaEVPalphaMin=5. _d 0
733 C requires EVP* to work well, so make sure we set it here (commented out
734 C for now
735 CML SEAICEuseEVPstar = .TRUE.
736 CML SEAICEuseEVPrev = .TRUE.
737 ENDIF
738 C Check if all parameters are set.
739 ENDIF
740 #endif /* SEAICE_ALLOW_EVP */
741
742 #ifdef SEAICE_ALLOW_FREEDRIFT
743 IF ( SEAICEuseFREEDRIFT ) SEAICEuseEVP = .FALSE.
744 IF ( SEAICEuseFREEDRIFT ) THEN
745 WRITE(msgBuf,'(A,A)')
746 & 'WARNING FROM S/R SEAICE_READPARMS:',
747 & ' switch seaice from LSR or EVP to "free drift"'
748 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
749 & SQUEEZE_RIGHT , myThid)
750 ENDIF
751 #endif /* SEAICE_ALLOW_FREEDRIFT */
752
753 #ifndef SEAICE_ITD
754 IF ( .NOT.useHibler79IceStrength ) THEN
755 useHibler79IceStrength = .TRUE.
756 WRITE(msgBuf,'(A,A)')
757 & 'WARNING FROM S/R SEAICE_READPARMS:',
758 & ' resetting useHibler79IceStrength = .TRUE., because'
759 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
760 & SQUEEZE_RIGHT , myThid)
761 WRITE(msgBuf,'(A,A)')
762 & 'WARNING FROM S/R SEAICE_READPARMS:',
763 & ' SEAICE_ITD is not defined.'
764 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
765 & SQUEEZE_RIGHT , myThid)
766 ENDIF
767 #endif /* SEAICE_ITD */
768
769 C reset default SEAICEuseLSR according to parameters from namelist
770 SEAICEuseLSR = .NOT.SEAICEuseFREEDRIFT .AND. .NOT.SEAICEuseEVP
771 & .AND. .NOT.SEAICEuseJFNK .AND. .NOT. SEAICEuseKrylov
772 C allow SEAICEuseLSR = .TRUE. if used as a preconditioner for non-linear
773 C JFNK problem (and Krylov solver is not used)
774 IF ( SEAICEuseJFNK .AND. SEAICEusePicardAsPrecon .AND.
775 & .NOT. SEAICEuseKrylov ) SEAICEuseLSR = .TRUE.
776 IF ( SEAICEuseJFNK .AND. .NOT. SEAICEusePicardAsPrecon )
777 & SEAICEuseKrylov = .FALSE.
778
779 C Set different defaults for different solvers
780 IF ( SEAICEnonLinIterMax .EQ. UNSET_I ) THEN
781 C two nonlinear iterations correspond to the original modified
782 C Euler time stepping scheme of Zhang+Hibler (1997)
783 IF ( SEAICEuseLSR ) SEAICEnonLinIterMax = 2
784 IF ( SEAICEuseJFNK.OR.SEAICEuseKrylov ) SEAICEnonLinIterMax = 10
785 ENDIF
786 C Make sure that we have least two pseudo time steps for Picard-LSR
787 IF ( SEAICEuseLSR .AND. .NOT. SEAICEusePicardAsPrecon )
788 & SEAICEnonLinIterMax = MAX(SEAICEnonLinIterMax,2)
789
790 C- different defaults for different linear solvers
791 IF ( SEAICElinearIterMax .EQ. UNSET_I ) THEN
792 C maximum number of LSOR steps in default Picard solver
793 C (=previous default for retired SOLV_MAX_ITERS)
794 SEAICElinearIterMax = 1500
795 C the maximum number of Krylov dimensions of 50 is hard coded in
796 C S/R SEAICE_FGMRES, so that more than 50 linear iterations will
797 C restart GMRES
798 IF ( SEAICEuseJFNK.OR.SEAICEuseKrylov ) SEAICElinearIterMax = 10
799 ENDIF
800
801 C Turn line search with JFNK solver off by default by making this
802 C number much larger than the maximum allowed Newton iterations
803 IF ( SEAICE_JFNK_lsIter .EQ. UNSET_I )
804 & SEAICE_JFNK_lsIter = 2*SEAICEnewtonIterMax
805
806 C So far we use the restrictive additive Schwartz method only in
807 C the preconditioner for the Krylov methods by default
808 IF ( SEAICE_OLx.EQ.UNSET_I ) THEN
809 SEAICE_OLx = 0
810 IF ( SEAICEuseJFNK .OR. SEAICEuseKrylov ) SEAICE_OLx = OLx-2
811 ENDIF
812 IF ( SEAICE_OLy.EQ.UNSET_I ) THEN
813 SEAICE_OLy = 0
814 IF ( SEAICEuseJFNK .OR. SEAICEuseKrylov ) SEAICE_OLy = OLy-2
815 ENDIF
816
817 C- The old ways of specifying mcPheeTaper, mcPheePiston & frazilFrac:
818 C a) prevent multiple specification of the same coeff;
819 C b) if specified, then try to recover old way of setting & default.
820 IF ( SEAICE_mcPheeTaper .EQ. UNSET_RL ) THEN
821 IF ( SEAICE_availHeatTaper.EQ.UNSET_RL ) THEN
822 SEAICE_mcPheeTaper = 0.0 _d 0
823 ELSE
824 SEAICE_mcPheeTaper = SEAICE_availHeatTaper
825 ENDIF
826 ELSEIF ( SEAICE_availHeatTaper.NE.UNSET_RL ) THEN
827 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
828 & 'both SEAICE_mcPheeTaper & SEAICE_availHeatTaper'
829 CALL PRINT_ERROR( msgBuf , myThid)
830 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
831 ENDIF
832
833 C- set SEAICE_frazilFrac if not yet done
834 IF ( SEAICE_gamma_t_frz .NE. UNSET_RL ) THEN
835 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
836 SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t_frz
837 ELSE
838 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
839 & 'both SEAICE_frazilFrac & SEAICE_gamma_t_frz'
840 CALL PRINT_ERROR( msgBuf , myThid)
841 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
842 ENDIF
843 ENDIF
844 IF ( SEAICE_availHeatFracFrz.NE.UNSET_RL ) THEN
845 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
846 SEAICE_frazilFrac = SEAICE_availHeatFracFrz
847 ELSE
848 IF ( SEAICE_gamma_t_frz .EQ. UNSET_RL ) THEN
849 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
850 & 'both SEAICE_frazilFrac & SEAICE_availHeatFracFrz'
851 ELSE
852 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
853 & 'both SEAICE_gamma_t_frz & SEAICE_availHeatFracFrz'
854 ENDIF
855 CALL PRINT_ERROR( msgBuf , myThid)
856 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
857 ENDIF
858 ENDIF
859 C the default for SEAICE_gamma_t_frz use to be SEAICE_gamma_t:
860 IF ( SEAICE_gamma_t .NE. UNSET_RL .AND.
861 & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
862 SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
863 ENDIF
864 C the default for SEAICE_availHeatFracFrz use to be SEAICE_availHeatFrac:
865 IF ( SEAICE_availHeatFrac.NE.UNSET_RL .AND.
866 & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
867 SEAICE_frazilFrac = SEAICE_availHeatFrac
868 ENDIF
869 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
870 SEAICE_frazilFrac = 1. _d 0
871 ENDIF
872
873 C- start by setting SEAICE_availHeatFrac (used in seaice_init_fixed.F
874 C to set SEAICE_mcPheePiston once drF is known)
875 IF ( SEAICE_gamma_t .NE. UNSET_RL ) THEN
876 IF ( SEAICE_availHeatFrac.EQ.UNSET_RL ) THEN
877 SEAICE_availHeatFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
878 ELSE
879 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
880 & 'both SEAICE_gamma_t & SEAICE_availHeatFrac'
881 CALL PRINT_ERROR( msgBuf , myThid)
882 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
883 ENDIF
884 ENDIF
885 IF ( SEAICE_mcPheePiston .NE. UNSET_RL .AND.
886 & SEAICE_availHeatFrac.NE. UNSET_RL ) THEN
887 IF ( SEAICE_gamma_t .EQ. UNSET_RL ) THEN
888 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
889 & 'both SEAICE_mcPheePiston & SEAICE_availHeatFrac'
890 ELSE
891 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
892 & 'both SEAICE_mcPheePiston & SEAICE_gamma_t'
893 ENDIF
894 CALL PRINT_ERROR( msgBuf , myThid)
895 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
896 ENDIF
897
898 IF ( useThSice ) THEN
899 C If the thsice package with the Winton thermodynamics is used
900 C is does not make sense to have the following parameters defined,
901 C so we reset them here
902 usePW79thermodynamics = .FALSE.
903 SEAICEadvHeff = .FALSE.
904 SEAICEadvArea = .FALSE.
905 SEAICEadvSnow = .FALSE.
906 SEAICEadvSalt = .FALSE.
907 ENDIF
908 C Set advection schemes to some sensible values if not done in data.seaice
909 IF ( SEAICEadvSchArea .EQ. UNSET_I )
910 & SEAICEadvSchArea = SEAICEadvSchHeff
911 IF ( SEAICEadvSchArea .EQ. UNSET_I )
912 & SEAICEadvSchArea = SEAICEadvScheme
913 IF ( SEAICEadvScheme .NE. SEAICEadvSchArea )
914 & SEAICEadvScheme = SEAICEadvSchArea
915 IF ( SEAICEadvSchHeff .EQ. UNSET_I )
916 & SEAICEadvSchHeff = SEAICEadvSchArea
917 IF ( SEAICEadvSchSnow .EQ. UNSET_I )
918 & SEAICEadvSchSnow = SEAICEadvSchHeff
919 IF ( SEAICEadvSchSalt .EQ. UNSET_I )
920 & SEAICEadvSchSalt = SEAICEadvSchHeff
921 C Set diffusivity to some sensible values if not done in data.seaice
922 IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
923 & SEAICEdiffKhArea = SEAICEdiffKhHeff
924 IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
925 & SEAICEdiffKhArea = 0. _d 0
926 IF ( SEAICEdiffKhHeff .EQ. UNSET_RL )
927 & SEAICEdiffKhHeff = SEAICEdiffKhArea
928 IF ( SEAICEdiffKhSnow .EQ. UNSET_RL )
929 & SEAICEdiffKhSnow = SEAICEdiffKhHeff
930 IF ( SEAICEdiffKhSalt .EQ. UNSET_RL )
931 & SEAICEdiffKhSalt = SEAICEdiffKhHeff
932 IF ( SEAICE_EPS_SQ .EQ. -99999. )
933 & SEAICE_EPS_SQ = SEAICE_EPS * SEAICE_EPS
934
935 C- Retired parameters
936 IF ( SEAICEnewtonIterMax .NE. UNSET_I ) THEN
937 nRetired = nRetired + 1
938 WRITE(msgBuf,'(A,A)')
939 & 'S/R SEAICE_READPARMS: "SEAICEnewtonIterMax" ',
940 & 'is no longer allowed in file "data.seaice"'
941 CALL PRINT_ERROR( msgBuf, myThid )
942 WRITE(msgBuf,'(A)')
943 & 'S/R SEAICE_READPARMS: use "SEAICEnonLinIterMax" instead'
944 CALL PRINT_ERROR( msgBuf, myThid )
945 ENDIF
946 IF ( SEAICEkrylovIterMax .NE. UNSET_I ) THEN
947 nRetired = nRetired + 1
948 WRITE(msgBuf,'(A,A)')
949 & 'S/R SEAICE_READPARMS: "SEAICEkrylovIterMax" ',
950 & 'is no longer allowed in file "data.seaice"'
951 CALL PRINT_ERROR( msgBuf, myThid )
952 WRITE(msgBuf,'(A)')
953 & 'S/R SEAICE_READPARMS: use "SEAICElinearIterMax" instead'
954 CALL PRINT_ERROR( msgBuf, myThid )
955 ENDIF
956 IF ( NPSEUDOTIMESTEPS .NE. UNSET_I ) THEN
957 nRetired = nRetired + 1
958 WRITE(msgBuf,'(A,A)')
959 & 'S/R SEAICE_READPARMS: "NPSEUDOTIMESTEPS" ',
960 & 'is no longer allowed in file "data.seaice"'
961 CALL PRINT_ERROR( msgBuf, myThid )
962 WRITE(msgBuf,'(A)')
963 & 'S/R SEAICE_READPARMS: use "SEAICEnonLinIterMax" instead'
964 CALL PRINT_ERROR( msgBuf, myThid )
965 ENDIF
966 IF ( SOLV_MAX_ITERS .NE. UNSET_I ) THEN
967 nRetired = nRetired + 1
968 WRITE(msgBuf,'(A,A)')
969 & 'S/R SEAICE_READPARMS: "SOLV_MAX_ITERS" ',
970 & 'is no longer allowed in file "data.seaice"'
971 CALL PRINT_ERROR( msgBuf, myThid )
972 WRITE(msgBuf,'(A)')
973 & 'S/R SEAICE_READPARMS: use "SEAICElinearIterMax" instead'
974 CALL PRINT_ERROR( msgBuf, myThid )
975 ENDIF
976 IF ( JFNKgamma_nonlin .NE. UNSET_RL ) THEN
977 nRetired = nRetired + 1
978 WRITE(msgBuf,'(A,A)')
979 & 'S/R SEAICE_READPARMS: "JFNKgamma_nonlin" ',
980 & 'is no longer allowed in file "data.seaice"'
981 CALL PRINT_ERROR( msgBuf, myThid )
982 WRITE(msgBuf,'(A)')
983 & 'S/R SEAICE_READPARMS: use "SEAICEnonLinTol" instead'
984 CALL PRINT_ERROR( msgBuf, myThid )
985 ENDIF
986 IF ( SEAICE_sensHeat .NE. UNSET_RL ) THEN
987 nRetired = nRetired + 1
988 WRITE(msgBuf,'(A,A)')
989 & 'S/R SEAICE_READPARMS: "SEAICE_sensHeat" ',
990 & 'is no longer allowed in file "data.seaice"'
991 CALL PRINT_ERROR( msgBuf, myThid )
992 WRITE(msgBuf,'(A,A)')
993 & 'S/R SEAICE_READPARMS: set "SEAICE_cpAir", ',
994 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
995 CALL PRINT_ERROR( msgBuf, myThid )
996 ENDIF
997 IF ( SEAICE_latentWater .NE. UNSET_RL ) THEN
998 nRetired = nRetired + 1
999 WRITE(msgBuf,'(A,A)')
1000 & 'S/R SEAICE_READPARMS: "SEAICE_latentWater" ',
1001 & 'is no longer allowed in file "data.seaice"'
1002 CALL PRINT_ERROR( msgBuf, myThid )
1003 WRITE(msgBuf,'(A,A)')
1004 & 'S/R SEAICE_READPARMS: set "SEAICE_lhEvap", ',
1005 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
1006 CALL PRINT_ERROR( msgBuf, myThid )
1007 ENDIF
1008 IF ( SEAICE_latentIce .NE. UNSET_RL ) THEN
1009 nRetired = nRetired + 1
1010 WRITE(msgBuf,'(A,A)')
1011 & 'S/R SEAICE_READPARMS: "SEAICE_latentIce" ',
1012 & 'is no longer allowed in file "data.seaice"'
1013 CALL PRINT_ERROR( msgBuf, myThid )
1014 WRITE(msgBuf,'(A,A)')
1015 & 'S/R SEAICE_READPARMS: set "SEAICE_lhFusion", ',
1016 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
1017 CALL PRINT_ERROR( msgBuf, myThid )
1018 ENDIF
1019 IF ( SEAICE_freeze .NE. UNSET_RL ) THEN
1020 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1021 & '"SEAICE_freeze" no longer allowed in file "data.seaice"'
1022 CALL PRINT_ERROR( msgBuf, myThid )
1023 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1024 & 'set instead "SEAICE_tempFrz0" and "SEAICE_dTempFrz_dS"'
1025 CALL PRINT_ERROR( msgBuf, myThid )
1026 ENDIF
1027 IF ( SEAICE_salinity .NE. UNSET_RL ) THEN
1028 nRetired = nRetired + 1
1029 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1030 & '"SEAICE_salinity" is no longer allowed in file "data.seaice"'
1031 CALL PRINT_ERROR( msgBuf, myThid )
1032 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1033 & 'set "SEAICE_saltFrac" instead'
1034 CALL PRINT_ERROR( msgBuf, myThid )
1035 ENDIF
1036 IF ( SIsalFrac .NE. UNSET_RL ) THEN
1037 nRetired = nRetired + 1
1038 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1039 & '"SIsalFrac" is no longer allowed in file "data.seaice"'
1040 CALL PRINT_ERROR( msgBuf, myThid )
1041 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1042 & 'set "SEAICE_saltFrac" instead'
1043 CALL PRINT_ERROR( msgBuf, myThid )
1044 ENDIF
1045 IF ( SIsal0 .NE. UNSET_RL ) THEN
1046 nRetired = nRetired + 1
1047 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1048 & '"SIsal0" is no longer allowed in file "data.seaice"'
1049 CALL PRINT_ERROR( msgBuf, myThid )
1050 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1051 & 'set "SEAICE_salt0" instead'
1052 CALL PRINT_ERROR( msgBuf, myThid )
1053 ENDIF
1054 IF ( IceAgeFile .NE. ' ' ) THEN
1055 nRetired = nRetired + 1
1056 WRITE(msgBuf,'(A,A)')
1057 & 'S/R SEAICE_READPARMS: "IceAgeFile" ',
1058 & 'is no longer allowed in file "data.seaice"'
1059 CALL PRINT_ERROR( msgBuf, myThid )
1060 WRITE(msgBuf,'(A,A)')
1061 & 'S/R SEAICE_READPARMS: replaced by ',
1062 & '"IceAgeTrFile(SEAICE_num)" array '
1063 CALL PRINT_ERROR( msgBuf, myThid )
1064 ENDIF
1065 IF ( areaMax .NE. UNSET_RL ) THEN
1066 nRetired = nRetired + 1
1067 WRITE(msgBuf,'(A,A)')
1068 & 'S/R SEAICE_READPARMS: "areaMax" ',
1069 & 'is no longer allowed in file "data.seaice"'
1070 CALL PRINT_ERROR( msgBuf, myThid )
1071 WRITE(msgBuf,'(A,A)')
1072 & 'S/R SEAICE_READPARMS: replaced by ',
1073 & '"SEAICE_area_max"'
1074 CALL PRINT_ERROR( msgBuf, myThid )
1075 ENDIF
1076 IF ( areaMin .NE. UNSET_RL ) THEN
1077 nRetired = nRetired + 1
1078 WRITE(msgBuf,'(A,A)')
1079 & 'S/R SEAICE_READPARMS: "areaMin" ',
1080 & 'is no longer allowed in file "data.seaice"'
1081 CALL PRINT_ERROR( msgBuf, myThid )
1082 WRITE(msgBuf,'(A,A)')
1083 & 'S/R SEAICE_READPARMS: replaced by ',
1084 & '"SEAICE_area_reg" for regularization and ',
1085 & '"SEAICE_area_floor" setting a lower bound'
1086 CALL PRINT_ERROR( msgBuf, myThid )
1087 ENDIF
1088 IF (SEAICE_lhSublim .NE. UNSET_RL ) THEN
1089 nRetired = nRetired + 1
1090 WRITE(msgBuf,'(A,A)')
1091 & 'S/R SEAICE_READPARMS: "SEAICE_lhSublim" ',
1092 & 'is no longer allowed in file "data.seaice"'
1093 CALL PRINT_ERROR( msgBuf, myThid )
1094 WRITE(msgBuf,'(A,A)')
1095 & 'S/R SEAICE_READPARMS: specify ',
1096 & '"SEAICE_lhFusion" and "SEAICE_lhEvap" instead'
1097 CALL PRINT_ERROR( msgBuf, myThid )
1098 ENDIF
1099 IF ( A22 .NE. UNSET_RL ) THEN
1100 nRetired = nRetired + 1
1101 WRITE(msgBuf,'(A,A)')
1102 & 'S/R SEAICE_READPARMS: "A22" ',
1103 & 'is no longer allowed in file "data.seaice"'
1104 CALL PRINT_ERROR( msgBuf, myThid )
1105 WRITE(msgBuf,'(A,A)')
1106 & 'S/R SEAICE_READPARMS: replaced by ',
1107 & '"SEAICE_area_reg" for regularization'
1108 CALL PRINT_ERROR( msgBuf, myThid )
1109 ENDIF
1110 IF ( LAD .NE. UNSET_I ) THEN
1111 nRetired = nRetired + 1
1112 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: "LAD" ',
1113 & 'is no longer allowed in file "data.seaice"'
1114 CALL PRINT_ERROR( msgBuf, myThid )
1115 WRITE(msgBuf,'(A,A)') 'always use modified Euler step ',
1116 & '(LAD==2) since Leap frog code (LAD==1) is gone.'
1117 CALL PRINT_ERROR( msgBuf, myThid )
1118 ENDIF
1119 IF ( MAX_TICE .NE. UNSET_RL ) THEN
1120 nRetired = nRetired + 1
1121 WRITE(msgBuf,'(A,A)')
1122 & 'S/R SEAICE_READPARMS: "MAX_TICE" ',
1123 & 'is no longer allowed in file "data.seaice"'
1124 CALL PRINT_ERROR( msgBuf, myThid )
1125 ENDIF
1126 IF ( hiceMin .NE. UNSET_RL ) THEN
1127 nRetired = nRetired + 1
1128 WRITE(msgBuf,'(A,A)')
1129 & 'S/R SEAICE_READPARMS: "hiceMin" ',
1130 & 'is no longer allowed in file "data.seaice"'
1131 CALL PRINT_ERROR( msgBuf, myThid )
1132 WRITE(msgBuf,'(A,A)')
1133 & 'S/R SEAICE_READPARMS: replaced by ',
1134 & '"SEAICE_hice_reg" for regularization'
1135 CALL PRINT_ERROR( msgBuf, myThid )
1136 ENDIF
1137 IF ( .NOT. SEAICEadvAge ) THEN
1138 nRetired = nRetired + 1
1139 WRITE(msgBuf,'(A,A)')
1140 & 'S/R SEAICE_READPARMS: "SEAICEadvAge" ',
1141 & 'is no longer allowed in file "data.seaice"'
1142 CALL PRINT_ERROR( msgBuf, myThid )
1143 WRITE(msgBuf,'(A,A)')
1144 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1145 & 'replaced and extended SEAICE_AGE'
1146 CALL PRINT_ERROR( msgBuf, myThid )
1147 ENDIF
1148 IF ( SEAICEadvSchAge .NE. UNSET_I ) THEN
1149 nRetired = nRetired + 1
1150 WRITE(msgBuf,'(A,A)')
1151 & 'S/R SEAICE_READPARMS: "SEAICEadvSchAge" ',
1152 & 'is no longer allowed in file "data.seaice"'
1153 CALL PRINT_ERROR( msgBuf, myThid )
1154 WRITE(msgBuf,'(A,A)')
1155 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1156 & 'replaced and extended SEAICE_AGE'
1157 CALL PRINT_ERROR( msgBuf, myThid )
1158 ENDIF
1159 IF ( SEAICEdiffKhAge .NE. UNSET_RL ) THEN
1160 nRetired = nRetired + 1
1161 WRITE(msgBuf,'(A,A)')
1162 & 'S/R SEAICE_READPARMS: "SEAICEdiffKhAge" ',
1163 & 'is no longer allowed in file "data.seaice"'
1164 CALL PRINT_ERROR( msgBuf, myThid )
1165 WRITE(msgBuf,'(A,A)')
1166 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1167 & 'replaced and extended SEAICE_AGE'
1168 CALL PRINT_ERROR( msgBuf, myThid )
1169 ENDIF
1170 IF ( ( IceAgeTrFile(1) .NE. ' ' ).OR.
1171 & ( IceAgeTrFile(2) .NE. ' ' ).OR.
1172 & ( IceAgeTrFile(3) .NE. ' ' ).OR.
1173 & ( IceAgeTrFile(4) .NE. ' ' ) ) THEN
1174 nRetired = nRetired + 1
1175 WRITE(msgBuf,'(A,A)')
1176 & 'S/R SEAICE_READPARMS: "IceAgeTrFile" ',
1177 & 'is no longer allowed in file "data.seaice"'
1178 CALL PRINT_ERROR( msgBuf, myThid )
1179 WRITE(msgBuf,'(A,A)')
1180 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1181 & 'replaced and extended SEAICE_AGE'
1182 CALL PRINT_ERROR( msgBuf, myThid )
1183 ENDIF
1184 IF ( SEAICEturbFluxFormula .NE. UNSET_I ) THEN
1185 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1186 & '"SEAICEturbFluxFormula" no longer allowed in "data.seaice"'
1187 CALL PRINT_ERROR( msgBuf, myThid )
1188 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1189 & ' Set instead "SEAICE_mcPheePiston" and "SEAICE_frazilFrac"'
1190 CALL PRINT_ERROR( msgBuf, myThid )
1191 ENDIF
1192 IF ( MAX_HEFF .NE. UNSET_RL ) THEN
1193 nRetired = nRetired + 1
1194 WRITE(msgBuf,'(A,A)')
1195 & 'S/R SEAICE_READPARMS: "MAX_HEFF" ',
1196 & 'is no longer allowed in file "data.seaice"'
1197 CALL PRINT_ERROR( msgBuf, myThid )
1198 ENDIF
1199 IF ( SEAICEuseAB2 ) THEN
1200 nRetired = nRetired + 1
1201 WRITE(msgBuf,'(A,A)')
1202 & 'S/R SEAICE_READPARMS: "SEAICEuseAB2" ',
1203 & 'is no longer allowed in file "data.seaice"'
1204 CALL PRINT_ERROR( msgBuf, myThid )
1205 ENDIF
1206 IF ( SEAICE_abEps .NE. UNSET_RL ) THEN
1207 nRetired = nRetired + 1
1208 WRITE(msgBuf,'(A,A)')
1209 & 'S/R SEAICE_READPARMS: "SEAICE_abEps" ',
1210 & 'is no longer allowed in file "data.seaice"'
1211 CALL PRINT_ERROR( msgBuf, myThid )
1212 ENDIF
1213 IF ( nRetired .GT. 0 ) THEN
1214 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ',
1215 & 'Error reading parameter file "data.seaice"'
1216 CALL PRINT_ERROR( msgBuf, myThid )
1217 WRITE(msgBuf,'(A)')
1218 & 'some out of date parameters were found in the namelist'
1219 CALL PRINT_ERROR( msgBuf, myThid )
1220 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
1221 ENDIF
1222
1223 C-- Now set-up any remaining parameters that result from other params
1224
1225 C- convert SEAICE_doOpenWaterGrowth/Melt logical switch to numerical
1226 C facOpenGrow/facOpenMelt
1227 facOpenGrow = 0. _d 0
1228 facOpenMelt = 0. _d 0
1229 IF (SEAICE_doOpenWaterGrowth) facOpenGrow = 1. _d 0
1230 IF (SEAICE_doOpenWaterMelt) facOpenMelt = 1. _d 0
1231
1232 C- Set Output type flags :
1233 SEAICE_tave_mdsio = .TRUE.
1234 SEAICE_dump_mdsio = .TRUE.
1235 SEAICE_mon_stdio = .TRUE.
1236 #ifdef ALLOW_MNC
1237 IF (useMNC) THEN
1238 IF ( .NOT.outputTypesInclusive
1239 & .AND. SEAICE_tave_mnc ) SEAICE_tave_mdsio = .FALSE.
1240 IF ( .NOT.outputTypesInclusive
1241 & .AND. SEAICE_dump_mnc ) SEAICE_dump_mdsio = .FALSE.
1242 IF ( .NOT.outputTypesInclusive
1243 & .AND. SEAICE_mon_mnc ) SEAICE_mon_stdio = .FALSE.
1244 ENDIF
1245 #endif
1246
1247 C- store value of logical flag which might be changed in AD mode
1248 #ifdef ALLOW_AUTODIFF
1249 SEAICEuseFREEDRIFTinFwdMode = SEAICEuseFREEDRIFT
1250 SEAICEuseDYNAMICSinFwdMode = SEAICEuseDYNAMICS
1251 #endif /* ALLOW_AUTODIFF */
1252
1253 C Check the consitency of a few parameters
1254 IF ( SEAICE_emissivity .LT. 1. _d -04 ) THEN
1255 WRITE(msgBuf,'(2A)')
1256 & 'SEAICE_emissivity is no longer emissivity*(boltzmann ',
1257 & 'constant) but really an emissivity.'
1258 CALL PRINT_ERROR( msgBuf , myThid)
1259 WRITE(msgBuf,'(2A)')
1260 & 'Typical values are near 1 ',
1261 & '(default is 5.5/5.67=0.9700176...).'
1262 CALL PRINT_ERROR( msgBuf , myThid)
1263 WRITE(msgBuf,'(A,E13.6,A)')
1264 & 'Please change SEAICE_emissivity in data.seaice to ',
1265 & SEAICE_emissivity, '/5.67e-8.'
1266 CALL PRINT_ERROR( msgBuf , myThid)
1267 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
1268 ENDIF
1269
1270 IF ( DIFF1 .EQ. UNSET_RL ) THEN
1271 DIFF1 = 0. _d 0
1272 chkFlag = .FALSE.
1273 IF ( SEAICEadvScheme.EQ.2 ) THEN
1274 C-- Since DIFF1 default value has been changed (2011/05/29), issue a warning
1275 C in case using centered avection scheme without any diffusion:
1276 IF ( SEAICEadvHeff .AND. SEAICEdiffKhHeff .EQ. 0. _d 0 ) THEN
1277 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1278 & 'will use AdvScheme = 2 for HEFF without any diffusion'
1279 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1280 & SQUEEZE_RIGHT, myThid )
1281 chkFlag = .TRUE.
1282 ENDIF
1283 IF ( SEAICEadvArea .AND. SEAICEdiffKhArea .EQ. 0. _d 0 ) THEN
1284 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1285 & 'will use AdvScheme = 2 for AREA without any diffusion'
1286 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1287 & SQUEEZE_RIGHT, myThid )
1288 chkFlag = .TRUE.
1289 ENDIF
1290 IF ( SEAICEadvSnow .AND. SEAICEdiffKhSnow .EQ. 0. _d 0 ) THEN
1291 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1292 & 'will use AdvScheme = 2 for HSNOW without any diffusion'
1293 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1294 & SQUEEZE_RIGHT, myThid )
1295 chkFlag = .TRUE.
1296 ENDIF
1297 IF ( SEAICEadvSalt .AND. SEAICEdiffKhSalt .EQ. 0. _d 0 ) THEN
1298 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1299 & 'will use AdvScheme = 2 for HSALT without any diffusion'
1300 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1301 & SQUEEZE_RIGHT, myThid )
1302 chkFlag = .TRUE.
1303 ENDIF
1304 IF ( chkFlag ) THEN
1305 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1306 & 'since DIFF1 is set to 0 (= new DIFF1 default value)'
1307 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1308 & SQUEEZE_RIGHT, myThid )
1309 ENDIF
1310 ENDIF
1311 ENDIF
1312
1313 _END_MASTER(myThid)
1314
1315 C-- Everyone else must wait for the parameters to be loaded
1316 _BARRIER
1317
1318 RETURN
1319 END

  ViewVC Help
Powered by ViewVC 1.1.22