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

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

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


Revision 1.2 - (show annotations) (download)
Fri Apr 27 22:25:23 2012 UTC (13 years, 3 months ago) by dimitri
Branch: MAIN
Changes since 1.1: +26 -2 lines
first check in of itd code

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_readparms.F,v 1.120 2012/03/14 22:55:53 heimbach Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SEAICE_READPARMS
8 C !INTERFACE:
9 SUBROUTINE SEAICE_READPARMS( myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R SEAICE_READPARMS
14 C | o Routine to read in file data.seaice
15 C *==========================================================*
16 C \ev
17
18 C !USES:
19 IMPLICIT NONE
20
21 C === Global variables ===
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26 #include "SEAICE_SIZE.h"
27 #include "SEAICE_PARAMS.h"
28 #include "SEAICE_TRACER.h"
29 #ifdef ALLOW_COST
30 # include "SEAICE_COST.h"
31 #endif
32 #ifdef ALLOW_MNC
33 # include "MNC_PARAMS.h"
34 #endif
35 #ifdef ALLOW_EXF
36 # include "EXF_CONSTANTS.h"
37 #endif /* ALLOW_EXF */
38 #ifdef ALLOW_CAL
39 # include "cal.h"
40 #endif
41
42 C !INPUT/OUTPUT PARAMETERS:
43 C === Routine arguments ===
44 C myThid :: my Thread Id. number
45 INTEGER myThid
46 CEOP
47
48 C !LOCAL VARIABLES:
49 C === Local variables ===
50 C msgBuf :: Informational/error message buffer
51 C iUnit :: Work variable for IO unit number
52 CHARACTER*(MAX_LEN_MBUF) msgBuf
53 LOGICAL chkFlag
54 INTEGER iUnit
55 #ifdef ALLOW_SITRACER
56 INTEGER iTracer
57 #endif
58 INTEGER nRetired
59
60 C- Old parameters (to be retired one day):
61 _RL SEAICE_availHeatTaper
62 _RL SEAICE_gamma_t, SEAICE_gamma_t_frz, SEAICE_availHeatFracFrz
63
64 C- Retired parameters:
65 C MAX_TICE :: maximum ice temperature (deg C)
66 C LAD :: time stepping used for sea-ice advection:
67 C 1 = LEAPFROG, 2 = BACKWARD EULER.
68 C SEAICE_freeze :: FREEZING TEMP. OF SEA WATER
69 _RL SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce
70 _RL SEAICE_salinity, SIsalFRAC, SIsal0
71 _RL SEAICE_lhSublim, SEAICE_freeze
72 _RL areaMin, areaMax, A22, hiceMin, MAX_TICE
73 LOGICAL SEAICEadvAge
74 INTEGER SEAICEadvSchAge, LAD, SEAICEturbFluxFormula
75 _RL SEAICEdiffKhAge
76 CHARACTER*(MAX_LEN_MBUF) IceAgeFile, IceAgeTrFile(4)
77
78 C-- SEAICE parameters
79 NAMELIST /SEAICE_PARM01/
80 & SEAICEwriteState, SEAICEuseDYNAMICS, SEAICEuseTEM,
81 & SEAICEuseEVPpickup, SEAICEuseFluxForm,
82 & SEAICEuseMetricTerms,
83 & useHB87stressCoupling, SEAICEuseFlooding,
84 & usePW79thermodynamics, useMaykutSatVapPoly,
85 & SEAICErestoreUnderIce,
86 & SEAICE_salinityTracer, SEAICE_ageTracer,
87 & SEAICEadvHeff, SEAICEadvArea, SEAICEadvSnow,
88 & SEAICEadvSalt, SEAICEadvAge,
89 & SEAICE_clipVelocities, SEAICE_maskRHS, SEAICE_no_slip,
90 & LAD, IMAX_TICE, postSolvTempIter,
91 & SEAICEadvScheme, SEAICEadvSchArea,
92 & SEAICEadvSchHeff, SEAICEadvSchSnow,
93 & SEAICEadvSchSalt, SEAICEadvSchAge,
94 & SEAICEdiffKhHeff, SEAICEdiffKhSnow, SEAICEdiffKhArea,
95 & SEAICEdiffKhSalt, SEAICEdiffKhAge,
96 & SEAICE_deltaTtherm, SEAICE_deltaTdyn,
97 & SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax,
98 & SEAICE_evpDampC, SEAICE_zetaMin, SEAICE_zetaMaxFac,
99 & SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq,
100 & SEAICE_initialHEFF, SEAICEturbFluxFormula,
101 & SEAICE_areaGainFormula, SEAICE_areaLossFormula,
102 & SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt,
103 & SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR,
104 & SEAICE_cpAir,
105 & SEAICE_drag, SEAICE_waterDrag, SEAICE_dryIceAlb,
106 & SEAICE_wetIceAlb, SEAICE_drySnowAlb, SEAICE_wetSnowAlb, HO,
107 & SEAICE_drag_south, SEAICE_waterDrag_south,
108 & SEAICE_dryIceAlb_south, SEAICE_wetIceAlb_south,
109 & SEAICE_drySnowAlb_south, SEAICE_wetSnowAlb_south, HO_south,
110 & SEAICE_wetAlbTemp, SEAICE_waterAlbedo,
111 & SEAICE_strength, SEAICE_eccen,
112 & SEAICE_lhFusion, SEAICE_lhEvap, SEAICE_dalton,
113 & SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce,
114 & SEAICE_salinity, SIsalFRAC, SIsal0,
115 & areaMin, areaMax, A22, hiceMin,
116 & SEAICE_iceConduct, SEAICE_snowConduct,
117 & SEAICE_emissivity, SEAICE_ice_emiss, SEAICE_snow_emiss,
118 & SEAICE_snowThick, SEAICE_shortwave, SEAICE_freeze, OCEAN_drag,
119 & SEAICE_tempFrz0, SEAICE_dTempFrz_dS, SEAICE_salt0,
120 & SEAICE_saltFrac, SEAICEstressFactor, SEAICE_availHeatTaper,
121 & SEAICE_mcPheePiston, SEAICE_frazilFrac, SEAICE_mcPheeTaper,
122 & SEAICE_mcPheeStepFunc, SEAICE_gamma_t, SEAICE_gamma_t_frz,
123 & SEAICE_availHeatFrac, SEAICE_availHeatFracFrz,
124 & AreaFile, HeffFile, uIceFile, vIceFile, HsnowFile, HsaltFile,
125 & SOLV_MAX_ITERS, SOLV_NCHECK, NPSEUDOTIMESTEPS, LSR_mixIniGuess,
126 & LSR_ERROR, DIFF1, SEAICEuseFREEDRIFT,
127 & SEAICEheatConsFix, SEAICE_multDim,
128 & SEAICE_area_reg, SEAICE_hice_reg,
129 & SEAICE_area_floor, SEAICE_area_max, SEAICE_tauAreaObsRelax,
130 & SEAICE_airTurnAngle, SEAICE_waterTurnAngle,
131 & MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE,
132 & SEAICE_EPS, SEAICE_EPS_SQ,
133 & SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc,
134 CToM<<<
135 C & SEAICE_debugPointI, SEAICE_debugPointJ
136 & SEAICE_debugPointI, SEAICE_debugPointJ,
137 & Hlimit_c1, Hlimit_c2, Hlimit_c3
138 C>>>ToM
139
140 #ifdef ALLOW_COST
141 NAMELIST /SEAICE_PARM02/
142 & mult_ice_export, mult_ice, cost_ice_flag,
143 & costIceStart1, costIceStart2,
144 & costIceEnd1, costIceEnd2,
145 & cost_ice_flag,
146 & SEAICE_clamp_salt, SEAICE_clamp_theta,
147 & mult_smrsst, smrsstbarfile,
148 & mult_smrsss, smrsssbarfile,
149 & mult_smrarea, smrareabarfile, smrareadatfile,
150 & wsmrarea0, wmean_smrarea, smrarea_errfile,
151 & smrareastartdate1, smrareastartdate2, smrareaperiod
152 #endif
153
154 #ifdef ALLOW_SITRACER
155 NAMELIST /SEAICE_PARM03/
156 & SItrFile, SItrName, SItrNameLong, SItrUnit, SItrMate,
157 & SItrFromOcean0, SItrFromOceanFrac, SItrFromFlood0,
158 & SItrFromFloodFrac, SItrExpand0,
159 & IceAgeTrFile, SItrNumInUse
160 #endif
161
162 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
163
164 _BEGIN_MASTER(myThid)
165
166 C-- set default sea ice parameters
167 SEAICEwriteState = .FALSE.
168 #ifdef SEAICE_ALLOW_DYNAMICS
169 SEAICEuseDYNAMICS = .TRUE.
170 #else
171 SEAICEuseDYNAMICS = .FALSE.
172 #endif
173 SEAICEadjMODE = 0
174 SEAICEuseFREEDRIFT = .FALSE.
175 SEAICEheatConsFix = .FALSE.
176 SEAICEuseTEM = .FALSE.
177 SEAICEuseMetricTerms = .TRUE.
178 SEAICEuseEVPpickup = .TRUE.
179 SEAICEuseFluxForm = .TRUE.
180 C-- old default:
181 c SEAICEuseFluxForm = .FALSE.
182 SEAICErestoreUnderIce = .FALSE.
183 SEAICE_salinityTracer = .FALSE.
184 SEAICE_ageTracer = .FALSE.
185 useHB87stressCoupling = .FALSE.
186 usePW79thermodynamics = .TRUE.
187 useMaykutSatVapPoly = .FALSE.
188 SEAICEadvHeff = .TRUE.
189 SEAICEadvArea = .TRUE.
190 SEAICEadvSnow = .TRUE.
191 #ifdef SEAICE_VARIABLE_SALINITY
192 SEAICEadvSalt = .TRUE.
193 #else
194 SEAICEadvSalt = .FALSE.
195 #endif
196 SEAICEuseFlooding = .TRUE.
197 SEAICE_no_slip = .FALSE.
198 SEAICE_clipVelocities = .FALSE.
199 SEAICE_maskRHS = .FALSE.
200 SEAICEadvScheme = 2
201 SEAICEadvSchArea = UNSET_I
202 SEAICEadvSchHeff = UNSET_I
203 SEAICEadvSchSnow = UNSET_I
204 SEAICEadvSchSalt = UNSET_I
205 SEAICEdiffKhArea = UNSET_RL
206 SEAICEdiffKhHeff = UNSET_RL
207 SEAICEdiffKhSnow = UNSET_RL
208 SEAICEdiffKhSalt = UNSET_RL
209 SEAICE_deltaTtherm = dTtracerLev(1)
210 SEAICE_deltaTdyn = dTtracerLev(1)
211 SEAICE_deltaTevp = UNSET_RL
212 C Hunke, JCP, 2001 use 615 kg/m^2 for this, but does not recommend using it
213 SEAICE_evpDampC = -1. _d 0
214 SEAICE_zetaMin = 0. _d 0
215 SEAICE_zetaMaxFac = 2.5 _d 8
216 SEAICE_monFreq = monitorFreq
217 SEAICE_dumpFreq = dumpFreq
218 SEAICE_taveFreq = taveFreq
219 SEAICE_elasticParm = 0.33333333333333333333333333 _d 0
220 SEAICE_evpTauRelax = -1. _d 0
221 #ifdef ALLOW_MNC
222 SEAICE_tave_mnc = timeave_mnc
223 SEAICE_dump_mnc = snapshot_mnc
224 SEAICE_mon_mnc = monitor_mnc
225 #else
226 SEAICE_tave_mnc = .FALSE.
227 SEAICE_dump_mnc = .FALSE.
228 SEAICE_mon_mnc = .FALSE.
229 #endif
230 SEAICE_initialHEFF = ZERO
231 CToM<<<
232 C Coefficients used to calculate sea ice thickness category limits
233 C after Lipscomb et al. (2001, JGR), Equ. 22
234 Hlimit_c1 = 3.0
235 Hlimit_c2 = 15.
236 Hlimit_c3 = 3.0
237 C>>>ToM
238 SEAICE_rhoIce = 0.91 _d +03
239 SEAICE_rhoSnow = 330. _d 0
240 ICE2WATR = UNSET_RL
241 SEAICE_drag = 0.002 _d 0
242 OCEAN_drag = 0.001 _d 0
243 SEAICE_waterDrag = 5.5 _d 0
244 SEAICE_dryIceAlb = 0.75 _d 0
245 SEAICE_wetIceAlb = 0.66 _d 0
246 SEAICE_drySnowAlb = 0.84 _d 0
247 SEAICE_wetSnowAlb = 0.7 _d 0
248 HO = 0.5 _d 0
249 SEAICE_drag_south = UNSET_RL
250 SEAICE_waterDrag_south = UNSET_RL
251 SEAICE_dryIceAlb_south = UNSET_RL
252 SEAICE_wetIceAlb_south = UNSET_RL
253 SEAICE_drySnowAlb_south = UNSET_RL
254 SEAICE_wetSnowAlb_south = UNSET_RL
255 HO_south = UNSET_RL
256 SEAICE_wetAlbTemp = -1. _d -3
257 #ifdef SEAICE_EXTERNAL_FLUXES
258 SEAICE_waterAlbedo = UNSET_RL
259 #else /* if undef SEAICE_EXTERNAL_FLUXES */
260 SEAICE_waterAlbedo = 0.1 _d +00
261 #endif /* SEAICE_EXTERNAL_FLUXES */
262 SEAICE_strength = 2.75 _d +04
263 SEAICE_eccen = 2. _d 0
264 C coefficients for flux computations/bulk formulae
265 SEAICE_dalton = 1.75 _d -03
266 #ifdef ALLOW_EXF
267 IF ( useEXF ) THEN
268 C Use parameters that have already been set in data.exf
269 C to be consistent
270 SEAICE_rhoAir = atmrho
271 SEAICE_cpAir = atmcp
272 SEAICE_lhEvap = flamb
273 SEAICE_lhFusion = flami
274 SEAICE_boltzmann = stefanBoltzmann
275 SEAICE_emissivity = ocean_emissivity
276 SEAICE_ice_emiss = ice_emissivity
277 SEAICE_snow_emiss = snow_emissivity
278 ELSE
279 #else
280 IF ( .TRUE. ) THEN
281 #endif /* ALLOW_EXF */
282 SEAICE_rhoAir = 1.3 _d 0
283 SEAICE_cpAir = 1004. _d 0
284 SEAICE_lhEvap = 2.50 _d 6
285 SEAICE_lhFusion = 3.34 _d 5
286 SEAICE_boltzmann = 5.670 _d -08
287 C old default value of 0.97001763668430343479
288 SEAICE_emissivity = 5.5 _d -08/5.670 _d -08
289 SEAICE_ice_emiss = SEAICE_emissivity
290 SEAICE_snow_emiss = SEAICE_emissivity
291 ENDIF
292 SEAICE_iceConduct = 2.1656 _d +00
293 SEAICE_snowConduct = 3.1 _d -01
294 SEAICE_snowThick = 0.15 _d 0
295 SEAICE_shortwave = 0.30 _d 0
296 SEAICE_salt0 = 0.0 _d 0
297 SEAICE_saltFrac = 0.0 _d 0
298 CToM<<<
299 C#ifdef SEAICE_MULTICATEGORY
300 #if defined(SEAICE_MULTICATEGORY) || defined(SEAICE_ITD)
301 C in case defined(SEAICE_ITD) MULTDIM = nITD (see SEAICE_SIZE.h)
302 C>>>ToM
303 SEAICE_multDim = MULTDIM
304 #else
305 SEAICE_multDim = 1
306 #endif
307 C default to be set later (ocean-seaice turbulent flux coeff):
308 SEAICE_mcPheeStepFunc = .FALSE.
309 SEAICE_mcPheeTaper = UNSET_RL
310 SEAICE_availHeatTaper = UNSET_RL
311 SEAICE_mcPheePiston = UNSET_RL
312 SEAICE_frazilFrac = UNSET_RL
313 SEAICE_gamma_t = UNSET_RL
314 SEAICE_gamma_t_frz = UNSET_RL
315 SEAICE_availHeatFrac = UNSET_RL
316 SEAICE_availHeatFracFrz = UNSET_RL
317 #ifndef SEAICE_GROWTH_LEGACY
318 SEAICE_doOpenWaterGrowth=.TRUE.
319 SEAICE_doOpenWaterMelt=.FALSE.
320 SEAICE_areaLossFormula=1
321 SEAICE_areaGainFormula=1
322 #else
323 SEAICE_doOpenWaterGrowth=.FALSE.
324 SEAICE_doOpenWaterMelt=.FALSE.
325 SEAICE_areaGainFormula=2
326 SEAICE_areaLossFormula=3
327 #endif
328 SEAICE_tempFrz0 = 0.0901 _d 0
329 SEAICE_dTempFrz_dS = -0.0575 _d 0
330 C old default for constant freezing point
331 c SEAICE_tempFrz0 = -1.96 _d 0
332 c SEAICE_dTempFrz_dS = 0. _d 0
333 SEAICEstressFactor = 1. _d 0
334 SEAICE_tauAreaObsRelax = -999. _d 0
335 AreaFile = ' '
336 HsnowFile = ' '
337 HsaltFile = ' '
338 HeffFile = ' '
339 uIceFile = ' '
340 vIceFile = ' '
341 IMAX_TICE = 10
342 postSolvTempIter = 2
343 SOLV_MAX_ITERS = 1500
344 SOLV_NCHECK= 2
345 C two pseudo time steps correspond to the original modified
346 C Euler time stepping scheme of Zhang+Hibler (1997)
347 NPSEUDOTIMESTEPS = 2
348 #ifdef SEAICE_ALLOW_FREEDRIFT
349 LSR_mixIniGuess = 0
350 #else
351 LSR_mixIniGuess = -1
352 #endif
353 LSR_ERROR = 0.0001 _d 0
354 DIFF1 = UNSET_RL
355 C-- old DIFF1 default:
356 c DIFF1 = .004 _d 0
357
358 #ifdef SEAICE_GROWTH_LEGACY
359 SEAICE_area_reg = 0.15 _d 0
360 SEAICE_area_floor = 0.15 _d 0
361 #else
362 SEAICE_area_floor = siEPS
363 SEAICE_area_reg = siEPS
364 #endif
365 SEAICE_hice_reg = 0.05 _d 0
366 SEAICE_area_max = 1.00 _d 0
367
368 SEAICE_airTurnAngle = 0.0 _d 0
369 SEAICE_waterTurnAngle = 0.0 _d 0
370 MAX_HEFF = 10. _d 0
371 MIN_ATEMP = -50. _d 0
372 MIN_LWDOWN = 60. _d 0
373 MIN_TICE = -50. _d 0
374 SEAICE_EPS = 1. _d -10
375 SEAICE_EPS_SQ = -99999.
376 C- Retired parameters:
377 c LAD = 2
378 LAD = UNSET_I
379 c SEAICE_sensHeat = 1.75 _d -03 * 1004 * 1.3
380 c SEAICE_sensHeat = 2.284 _d +00
381 SEAICE_sensHeat = UNSET_RL
382 c SEAICE_latentWater = 1.75 _d -03 * 2.500 _d 06 * 1.3
383 c SEAICE_latentWater = 5.6875 _d +03
384 SEAICE_latentWater = UNSET_RL
385 c SEAICE_latentIce = 1.75 _d -03 * 2.834 _d 06 * 1.3
386 c SEAICE_latentIce = 6.4474 _d +03
387 SEAICE_latentIce = UNSET_RL
388 SEAICE_salinity = UNSET_RL
389 SIsalFRAC = UNSET_RL
390 SIsal0 = UNSET_RL
391 IceAgeFile = ' '
392 c MAX_TICE = 30. _d 0
393 MAX_TICE = UNSET_RL
394 areaMin = UNSET_RL
395 hiceMin = UNSET_RL
396 A22 = UNSET_RL
397 areaMax = UNSET_RL
398 SEAICE_lhSublim = UNSET_RL
399 SEAICEadvAge = .TRUE.
400 SEAICEadvSchAge = UNSET_I
401 SEAICEdiffKhAge = UNSET_RL
402 IceAgeTrFile(1) = ' '
403 IceAgeTrFile(2) = ' '
404 IceAgeTrFile(3) = ' '
405 IceAgeTrFile(4) = ' '
406 SEAICEturbFluxFormula =UNSET_I
407 SEAICE_freeze = UNSET_RL
408 C- end retired parameters
409 SEAICE_debugPointI = UNSET_I
410 SEAICE_debugPointJ = UNSET_I
411
412 #ifdef ALLOW_COST
413 mult_ice_export = 0. _d 0
414 mult_ice = 0. _d 0
415 costIceStart1 = 0
416 costIceStart2 = 0
417 costIceEnd1 = 0
418 costIceEnd2 = 0
419 cost_ice_flag = 1
420 SEAICE_clamp_salt = 27.5 _d 0
421 SEAICE_clamp_theta = 0.0001 _d 0
422 c
423 mult_smrsst = 0. _d 0
424 mult_smrsss = 0. _d 0
425 mult_smrarea = 0. _d 0
426 wsmrarea0 = 0.5 _d 0
427 wmean_smrarea = 0.5 _d 0
428 smrsstbarfile = 'smrsstbar'
429 smrsssbarfile = 'smrsssbar'
430 smrareabarfile = 'smrareabar'
431 smrareadatfile = ' '
432 smrarea_errfile = ' '
433 # ifdef ALLOW_CAL
434 smrareastartdate1 = startDate_1
435 smrareastartdate2 = startDate_2
436 # endif
437 #endif /* ALLOW_COST */
438
439 #ifdef ALLOW_SITRACER
440 SItrNumInUse=SItrMaxNum
441 DO iTracer = 1, SItrMaxNum
442 SItrFile(iTracer) = ' '
443 SItrName(iTracer) = ' '
444 SItrNameLong(iTracer) = ' '
445 SItrUnit(iTracer) = ' '
446 SItrMate(iTracer) = 'HEFF'
447 SItrFromOcean0(iTracer) = ZERO
448 SItrFromOceanFrac(iTracer) = ZERO
449 SItrFromFlood0(iTracer) = ZERO
450 SItrFromFloodFrac(iTracer) = ZERO
451 SItrExpand0(iTracer) = ZERO
452 ENDDO
453 #endif /* ALLOW_SITRACER */
454 nRetired = 0
455
456 C Open and read the data.seaice file
457 WRITE(msgBuf,'(A)')
458 &' '
459 CALL PRINT_MESSAGE( msgBuf, standardmessageunit,
460 & SQUEEZE_RIGHT , myThid)
461 WRITE(msgBuf,'(A)') ' SEAICE_READPARMS: opening data.seaice'
462 CALL PRINT_MESSAGE( msgBuf, standardmessageunit,
463 & SQUEEZE_RIGHT , myThid)
464
465 CALL OPEN_COPY_DATA_FILE(
466 I 'data.seaice', 'SEAICE_READPARMS',
467 O iUnit,
468 I myThid )
469
470 C-- Read settings from model parameter file "data.seaice".
471 READ(UNIT=iUnit,NML=SEAICE_PARM01)
472
473 #ifdef ALLOW_COST
474 READ(UNIT=iUnit,NML=SEAICE_PARM02)
475 #endif /* ALLOW_COST */
476
477 #ifdef ALLOW_SITRACER
478 READ(UNIT=iUnit,NML=SEAICE_PARM03)
479 #endif /* ALLOW_SITRACER */
480
481 CLOSE(iUnit)
482
483 WRITE(msgBuf,'(A)')
484 & ' SEAICE_READPARMS: finished reading data.seaice'
485 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
486 & SQUEEZE_RIGHT , myThid)
487
488 C-- Set default values (if not specified in data.seaice namelist)
489 IF (ICE2WATR.EQ.UNSET_RL) ICE2WATR = SEAICE_rhoIce*recip_rhoConst
490 IF (SEAICE_drag_south .EQ. UNSET_RL)
491 & SEAICE_drag_south = SEAICE_drag
492 IF (SEAICE_waterDrag_south .EQ. UNSET_RL)
493 & SEAICE_waterDrag_south = SEAICE_waterDrag
494 IF (SEAICE_dryIceAlb_south .EQ. UNSET_RL)
495 & SEAICE_dryIceAlb_south = SEAICE_dryIceAlb
496 IF (SEAICE_wetIceAlb_south .EQ. UNSET_RL)
497 & SEAICE_wetIceAlb_south = SEAICE_wetIceAlb
498 IF (SEAICE_drySnowAlb_south .EQ. UNSET_RL)
499 & SEAICE_drySnowAlb_south = SEAICE_drySnowAlb
500 IF (SEAICE_wetSnowAlb_south .EQ. UNSET_RL)
501 & SEAICE_wetSnowAlb_south = SEAICE_wetSnowAlb
502 IF (HO_south .EQ. UNSET_RL)
503 & HO_south = HO
504
505 C Check that requested time step size is supported. The combination
506 C below is the only one that is supported at this time. Does not
507 C mean that something fancier will not work, just that it has not
508 C yet been tried nor thought through.
509 IF ( SEAICE_deltaTtherm .NE. dTtracerLev(1) .OR.
510 & SEAICE_deltaTdyn .LT. SEAICE_deltaTtherm .OR.
511 & (SEAICE_deltaTdyn/SEAICE_deltaTtherm) .NE.
512 & INT(SEAICE_deltaTdyn/SEAICE_deltaTtherm) ) THEN
513 WRITE(msgBuf,'(A)')
514 & 'Unsupported combination of SEAICE_deltaTtherm,'
515 CALL PRINT_ERROR( msgBuf , myThid)
516 WRITE(msgBuf,'(A)')
517 & ' SEAICE_deltaTdyn, and dTtracerLev(1)'
518 CALL PRINT_ERROR( msgBuf , myThid)
519 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
520 ENDIF
521 SEAICEuseEVP = .FALSE.
522 #ifdef SEAICE_ALLOW_EVP
523 IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
524 IF ( SEAICEuseEVP ) THEN
525 IF ( (SEAICE_deltaTdyn/SEAICE_deltaTevp) .NE.
526 & INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) ) THEN
527 WRITE(msgBuf,'(A)')
528 & 'SEAICE_deltaTevp must be a factor of SEAICE_deltaTdyn.'
529 CALL PRINT_ERROR( msgBuf , myThid)
530 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
531 ENDIF
532 IF ( SEAICE_elasticParm .LE. 0. _d 0 ) THEN
533 WRITE(msgBuf,'(A)')
534 & 'SEAICE_elasticParm must greater than 0.'
535 CALL PRINT_ERROR( msgBuf , myThid)
536 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
537 ENDIF
538 IF ( SEAICE_evpTauRelax .LE. 0. _d 0 )
539 & SEAICE_evpTauRelax = SEAICE_deltaTdyn*SEAICE_elasticParm
540 ENDIF
541 #endif /* SEAICE_ALLOW_EVP */
542 C
543 #ifdef SEAICE_ALLOW_FREEDRIFT
544 IF ( SEAICEuseFREEDRIFT ) SEAICEuseEVP = .FALSE.
545 IF ( SEAICEuseFREEDRIFT ) THEN
546 WRITE(msgBuf,'(A,A)')
547 & 'WARNING FROM S/R SEAICE_READPARMS:',
548 & ' switch seaice from LSR or EVP to "free drift"'
549 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
550 & SQUEEZE_RIGHT , myThid)
551 ENDIF
552 #endif /* SEAICE_ALLOW_FREEDRIFT */
553
554 C Make sure that we have least two pseudo time steps
555 NPSEUDOTIMESTEPS = MAX(NPSEUDOTIMESTEPS,2)
556
557 C- The old ways of specifying mcPheeTaper, mcPheePiston & frazilFrac:
558 C a) prevent multiple specification of the same coeff;
559 C b) if specified, then try to recover old way of setting & default.
560 IF ( SEAICE_mcPheeTaper .EQ. UNSET_RL ) THEN
561 IF ( SEAICE_availHeatTaper.EQ.UNSET_RL ) THEN
562 SEAICE_mcPheeTaper = 0.0 _d 0
563 ELSE
564 SEAICE_mcPheeTaper = SEAICE_availHeatTaper
565 ENDIF
566 ELSEIF ( SEAICE_availHeatTaper.NE.UNSET_RL ) THEN
567 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
568 & 'both SEAICE_mcPheeTaper & SEAICE_availHeatTaper'
569 CALL PRINT_ERROR( msgBuf , myThid)
570 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
571 ENDIF
572
573 C- set SEAICE_frazilFrac if not yet done
574 IF ( SEAICE_gamma_t_frz .NE. UNSET_RL ) THEN
575 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
576 SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t_frz
577 ELSE
578 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
579 & 'both SEAICE_frazilFrac & SEAICE_gamma_t_frz'
580 CALL PRINT_ERROR( msgBuf , myThid)
581 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
582 ENDIF
583 ENDIF
584 IF ( SEAICE_availHeatFracFrz.NE.UNSET_RL ) THEN
585 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
586 SEAICE_frazilFrac = SEAICE_availHeatFracFrz
587 ELSE
588 IF ( SEAICE_gamma_t_frz .EQ. UNSET_RL ) THEN
589 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
590 & 'both SEAICE_frazilFrac & SEAICE_availHeatFracFrz'
591 ELSE
592 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
593 & 'both SEAICE_gamma_t_frz & SEAICE_availHeatFracFrz'
594 ENDIF
595 CALL PRINT_ERROR( msgBuf , myThid)
596 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
597 ENDIF
598 ENDIF
599 C the default for SEAICE_gamma_t_frz use to be SEAICE_gamma_t:
600 IF ( SEAICE_gamma_t .NE. UNSET_RL .AND.
601 & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
602 SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
603 ENDIF
604 C the default for SEAICE_availHeatFracFrz use to be SEAICE_availHeatFrac:
605 IF ( SEAICE_availHeatFrac.NE.UNSET_RL .AND.
606 & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
607 SEAICE_frazilFrac = SEAICE_availHeatFrac
608 ENDIF
609 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
610 SEAICE_frazilFrac = 1. _d 0
611 ENDIF
612
613 C- start by setting SEAICE_availHeatFrac (used in seaice_init_fixed.F
614 C to set SEAICE_mcPheePiston once drF is known)
615 IF ( SEAICE_gamma_t .NE. UNSET_RL ) THEN
616 IF ( SEAICE_availHeatFrac.EQ.UNSET_RL ) THEN
617 SEAICE_availHeatFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
618 ELSE
619 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
620 & 'both SEAICE_gamma_t & SEAICE_availHeatFrac'
621 CALL PRINT_ERROR( msgBuf , myThid)
622 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
623 ENDIF
624 ENDIF
625 IF ( SEAICE_mcPheePiston .NE. UNSET_RL .AND.
626 & SEAICE_availHeatFrac.NE. UNSET_RL ) THEN
627 IF ( SEAICE_gamma_t .EQ. UNSET_RL ) THEN
628 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
629 & 'both SEAICE_mcPheePiston & SEAICE_availHeatFrac'
630 ELSE
631 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
632 & 'both SEAICE_mcPheePiston & SEAICE_gamma_t'
633 ENDIF
634 CALL PRINT_ERROR( msgBuf , myThid)
635 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
636 ENDIF
637
638 CToM<<<
639 #ifdef SEAICE_ITD
640 C The ice thickness distribution module can only be used with
641 C package seaice calling
642 C SEAICE_ADVDIFF and
643 C SEAICE_GROWTH, i.e. needs usePW79thermodynamics = .TRUE.
644 useTHSice = .FALSE.
645 #endif
646 C>>>ToM
647 IF ( useThSice ) THEN
648 C If the thsice package with the Winton thermodynamics is used
649 C is does not make sense to have the following parameters defined,
650 C so we reset them here
651 usePW79thermodynamics = .FALSE.
652 SEAICEadvHeff = .FALSE.
653 SEAICEadvArea = .FALSE.
654 SEAICEadvSnow = .FALSE.
655 SEAICEadvSalt = .FALSE.
656 ENDIF
657 C Set advection schemes to some sensible values if not done in data.seaice
658 IF ( SEAICEadvSchArea .EQ. UNSET_I )
659 & SEAICEadvSchArea = SEAICEadvSchHeff
660 IF ( SEAICEadvSchArea .EQ. UNSET_I )
661 & SEAICEadvSchArea = SEAICEadvScheme
662 IF ( SEAICEadvScheme .NE. SEAICEadvSchArea )
663 & SEAICEadvScheme = SEAICEadvSchArea
664 IF ( SEAICEadvSchHeff .EQ. UNSET_I )
665 & SEAICEadvSchHeff = SEAICEadvSchArea
666 IF ( SEAICEadvSchSnow .EQ. UNSET_I )
667 & SEAICEadvSchSnow = SEAICEadvSchHeff
668 IF ( SEAICEadvSchSalt .EQ. UNSET_I )
669 & SEAICEadvSchSalt = SEAICEadvSchHeff
670 C Set diffusivity to some sensible values if not done in data.seaice
671 IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
672 & SEAICEdiffKhArea = SEAICEdiffKhHeff
673 IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
674 & SEAICEdiffKhArea = 0. _d 0
675 IF ( SEAICEdiffKhHeff .EQ. UNSET_RL )
676 & SEAICEdiffKhHeff = SEAICEdiffKhArea
677 IF ( SEAICEdiffKhSnow .EQ. UNSET_RL )
678 & SEAICEdiffKhSnow = SEAICEdiffKhHeff
679 IF ( SEAICEdiffKhSalt .EQ. UNSET_RL )
680 & SEAICEdiffKhSalt = SEAICEdiffKhHeff
681 IF ( SEAICE_EPS_SQ .EQ. -99999. )
682 & SEAICE_EPS_SQ = SEAICE_EPS * SEAICE_EPS
683
684 C- Retired parameters
685 IF ( SEAICE_sensHeat .NE. UNSET_RL ) THEN
686 nRetired = nRetired + 1
687 WRITE(msgBuf,'(A,A)')
688 & 'S/R SEAICE_READPARMS: "SEAICE_sensHeat" ',
689 & 'is no longer allowed in file "data.seaice"'
690 CALL PRINT_ERROR( msgBuf, myThid )
691 WRITE(msgBuf,'(A,A)')
692 & 'S/R SEAICE_READPARMS: set "SEAICE_cpAir", ',
693 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
694 CALL PRINT_ERROR( msgBuf, myThid )
695 ENDIF
696 IF ( SEAICE_latentWater .NE. UNSET_RL ) THEN
697 nRetired = nRetired + 1
698 WRITE(msgBuf,'(A,A)')
699 & 'S/R SEAICE_READPARMS: "SEAICE_latentWater" ',
700 & 'is no longer allowed in file "data.seaice"'
701 CALL PRINT_ERROR( msgBuf, myThid )
702 WRITE(msgBuf,'(A,A)')
703 & 'S/R SEAICE_READPARMS: set "SEAICE_lhEvap", ',
704 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
705 CALL PRINT_ERROR( msgBuf, myThid )
706 ENDIF
707 IF ( SEAICE_latentIce .NE. UNSET_RL ) THEN
708 nRetired = nRetired + 1
709 WRITE(msgBuf,'(A,A)')
710 & 'S/R SEAICE_READPARMS: "SEAICE_latentIce" ',
711 & 'is no longer allowed in file "data.seaice"'
712 CALL PRINT_ERROR( msgBuf, myThid )
713 WRITE(msgBuf,'(A,A)')
714 & 'S/R SEAICE_READPARMS: set "SEAICE_lhFusion", ',
715 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
716 CALL PRINT_ERROR( msgBuf, myThid )
717 ENDIF
718 IF ( SEAICE_freeze .NE. UNSET_RL ) THEN
719 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
720 & '"SEAICE_freeze" no longer allowed in file "data.seaice"'
721 CALL PRINT_ERROR( msgBuf, myThid )
722 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
723 & 'set instead "SEAICE_tempFrz0" and "SEAICE_dTempFrz_dS"'
724 CALL PRINT_ERROR( msgBuf, myThid )
725 ENDIF
726 IF ( SEAICE_salinity .NE. UNSET_RL ) THEN
727 nRetired = nRetired + 1
728 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
729 & '"SEAICE_salinity" is no longer allowed in file "data.seaice"'
730 CALL PRINT_ERROR( msgBuf, myThid )
731 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
732 & 'set "SEAICE_saltFrac" instead'
733 CALL PRINT_ERROR( msgBuf, myThid )
734 ENDIF
735 IF ( SIsalFrac .NE. UNSET_RL ) THEN
736 nRetired = nRetired + 1
737 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
738 & '"SIsalFrac" is no longer allowed in file "data.seaice"'
739 CALL PRINT_ERROR( msgBuf, myThid )
740 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
741 & 'set "SEAICE_saltFrac" instead'
742 CALL PRINT_ERROR( msgBuf, myThid )
743 ENDIF
744 IF ( SIsal0 .NE. UNSET_RL ) THEN
745 nRetired = nRetired + 1
746 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
747 & '"SIsal0" is no longer allowed in file "data.seaice"'
748 CALL PRINT_ERROR( msgBuf, myThid )
749 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
750 & 'set "SEAICE_salt0" instead'
751 CALL PRINT_ERROR( msgBuf, myThid )
752 ENDIF
753 IF ( IceAgeFile .NE. ' ' ) THEN
754 nRetired = nRetired + 1
755 WRITE(msgBuf,'(A,A)')
756 & 'S/R SEAICE_READPARMS: "IceAgeFile" ',
757 & 'is no longer allowed in file "data.seaice"'
758 CALL PRINT_ERROR( msgBuf, myThid )
759 WRITE(msgBuf,'(A,A)')
760 & 'S/R SEAICE_READPARMS: replaced by ',
761 & '"IceAgeTrFile(SEAICE_num)" array '
762 CALL PRINT_ERROR( msgBuf, myThid )
763 ENDIF
764 IF ( areaMax .NE. UNSET_RL ) THEN
765 nRetired = nRetired + 1
766 WRITE(msgBuf,'(A,A)')
767 & 'S/R SEAICE_READPARMS: "areaMax" ',
768 & 'is no longer allowed in file "data.seaice"'
769 CALL PRINT_ERROR( msgBuf, myThid )
770 WRITE(msgBuf,'(A,A)')
771 & 'S/R SEAICE_READPARMS: replaced by ',
772 & '"SEAICE_area_max"'
773 CALL PRINT_ERROR( msgBuf, myThid )
774 ENDIF
775 IF ( areaMin .NE. UNSET_RL ) THEN
776 nRetired = nRetired + 1
777 WRITE(msgBuf,'(A,A)')
778 & 'S/R SEAICE_READPARMS: "areaMin" ',
779 & 'is no longer allowed in file "data.seaice"'
780 CALL PRINT_ERROR( msgBuf, myThid )
781 WRITE(msgBuf,'(A,A)')
782 & 'S/R SEAICE_READPARMS: replaced by ',
783 & '"SEAICE_area_reg" for regularization and ',
784 & '"SEAICE_area_floor" setting a lower bound'
785 CALL PRINT_ERROR( msgBuf, myThid )
786 ENDIF
787 IF (SEAICE_lhSublim .NE. UNSET_RL ) THEN
788 nRetired = nRetired + 1
789 WRITE(msgBuf,'(A,A)')
790 & 'S/R SEAICE_READPARMS: "SEAICE_lhSublim" ',
791 & 'is no longer allowed in file "data.seaice"'
792 CALL PRINT_ERROR( msgBuf, myThid )
793 WRITE(msgBuf,'(A,A)')
794 & 'S/R SEAICE_READPARMS: specify ',
795 & '"SEAICE_lhFusion" and "SEAICE_lhEvap" instead'
796 CALL PRINT_ERROR( msgBuf, myThid )
797 ENDIF
798 IF ( A22 .NE. UNSET_RL ) THEN
799 nRetired = nRetired + 1
800 WRITE(msgBuf,'(A,A)')
801 & 'S/R SEAICE_READPARMS: "A22" ',
802 & 'is no longer allowed in file "data.seaice"'
803 CALL PRINT_ERROR( msgBuf, myThid )
804 WRITE(msgBuf,'(A,A)')
805 & 'S/R SEAICE_READPARMS: replaced by ',
806 & '"SEAICE_area_reg" for regularization'
807 CALL PRINT_ERROR( msgBuf, myThid )
808 ENDIF
809 IF ( LAD .NE. UNSET_I ) THEN
810 nRetired = nRetired + 1
811 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: "LAD" ',
812 & 'is no longer allowed in file "data.seaice"'
813 CALL PRINT_ERROR( msgBuf, myThid )
814 WRITE(msgBuf,'(A,A)') 'always use modified Euler step ',
815 & '(LAD==2) since Leap frog code (LAD==1) is gone.'
816 CALL PRINT_ERROR( msgBuf, myThid )
817 ENDIF
818 IF ( MAX_TICE .NE. UNSET_RL ) THEN
819 nRetired = nRetired + 1
820 WRITE(msgBuf,'(A,A)')
821 & 'S/R SEAICE_READPARMS: "MAX_TICE" ',
822 & 'is no longer allowed in file "data.seaice"'
823 CALL PRINT_ERROR( msgBuf, myThid )
824 ENDIF
825 IF ( hiceMin .NE. UNSET_RL ) THEN
826 nRetired = nRetired + 1
827 WRITE(msgBuf,'(A,A)')
828 & 'S/R SEAICE_READPARMS: "hiceMin" ',
829 & 'is no longer allowed in file "data.seaice"'
830 CALL PRINT_ERROR( msgBuf, myThid )
831 WRITE(msgBuf,'(A,A)')
832 & 'S/R SEAICE_READPARMS: replaced by ',
833 & '"SEAICE_hice_reg" for regularization'
834 CALL PRINT_ERROR( msgBuf, myThid )
835 ENDIF
836 IF ( .NOT. SEAICEadvAge ) THEN
837 nRetired = nRetired + 1
838 WRITE(msgBuf,'(A,A)')
839 & 'S/R SEAICE_READPARMS: "SEAICEadvAge" ',
840 & 'is no longer allowed in file "data.seaice"'
841 CALL PRINT_ERROR( msgBuf, myThid )
842 WRITE(msgBuf,'(A,A)')
843 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
844 & 'replaced and extended SEAICE_AGE'
845 CALL PRINT_ERROR( msgBuf, myThid )
846 ENDIF
847 IF ( SEAICEadvSchAge .NE. UNSET_I ) THEN
848 nRetired = nRetired + 1
849 WRITE(msgBuf,'(A,A)')
850 & 'S/R SEAICE_READPARMS: "SEAICEadvSchAge" ',
851 & 'is no longer allowed in file "data.seaice"'
852 CALL PRINT_ERROR( msgBuf, myThid )
853 WRITE(msgBuf,'(A,A)')
854 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
855 & 'replaced and extended SEAICE_AGE'
856 CALL PRINT_ERROR( msgBuf, myThid )
857 ENDIF
858 IF ( SEAICEdiffKhAge .NE. UNSET_RL ) THEN
859 nRetired = nRetired + 1
860 WRITE(msgBuf,'(A,A)')
861 & 'S/R SEAICE_READPARMS: "SEAICEdiffKhAge" ',
862 & 'is no longer allowed in file "data.seaice"'
863 CALL PRINT_ERROR( msgBuf, myThid )
864 WRITE(msgBuf,'(A,A)')
865 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
866 & 'replaced and extended SEAICE_AGE'
867 CALL PRINT_ERROR( msgBuf, myThid )
868 ENDIF
869 IF ( ( IceAgeTrFile(1) .NE. ' ' ).OR.
870 & ( IceAgeTrFile(2) .NE. ' ' ).OR.
871 & ( IceAgeTrFile(3) .NE. ' ' ).OR.
872 & ( IceAgeTrFile(4) .NE. ' ' ) ) THEN
873 nRetired = nRetired + 1
874 WRITE(msgBuf,'(A,A)')
875 & 'S/R SEAICE_READPARMS: "IceAgeTrFile" ',
876 & 'is no longer allowed in file "data.seaice"'
877 CALL PRINT_ERROR( msgBuf, myThid )
878 WRITE(msgBuf,'(A,A)')
879 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
880 & 'replaced and extended SEAICE_AGE'
881 CALL PRINT_ERROR( msgBuf, myThid )
882 ENDIF
883 IF ( SEAICEturbFluxFormula .NE. UNSET_I ) THEN
884 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
885 & '"SEAICEturbFluxFormula" no longer allowed in "data.seaice"'
886 CALL PRINT_ERROR( msgBuf, myThid )
887 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
888 & ' Set instead "SEAICE_mcPheePiston" and "SEAICE_frazilFrac"'
889 CALL PRINT_ERROR( msgBuf, myThid )
890 ENDIF
891
892 IF ( nRetired .GT. 0 ) THEN
893 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ',
894 & 'Error reading parameter file "data.seaice"'
895 CALL PRINT_ERROR( msgBuf, myThid )
896 WRITE(msgBuf,'(A)')
897 & 'some out of date parameters were found in the namelist'
898 CALL PRINT_ERROR( msgBuf, myThid )
899 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
900 ENDIF
901
902 C-- Now set-up any remaining parameters that result from other params
903
904 C- convert SEAICE_doOpenWaterGrowth/Melt logical switch to numerical
905 C facOpenGrow/facOpenMelt
906 facOpenGrow = 0. _d 0
907 facOpenMelt = 0. _d 0
908 IF (SEAICE_doOpenWaterGrowth) facOpenGrow = 1. _d 0
909 IF (SEAICE_doOpenWaterMelt) facOpenMelt = 1. _d 0
910
911 C- Set Output type flags :
912 SEAICE_tave_mdsio = .TRUE.
913 SEAICE_dump_mdsio = .TRUE.
914 SEAICE_mon_stdio = .TRUE.
915 #ifdef ALLOW_MNC
916 IF (useMNC) THEN
917 IF ( .NOT.outputTypesInclusive
918 & .AND. SEAICE_tave_mnc ) SEAICE_tave_mdsio = .FALSE.
919 IF ( .NOT.outputTypesInclusive
920 & .AND. SEAICE_dump_mnc ) SEAICE_dump_mdsio = .FALSE.
921 IF ( .NOT.outputTypesInclusive
922 & .AND. SEAICE_mon_mnc ) SEAICE_mon_stdio = .FALSE.
923 ENDIF
924 #endif
925
926 C Check the consitency of a few parameters
927 IF ( SEAICE_emissivity .LT. 1. _d -04 ) THEN
928 WRITE(msgBuf,'(2A)')
929 & 'SEAICE_emissivity is no longer emissivity*(boltzmann ',
930 & 'constant) but really an emissivity.'
931 CALL PRINT_ERROR( msgBuf , myThid)
932 WRITE(msgBuf,'(2A)')
933 & 'Typical values are near 1 ',
934 & '(default is 5.5/5.67=0.9700176...).'
935 CALL PRINT_ERROR( msgBuf , myThid)
936 WRITE(msgBuf,'(A,E13.6,A)')
937 & 'Please change SEAICE_emissivity in data.seaice to ',
938 & SEAICE_emissivity, '/5.67e-8.'
939 CALL PRINT_ERROR( msgBuf , myThid)
940 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
941 ENDIF
942
943 IF ( DIFF1 .EQ. UNSET_RL ) THEN
944 DIFF1 = 0. _d 0
945 chkFlag = .FALSE.
946 IF ( SEAICEadvScheme.EQ.2 ) THEN
947 C-- Since DIFF1 default value has been changed (2011/05/29), issue a warning
948 C in case using centered avection scheme without any diffusion:
949 IF ( SEAICEadvHeff .AND. SEAICEdiffKhHeff .EQ. 0. _d 0 ) THEN
950 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
951 & 'will use AdvScheme = 2 for HEFF without any diffusion'
952 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
953 & SQUEEZE_RIGHT, myThid )
954 chkFlag = .TRUE.
955 ENDIF
956 IF ( SEAICEadvArea .AND. SEAICEdiffKhArea .EQ. 0. _d 0 ) THEN
957 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
958 & 'will use AdvScheme = 2 for AREA without any diffusion'
959 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
960 & SQUEEZE_RIGHT, myThid )
961 chkFlag = .TRUE.
962 ENDIF
963 IF ( SEAICEadvSnow .AND. SEAICEdiffKhSnow .EQ. 0. _d 0 ) THEN
964 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
965 & 'will use AdvScheme = 2 for HSNOW without any diffusion'
966 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
967 & SQUEEZE_RIGHT, myThid )
968 chkFlag = .TRUE.
969 ENDIF
970 IF ( SEAICEadvSalt .AND. SEAICEdiffKhSalt .EQ. 0. _d 0 ) THEN
971 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
972 & 'will use AdvScheme = 2 for HSALT without any diffusion'
973 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
974 & SQUEEZE_RIGHT, myThid )
975 chkFlag = .TRUE.
976 ENDIF
977 IF ( chkFlag ) THEN
978 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
979 & 'since DIFF1 is set to 0 (= new DIFF1 default value)'
980 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
981 & SQUEEZE_RIGHT, myThid )
982 ENDIF
983 ENDIF
984 ENDIF
985
986 _END_MASTER(myThid)
987
988 C-- Everyone else must wait for the parameters to be loaded
989 _BARRIER
990
991 RETURN
992 END

  ViewVC Help
Powered by ViewVC 1.1.22