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

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

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


Revision 1.3 - (hide annotations) (download)
Wed Sep 26 17:03:29 2012 UTC (12 years, 10 months ago) by torge
Branch: MAIN
Changes since 1.2: +7 -1 lines
change documentation of Hlimit calculation

1 dimitri 1.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 dimitri 1.2 CToM<<<
135     C & SEAICE_debugPointI, SEAICE_debugPointJ
136     & SEAICE_debugPointI, SEAICE_debugPointJ,
137     & Hlimit_c1, Hlimit_c2, Hlimit_c3
138     C>>>ToM
139 dimitri 1.1
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 dimitri 1.2 CToM<<<
232     C Coefficients used to calculate sea ice thickness category limits
233     C after Lipscomb et al. (2001, JGR), Equ. 22
234 torge 1.3 C choose between
235     C - original parameters of Lipscomb et al. (2001):
236     C c1=3.0/N, c2=15*c1, c3=3.0
237     C - and a higher resolution of thin end of ITD:
238     C c1=1.5/N, c2=42*c1, c3=3.3
239 dimitri 1.2 Hlimit_c1 = 3.0
240     Hlimit_c2 = 15.
241     Hlimit_c3 = 3.0
242     C>>>ToM
243 dimitri 1.1 SEAICE_rhoIce = 0.91 _d +03
244     SEAICE_rhoSnow = 330. _d 0
245     ICE2WATR = UNSET_RL
246     SEAICE_drag = 0.002 _d 0
247     OCEAN_drag = 0.001 _d 0
248     SEAICE_waterDrag = 5.5 _d 0
249     SEAICE_dryIceAlb = 0.75 _d 0
250     SEAICE_wetIceAlb = 0.66 _d 0
251     SEAICE_drySnowAlb = 0.84 _d 0
252     SEAICE_wetSnowAlb = 0.7 _d 0
253     HO = 0.5 _d 0
254     SEAICE_drag_south = UNSET_RL
255     SEAICE_waterDrag_south = UNSET_RL
256     SEAICE_dryIceAlb_south = UNSET_RL
257     SEAICE_wetIceAlb_south = UNSET_RL
258     SEAICE_drySnowAlb_south = UNSET_RL
259     SEAICE_wetSnowAlb_south = UNSET_RL
260     HO_south = UNSET_RL
261     SEAICE_wetAlbTemp = -1. _d -3
262     #ifdef SEAICE_EXTERNAL_FLUXES
263     SEAICE_waterAlbedo = UNSET_RL
264     #else /* if undef SEAICE_EXTERNAL_FLUXES */
265     SEAICE_waterAlbedo = 0.1 _d +00
266     #endif /* SEAICE_EXTERNAL_FLUXES */
267     SEAICE_strength = 2.75 _d +04
268     SEAICE_eccen = 2. _d 0
269     C coefficients for flux computations/bulk formulae
270     SEAICE_dalton = 1.75 _d -03
271     #ifdef ALLOW_EXF
272     IF ( useEXF ) THEN
273     C Use parameters that have already been set in data.exf
274     C to be consistent
275     SEAICE_rhoAir = atmrho
276     SEAICE_cpAir = atmcp
277     SEAICE_lhEvap = flamb
278     SEAICE_lhFusion = flami
279     SEAICE_boltzmann = stefanBoltzmann
280     SEAICE_emissivity = ocean_emissivity
281     SEAICE_ice_emiss = ice_emissivity
282     SEAICE_snow_emiss = snow_emissivity
283     ELSE
284     #else
285     IF ( .TRUE. ) THEN
286     #endif /* ALLOW_EXF */
287     SEAICE_rhoAir = 1.3 _d 0
288     SEAICE_cpAir = 1004. _d 0
289     SEAICE_lhEvap = 2.50 _d 6
290     SEAICE_lhFusion = 3.34 _d 5
291     SEAICE_boltzmann = 5.670 _d -08
292     C old default value of 0.97001763668430343479
293     SEAICE_emissivity = 5.5 _d -08/5.670 _d -08
294     SEAICE_ice_emiss = SEAICE_emissivity
295     SEAICE_snow_emiss = SEAICE_emissivity
296     ENDIF
297     SEAICE_iceConduct = 2.1656 _d +00
298     SEAICE_snowConduct = 3.1 _d -01
299     SEAICE_snowThick = 0.15 _d 0
300     SEAICE_shortwave = 0.30 _d 0
301     SEAICE_salt0 = 0.0 _d 0
302     SEAICE_saltFrac = 0.0 _d 0
303 dimitri 1.2 CToM<<<
304     C#ifdef SEAICE_MULTICATEGORY
305     #if defined(SEAICE_MULTICATEGORY) || defined(SEAICE_ITD)
306     C in case defined(SEAICE_ITD) MULTDIM = nITD (see SEAICE_SIZE.h)
307 torge 1.3 C because SEAICE_ITD uses code related to SEAICE_MULTICATEGORY
308 dimitri 1.2 C>>>ToM
309 dimitri 1.1 SEAICE_multDim = MULTDIM
310     #else
311     SEAICE_multDim = 1
312     #endif
313     C default to be set later (ocean-seaice turbulent flux coeff):
314     SEAICE_mcPheeStepFunc = .FALSE.
315     SEAICE_mcPheeTaper = UNSET_RL
316     SEAICE_availHeatTaper = UNSET_RL
317     SEAICE_mcPheePiston = UNSET_RL
318     SEAICE_frazilFrac = UNSET_RL
319     SEAICE_gamma_t = UNSET_RL
320     SEAICE_gamma_t_frz = UNSET_RL
321     SEAICE_availHeatFrac = UNSET_RL
322     SEAICE_availHeatFracFrz = UNSET_RL
323     #ifndef SEAICE_GROWTH_LEGACY
324     SEAICE_doOpenWaterGrowth=.TRUE.
325     SEAICE_doOpenWaterMelt=.FALSE.
326     SEAICE_areaLossFormula=1
327     SEAICE_areaGainFormula=1
328     #else
329     SEAICE_doOpenWaterGrowth=.FALSE.
330     SEAICE_doOpenWaterMelt=.FALSE.
331     SEAICE_areaGainFormula=2
332     SEAICE_areaLossFormula=3
333     #endif
334     SEAICE_tempFrz0 = 0.0901 _d 0
335     SEAICE_dTempFrz_dS = -0.0575 _d 0
336     C old default for constant freezing point
337     c SEAICE_tempFrz0 = -1.96 _d 0
338     c SEAICE_dTempFrz_dS = 0. _d 0
339     SEAICEstressFactor = 1. _d 0
340     SEAICE_tauAreaObsRelax = -999. _d 0
341     AreaFile = ' '
342     HsnowFile = ' '
343     HsaltFile = ' '
344     HeffFile = ' '
345     uIceFile = ' '
346     vIceFile = ' '
347     IMAX_TICE = 10
348     postSolvTempIter = 2
349     SOLV_MAX_ITERS = 1500
350     SOLV_NCHECK= 2
351     C two pseudo time steps correspond to the original modified
352     C Euler time stepping scheme of Zhang+Hibler (1997)
353     NPSEUDOTIMESTEPS = 2
354     #ifdef SEAICE_ALLOW_FREEDRIFT
355     LSR_mixIniGuess = 0
356     #else
357     LSR_mixIniGuess = -1
358     #endif
359     LSR_ERROR = 0.0001 _d 0
360     DIFF1 = UNSET_RL
361     C-- old DIFF1 default:
362     c DIFF1 = .004 _d 0
363    
364     #ifdef SEAICE_GROWTH_LEGACY
365     SEAICE_area_reg = 0.15 _d 0
366     SEAICE_area_floor = 0.15 _d 0
367     #else
368     SEAICE_area_floor = siEPS
369     SEAICE_area_reg = siEPS
370     #endif
371     SEAICE_hice_reg = 0.05 _d 0
372 torge 1.3 SEAICE_area_max = 1.00 _d 0
373 dimitri 1.1
374     SEAICE_airTurnAngle = 0.0 _d 0
375     SEAICE_waterTurnAngle = 0.0 _d 0
376     MAX_HEFF = 10. _d 0
377     MIN_ATEMP = -50. _d 0
378     MIN_LWDOWN = 60. _d 0
379     MIN_TICE = -50. _d 0
380     SEAICE_EPS = 1. _d -10
381     SEAICE_EPS_SQ = -99999.
382     C- Retired parameters:
383     c LAD = 2
384     LAD = UNSET_I
385     c SEAICE_sensHeat = 1.75 _d -03 * 1004 * 1.3
386     c SEAICE_sensHeat = 2.284 _d +00
387     SEAICE_sensHeat = UNSET_RL
388     c SEAICE_latentWater = 1.75 _d -03 * 2.500 _d 06 * 1.3
389     c SEAICE_latentWater = 5.6875 _d +03
390     SEAICE_latentWater = UNSET_RL
391     c SEAICE_latentIce = 1.75 _d -03 * 2.834 _d 06 * 1.3
392     c SEAICE_latentIce = 6.4474 _d +03
393     SEAICE_latentIce = UNSET_RL
394     SEAICE_salinity = UNSET_RL
395     SIsalFRAC = UNSET_RL
396     SIsal0 = UNSET_RL
397     IceAgeFile = ' '
398     c MAX_TICE = 30. _d 0
399     MAX_TICE = UNSET_RL
400     areaMin = UNSET_RL
401     hiceMin = UNSET_RL
402     A22 = UNSET_RL
403     areaMax = UNSET_RL
404     SEAICE_lhSublim = UNSET_RL
405     SEAICEadvAge = .TRUE.
406     SEAICEadvSchAge = UNSET_I
407     SEAICEdiffKhAge = UNSET_RL
408     IceAgeTrFile(1) = ' '
409     IceAgeTrFile(2) = ' '
410     IceAgeTrFile(3) = ' '
411     IceAgeTrFile(4) = ' '
412     SEAICEturbFluxFormula =UNSET_I
413     SEAICE_freeze = UNSET_RL
414     C- end retired parameters
415     SEAICE_debugPointI = UNSET_I
416     SEAICE_debugPointJ = UNSET_I
417    
418     #ifdef ALLOW_COST
419     mult_ice_export = 0. _d 0
420     mult_ice = 0. _d 0
421     costIceStart1 = 0
422     costIceStart2 = 0
423     costIceEnd1 = 0
424     costIceEnd2 = 0
425     cost_ice_flag = 1
426     SEAICE_clamp_salt = 27.5 _d 0
427     SEAICE_clamp_theta = 0.0001 _d 0
428     c
429     mult_smrsst = 0. _d 0
430     mult_smrsss = 0. _d 0
431     mult_smrarea = 0. _d 0
432     wsmrarea0 = 0.5 _d 0
433     wmean_smrarea = 0.5 _d 0
434     smrsstbarfile = 'smrsstbar'
435     smrsssbarfile = 'smrsssbar'
436     smrareabarfile = 'smrareabar'
437     smrareadatfile = ' '
438     smrarea_errfile = ' '
439     # ifdef ALLOW_CAL
440     smrareastartdate1 = startDate_1
441     smrareastartdate2 = startDate_2
442     # endif
443     #endif /* ALLOW_COST */
444    
445     #ifdef ALLOW_SITRACER
446     SItrNumInUse=SItrMaxNum
447     DO iTracer = 1, SItrMaxNum
448     SItrFile(iTracer) = ' '
449     SItrName(iTracer) = ' '
450     SItrNameLong(iTracer) = ' '
451     SItrUnit(iTracer) = ' '
452     SItrMate(iTracer) = 'HEFF'
453     SItrFromOcean0(iTracer) = ZERO
454     SItrFromOceanFrac(iTracer) = ZERO
455     SItrFromFlood0(iTracer) = ZERO
456     SItrFromFloodFrac(iTracer) = ZERO
457     SItrExpand0(iTracer) = ZERO
458     ENDDO
459     #endif /* ALLOW_SITRACER */
460     nRetired = 0
461    
462     C Open and read the data.seaice file
463     WRITE(msgBuf,'(A)')
464     &' '
465     CALL PRINT_MESSAGE( msgBuf, standardmessageunit,
466     & SQUEEZE_RIGHT , myThid)
467     WRITE(msgBuf,'(A)') ' SEAICE_READPARMS: opening data.seaice'
468     CALL PRINT_MESSAGE( msgBuf, standardmessageunit,
469     & SQUEEZE_RIGHT , myThid)
470    
471     CALL OPEN_COPY_DATA_FILE(
472     I 'data.seaice', 'SEAICE_READPARMS',
473     O iUnit,
474     I myThid )
475    
476     C-- Read settings from model parameter file "data.seaice".
477     READ(UNIT=iUnit,NML=SEAICE_PARM01)
478    
479     #ifdef ALLOW_COST
480     READ(UNIT=iUnit,NML=SEAICE_PARM02)
481     #endif /* ALLOW_COST */
482    
483     #ifdef ALLOW_SITRACER
484     READ(UNIT=iUnit,NML=SEAICE_PARM03)
485     #endif /* ALLOW_SITRACER */
486    
487     CLOSE(iUnit)
488    
489     WRITE(msgBuf,'(A)')
490     & ' SEAICE_READPARMS: finished reading data.seaice'
491     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
492     & SQUEEZE_RIGHT , myThid)
493    
494     C-- Set default values (if not specified in data.seaice namelist)
495     IF (ICE2WATR.EQ.UNSET_RL) ICE2WATR = SEAICE_rhoIce*recip_rhoConst
496     IF (SEAICE_drag_south .EQ. UNSET_RL)
497     & SEAICE_drag_south = SEAICE_drag
498     IF (SEAICE_waterDrag_south .EQ. UNSET_RL)
499     & SEAICE_waterDrag_south = SEAICE_waterDrag
500     IF (SEAICE_dryIceAlb_south .EQ. UNSET_RL)
501     & SEAICE_dryIceAlb_south = SEAICE_dryIceAlb
502     IF (SEAICE_wetIceAlb_south .EQ. UNSET_RL)
503     & SEAICE_wetIceAlb_south = SEAICE_wetIceAlb
504     IF (SEAICE_drySnowAlb_south .EQ. UNSET_RL)
505     & SEAICE_drySnowAlb_south = SEAICE_drySnowAlb
506     IF (SEAICE_wetSnowAlb_south .EQ. UNSET_RL)
507     & SEAICE_wetSnowAlb_south = SEAICE_wetSnowAlb
508     IF (HO_south .EQ. UNSET_RL)
509     & HO_south = HO
510    
511     C Check that requested time step size is supported. The combination
512     C below is the only one that is supported at this time. Does not
513     C mean that something fancier will not work, just that it has not
514     C yet been tried nor thought through.
515     IF ( SEAICE_deltaTtherm .NE. dTtracerLev(1) .OR.
516     & SEAICE_deltaTdyn .LT. SEAICE_deltaTtherm .OR.
517     & (SEAICE_deltaTdyn/SEAICE_deltaTtherm) .NE.
518     & INT(SEAICE_deltaTdyn/SEAICE_deltaTtherm) ) THEN
519     WRITE(msgBuf,'(A)')
520     & 'Unsupported combination of SEAICE_deltaTtherm,'
521     CALL PRINT_ERROR( msgBuf , myThid)
522     WRITE(msgBuf,'(A)')
523     & ' SEAICE_deltaTdyn, and dTtracerLev(1)'
524     CALL PRINT_ERROR( msgBuf , myThid)
525     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
526     ENDIF
527     SEAICEuseEVP = .FALSE.
528     #ifdef SEAICE_ALLOW_EVP
529     IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
530     IF ( SEAICEuseEVP ) THEN
531     IF ( (SEAICE_deltaTdyn/SEAICE_deltaTevp) .NE.
532     & INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) ) THEN
533     WRITE(msgBuf,'(A)')
534     & 'SEAICE_deltaTevp must be a factor of SEAICE_deltaTdyn.'
535     CALL PRINT_ERROR( msgBuf , myThid)
536     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
537     ENDIF
538     IF ( SEAICE_elasticParm .LE. 0. _d 0 ) THEN
539     WRITE(msgBuf,'(A)')
540     & 'SEAICE_elasticParm must greater than 0.'
541     CALL PRINT_ERROR( msgBuf , myThid)
542     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
543     ENDIF
544     IF ( SEAICE_evpTauRelax .LE. 0. _d 0 )
545     & SEAICE_evpTauRelax = SEAICE_deltaTdyn*SEAICE_elasticParm
546     ENDIF
547     #endif /* SEAICE_ALLOW_EVP */
548     C
549     #ifdef SEAICE_ALLOW_FREEDRIFT
550     IF ( SEAICEuseFREEDRIFT ) SEAICEuseEVP = .FALSE.
551     IF ( SEAICEuseFREEDRIFT ) THEN
552     WRITE(msgBuf,'(A,A)')
553     & 'WARNING FROM S/R SEAICE_READPARMS:',
554     & ' switch seaice from LSR or EVP to "free drift"'
555     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
556     & SQUEEZE_RIGHT , myThid)
557     ENDIF
558     #endif /* SEAICE_ALLOW_FREEDRIFT */
559    
560     C Make sure that we have least two pseudo time steps
561     NPSEUDOTIMESTEPS = MAX(NPSEUDOTIMESTEPS,2)
562    
563     C- The old ways of specifying mcPheeTaper, mcPheePiston & frazilFrac:
564     C a) prevent multiple specification of the same coeff;
565     C b) if specified, then try to recover old way of setting & default.
566     IF ( SEAICE_mcPheeTaper .EQ. UNSET_RL ) THEN
567     IF ( SEAICE_availHeatTaper.EQ.UNSET_RL ) THEN
568     SEAICE_mcPheeTaper = 0.0 _d 0
569     ELSE
570     SEAICE_mcPheeTaper = SEAICE_availHeatTaper
571     ENDIF
572     ELSEIF ( SEAICE_availHeatTaper.NE.UNSET_RL ) THEN
573     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
574     & 'both SEAICE_mcPheeTaper & SEAICE_availHeatTaper'
575     CALL PRINT_ERROR( msgBuf , myThid)
576     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
577     ENDIF
578    
579     C- set SEAICE_frazilFrac if not yet done
580     IF ( SEAICE_gamma_t_frz .NE. UNSET_RL ) THEN
581     IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
582     SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t_frz
583     ELSE
584     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
585     & 'both SEAICE_frazilFrac & SEAICE_gamma_t_frz'
586     CALL PRINT_ERROR( msgBuf , myThid)
587     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
588     ENDIF
589     ENDIF
590     IF ( SEAICE_availHeatFracFrz.NE.UNSET_RL ) THEN
591     IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
592     SEAICE_frazilFrac = SEAICE_availHeatFracFrz
593     ELSE
594     IF ( SEAICE_gamma_t_frz .EQ. UNSET_RL ) THEN
595     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
596     & 'both SEAICE_frazilFrac & SEAICE_availHeatFracFrz'
597     ELSE
598     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
599     & 'both SEAICE_gamma_t_frz & SEAICE_availHeatFracFrz'
600     ENDIF
601     CALL PRINT_ERROR( msgBuf , myThid)
602     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
603     ENDIF
604     ENDIF
605     C the default for SEAICE_gamma_t_frz use to be SEAICE_gamma_t:
606     IF ( SEAICE_gamma_t .NE. UNSET_RL .AND.
607     & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
608     SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
609     ENDIF
610     C the default for SEAICE_availHeatFracFrz use to be SEAICE_availHeatFrac:
611     IF ( SEAICE_availHeatFrac.NE.UNSET_RL .AND.
612     & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
613     SEAICE_frazilFrac = SEAICE_availHeatFrac
614     ENDIF
615     IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
616     SEAICE_frazilFrac = 1. _d 0
617     ENDIF
618    
619     C- start by setting SEAICE_availHeatFrac (used in seaice_init_fixed.F
620     C to set SEAICE_mcPheePiston once drF is known)
621     IF ( SEAICE_gamma_t .NE. UNSET_RL ) THEN
622     IF ( SEAICE_availHeatFrac.EQ.UNSET_RL ) THEN
623     SEAICE_availHeatFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
624     ELSE
625     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
626     & 'both SEAICE_gamma_t & SEAICE_availHeatFrac'
627     CALL PRINT_ERROR( msgBuf , myThid)
628     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
629     ENDIF
630     ENDIF
631     IF ( SEAICE_mcPheePiston .NE. UNSET_RL .AND.
632     & SEAICE_availHeatFrac.NE. UNSET_RL ) THEN
633     IF ( SEAICE_gamma_t .EQ. UNSET_RL ) THEN
634     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
635     & 'both SEAICE_mcPheePiston & SEAICE_availHeatFrac'
636     ELSE
637     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
638     & 'both SEAICE_mcPheePiston & SEAICE_gamma_t'
639     ENDIF
640     CALL PRINT_ERROR( msgBuf , myThid)
641     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
642     ENDIF
643    
644 dimitri 1.2 CToM<<<
645     #ifdef SEAICE_ITD
646     C The ice thickness distribution module can only be used with
647     C package seaice calling
648     C SEAICE_ADVDIFF and
649     C SEAICE_GROWTH, i.e. needs usePW79thermodynamics = .TRUE.
650     useTHSice = .FALSE.
651     #endif
652     C>>>ToM
653 dimitri 1.1 IF ( useThSice ) THEN
654     C If the thsice package with the Winton thermodynamics is used
655     C is does not make sense to have the following parameters defined,
656     C so we reset them here
657     usePW79thermodynamics = .FALSE.
658     SEAICEadvHeff = .FALSE.
659     SEAICEadvArea = .FALSE.
660     SEAICEadvSnow = .FALSE.
661     SEAICEadvSalt = .FALSE.
662     ENDIF
663     C Set advection schemes to some sensible values if not done in data.seaice
664     IF ( SEAICEadvSchArea .EQ. UNSET_I )
665     & SEAICEadvSchArea = SEAICEadvSchHeff
666     IF ( SEAICEadvSchArea .EQ. UNSET_I )
667     & SEAICEadvSchArea = SEAICEadvScheme
668     IF ( SEAICEadvScheme .NE. SEAICEadvSchArea )
669     & SEAICEadvScheme = SEAICEadvSchArea
670     IF ( SEAICEadvSchHeff .EQ. UNSET_I )
671     & SEAICEadvSchHeff = SEAICEadvSchArea
672     IF ( SEAICEadvSchSnow .EQ. UNSET_I )
673     & SEAICEadvSchSnow = SEAICEadvSchHeff
674     IF ( SEAICEadvSchSalt .EQ. UNSET_I )
675     & SEAICEadvSchSalt = SEAICEadvSchHeff
676     C Set diffusivity to some sensible values if not done in data.seaice
677     IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
678     & SEAICEdiffKhArea = SEAICEdiffKhHeff
679     IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
680     & SEAICEdiffKhArea = 0. _d 0
681     IF ( SEAICEdiffKhHeff .EQ. UNSET_RL )
682     & SEAICEdiffKhHeff = SEAICEdiffKhArea
683     IF ( SEAICEdiffKhSnow .EQ. UNSET_RL )
684     & SEAICEdiffKhSnow = SEAICEdiffKhHeff
685     IF ( SEAICEdiffKhSalt .EQ. UNSET_RL )
686     & SEAICEdiffKhSalt = SEAICEdiffKhHeff
687     IF ( SEAICE_EPS_SQ .EQ. -99999. )
688     & SEAICE_EPS_SQ = SEAICE_EPS * SEAICE_EPS
689    
690     C- Retired parameters
691     IF ( SEAICE_sensHeat .NE. UNSET_RL ) THEN
692     nRetired = nRetired + 1
693     WRITE(msgBuf,'(A,A)')
694     & 'S/R SEAICE_READPARMS: "SEAICE_sensHeat" ',
695     & 'is no longer allowed in file "data.seaice"'
696     CALL PRINT_ERROR( msgBuf, myThid )
697     WRITE(msgBuf,'(A,A)')
698     & 'S/R SEAICE_READPARMS: set "SEAICE_cpAir", ',
699     & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
700     CALL PRINT_ERROR( msgBuf, myThid )
701     ENDIF
702     IF ( SEAICE_latentWater .NE. UNSET_RL ) THEN
703     nRetired = nRetired + 1
704     WRITE(msgBuf,'(A,A)')
705     & 'S/R SEAICE_READPARMS: "SEAICE_latentWater" ',
706     & 'is no longer allowed in file "data.seaice"'
707     CALL PRINT_ERROR( msgBuf, myThid )
708     WRITE(msgBuf,'(A,A)')
709     & 'S/R SEAICE_READPARMS: set "SEAICE_lhEvap", ',
710     & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
711     CALL PRINT_ERROR( msgBuf, myThid )
712     ENDIF
713     IF ( SEAICE_latentIce .NE. UNSET_RL ) THEN
714     nRetired = nRetired + 1
715     WRITE(msgBuf,'(A,A)')
716     & 'S/R SEAICE_READPARMS: "SEAICE_latentIce" ',
717     & 'is no longer allowed in file "data.seaice"'
718     CALL PRINT_ERROR( msgBuf, myThid )
719     WRITE(msgBuf,'(A,A)')
720     & 'S/R SEAICE_READPARMS: set "SEAICE_lhFusion", ',
721     & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
722     CALL PRINT_ERROR( msgBuf, myThid )
723     ENDIF
724     IF ( SEAICE_freeze .NE. UNSET_RL ) THEN
725     WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
726     & '"SEAICE_freeze" no longer allowed in file "data.seaice"'
727     CALL PRINT_ERROR( msgBuf, myThid )
728     WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
729     & 'set instead "SEAICE_tempFrz0" and "SEAICE_dTempFrz_dS"'
730     CALL PRINT_ERROR( msgBuf, myThid )
731     ENDIF
732     IF ( SEAICE_salinity .NE. UNSET_RL ) THEN
733     nRetired = nRetired + 1
734     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
735     & '"SEAICE_salinity" is no longer allowed in file "data.seaice"'
736     CALL PRINT_ERROR( msgBuf, myThid )
737     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
738     & 'set "SEAICE_saltFrac" instead'
739     CALL PRINT_ERROR( msgBuf, myThid )
740     ENDIF
741     IF ( SIsalFrac .NE. UNSET_RL ) THEN
742     nRetired = nRetired + 1
743     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
744     & '"SIsalFrac" is no longer allowed in file "data.seaice"'
745     CALL PRINT_ERROR( msgBuf, myThid )
746     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
747     & 'set "SEAICE_saltFrac" instead'
748     CALL PRINT_ERROR( msgBuf, myThid )
749     ENDIF
750     IF ( SIsal0 .NE. UNSET_RL ) THEN
751     nRetired = nRetired + 1
752     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
753     & '"SIsal0" is no longer allowed in file "data.seaice"'
754     CALL PRINT_ERROR( msgBuf, myThid )
755     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
756     & 'set "SEAICE_salt0" instead'
757     CALL PRINT_ERROR( msgBuf, myThid )
758     ENDIF
759     IF ( IceAgeFile .NE. ' ' ) THEN
760     nRetired = nRetired + 1
761     WRITE(msgBuf,'(A,A)')
762     & 'S/R SEAICE_READPARMS: "IceAgeFile" ',
763     & 'is no longer allowed in file "data.seaice"'
764     CALL PRINT_ERROR( msgBuf, myThid )
765     WRITE(msgBuf,'(A,A)')
766     & 'S/R SEAICE_READPARMS: replaced by ',
767     & '"IceAgeTrFile(SEAICE_num)" array '
768     CALL PRINT_ERROR( msgBuf, myThid )
769     ENDIF
770     IF ( areaMax .NE. UNSET_RL ) THEN
771     nRetired = nRetired + 1
772     WRITE(msgBuf,'(A,A)')
773     & 'S/R SEAICE_READPARMS: "areaMax" ',
774     & 'is no longer allowed in file "data.seaice"'
775     CALL PRINT_ERROR( msgBuf, myThid )
776     WRITE(msgBuf,'(A,A)')
777     & 'S/R SEAICE_READPARMS: replaced by ',
778     & '"SEAICE_area_max"'
779     CALL PRINT_ERROR( msgBuf, myThid )
780     ENDIF
781     IF ( areaMin .NE. UNSET_RL ) THEN
782     nRetired = nRetired + 1
783     WRITE(msgBuf,'(A,A)')
784     & 'S/R SEAICE_READPARMS: "areaMin" ',
785     & 'is no longer allowed in file "data.seaice"'
786     CALL PRINT_ERROR( msgBuf, myThid )
787     WRITE(msgBuf,'(A,A)')
788     & 'S/R SEAICE_READPARMS: replaced by ',
789     & '"SEAICE_area_reg" for regularization and ',
790     & '"SEAICE_area_floor" setting a lower bound'
791     CALL PRINT_ERROR( msgBuf, myThid )
792     ENDIF
793     IF (SEAICE_lhSublim .NE. UNSET_RL ) THEN
794     nRetired = nRetired + 1
795     WRITE(msgBuf,'(A,A)')
796     & 'S/R SEAICE_READPARMS: "SEAICE_lhSublim" ',
797     & 'is no longer allowed in file "data.seaice"'
798     CALL PRINT_ERROR( msgBuf, myThid )
799     WRITE(msgBuf,'(A,A)')
800     & 'S/R SEAICE_READPARMS: specify ',
801     & '"SEAICE_lhFusion" and "SEAICE_lhEvap" instead'
802     CALL PRINT_ERROR( msgBuf, myThid )
803     ENDIF
804     IF ( A22 .NE. UNSET_RL ) THEN
805     nRetired = nRetired + 1
806     WRITE(msgBuf,'(A,A)')
807     & 'S/R SEAICE_READPARMS: "A22" ',
808     & 'is no longer allowed in file "data.seaice"'
809     CALL PRINT_ERROR( msgBuf, myThid )
810     WRITE(msgBuf,'(A,A)')
811     & 'S/R SEAICE_READPARMS: replaced by ',
812     & '"SEAICE_area_reg" for regularization'
813     CALL PRINT_ERROR( msgBuf, myThid )
814     ENDIF
815     IF ( LAD .NE. UNSET_I ) THEN
816     nRetired = nRetired + 1
817     WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: "LAD" ',
818     & 'is no longer allowed in file "data.seaice"'
819     CALL PRINT_ERROR( msgBuf, myThid )
820     WRITE(msgBuf,'(A,A)') 'always use modified Euler step ',
821     & '(LAD==2) since Leap frog code (LAD==1) is gone.'
822     CALL PRINT_ERROR( msgBuf, myThid )
823     ENDIF
824     IF ( MAX_TICE .NE. UNSET_RL ) THEN
825     nRetired = nRetired + 1
826     WRITE(msgBuf,'(A,A)')
827     & 'S/R SEAICE_READPARMS: "MAX_TICE" ',
828     & 'is no longer allowed in file "data.seaice"'
829     CALL PRINT_ERROR( msgBuf, myThid )
830     ENDIF
831     IF ( hiceMin .NE. UNSET_RL ) THEN
832     nRetired = nRetired + 1
833     WRITE(msgBuf,'(A,A)')
834     & 'S/R SEAICE_READPARMS: "hiceMin" ',
835     & 'is no longer allowed in file "data.seaice"'
836     CALL PRINT_ERROR( msgBuf, myThid )
837     WRITE(msgBuf,'(A,A)')
838     & 'S/R SEAICE_READPARMS: replaced by ',
839     & '"SEAICE_hice_reg" for regularization'
840     CALL PRINT_ERROR( msgBuf, myThid )
841     ENDIF
842     IF ( .NOT. SEAICEadvAge ) THEN
843     nRetired = nRetired + 1
844     WRITE(msgBuf,'(A,A)')
845     & 'S/R SEAICE_READPARMS: "SEAICEadvAge" ',
846     & 'is no longer allowed in file "data.seaice"'
847     CALL PRINT_ERROR( msgBuf, myThid )
848     WRITE(msgBuf,'(A,A)')
849     & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
850     & 'replaced and extended SEAICE_AGE'
851     CALL PRINT_ERROR( msgBuf, myThid )
852     ENDIF
853     IF ( SEAICEadvSchAge .NE. UNSET_I ) THEN
854     nRetired = nRetired + 1
855     WRITE(msgBuf,'(A,A)')
856     & 'S/R SEAICE_READPARMS: "SEAICEadvSchAge" ',
857     & 'is no longer allowed in file "data.seaice"'
858     CALL PRINT_ERROR( msgBuf, myThid )
859     WRITE(msgBuf,'(A,A)')
860     & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
861     & 'replaced and extended SEAICE_AGE'
862     CALL PRINT_ERROR( msgBuf, myThid )
863     ENDIF
864     IF ( SEAICEdiffKhAge .NE. UNSET_RL ) THEN
865     nRetired = nRetired + 1
866     WRITE(msgBuf,'(A,A)')
867     & 'S/R SEAICE_READPARMS: "SEAICEdiffKhAge" ',
868     & 'is no longer allowed in file "data.seaice"'
869     CALL PRINT_ERROR( msgBuf, myThid )
870     WRITE(msgBuf,'(A,A)')
871     & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
872     & 'replaced and extended SEAICE_AGE'
873     CALL PRINT_ERROR( msgBuf, myThid )
874     ENDIF
875     IF ( ( IceAgeTrFile(1) .NE. ' ' ).OR.
876     & ( IceAgeTrFile(2) .NE. ' ' ).OR.
877     & ( IceAgeTrFile(3) .NE. ' ' ).OR.
878     & ( IceAgeTrFile(4) .NE. ' ' ) ) THEN
879     nRetired = nRetired + 1
880     WRITE(msgBuf,'(A,A)')
881     & 'S/R SEAICE_READPARMS: "IceAgeTrFile" ',
882     & 'is no longer allowed in file "data.seaice"'
883     CALL PRINT_ERROR( msgBuf, myThid )
884     WRITE(msgBuf,'(A,A)')
885     & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
886     & 'replaced and extended SEAICE_AGE'
887     CALL PRINT_ERROR( msgBuf, myThid )
888     ENDIF
889     IF ( SEAICEturbFluxFormula .NE. UNSET_I ) THEN
890     WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
891     & '"SEAICEturbFluxFormula" no longer allowed in "data.seaice"'
892     CALL PRINT_ERROR( msgBuf, myThid )
893     WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
894     & ' Set instead "SEAICE_mcPheePiston" and "SEAICE_frazilFrac"'
895     CALL PRINT_ERROR( msgBuf, myThid )
896     ENDIF
897    
898     IF ( nRetired .GT. 0 ) THEN
899     WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ',
900     & 'Error reading parameter file "data.seaice"'
901     CALL PRINT_ERROR( msgBuf, myThid )
902     WRITE(msgBuf,'(A)')
903     & 'some out of date parameters were found in the namelist'
904     CALL PRINT_ERROR( msgBuf, myThid )
905     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
906     ENDIF
907    
908     C-- Now set-up any remaining parameters that result from other params
909    
910     C- convert SEAICE_doOpenWaterGrowth/Melt logical switch to numerical
911     C facOpenGrow/facOpenMelt
912     facOpenGrow = 0. _d 0
913     facOpenMelt = 0. _d 0
914     IF (SEAICE_doOpenWaterGrowth) facOpenGrow = 1. _d 0
915     IF (SEAICE_doOpenWaterMelt) facOpenMelt = 1. _d 0
916    
917     C- Set Output type flags :
918     SEAICE_tave_mdsio = .TRUE.
919     SEAICE_dump_mdsio = .TRUE.
920     SEAICE_mon_stdio = .TRUE.
921     #ifdef ALLOW_MNC
922     IF (useMNC) THEN
923     IF ( .NOT.outputTypesInclusive
924     & .AND. SEAICE_tave_mnc ) SEAICE_tave_mdsio = .FALSE.
925     IF ( .NOT.outputTypesInclusive
926     & .AND. SEAICE_dump_mnc ) SEAICE_dump_mdsio = .FALSE.
927     IF ( .NOT.outputTypesInclusive
928     & .AND. SEAICE_mon_mnc ) SEAICE_mon_stdio = .FALSE.
929     ENDIF
930     #endif
931    
932     C Check the consitency of a few parameters
933     IF ( SEAICE_emissivity .LT. 1. _d -04 ) THEN
934     WRITE(msgBuf,'(2A)')
935     & 'SEAICE_emissivity is no longer emissivity*(boltzmann ',
936     & 'constant) but really an emissivity.'
937     CALL PRINT_ERROR( msgBuf , myThid)
938     WRITE(msgBuf,'(2A)')
939     & 'Typical values are near 1 ',
940     & '(default is 5.5/5.67=0.9700176...).'
941     CALL PRINT_ERROR( msgBuf , myThid)
942     WRITE(msgBuf,'(A,E13.6,A)')
943     & 'Please change SEAICE_emissivity in data.seaice to ',
944     & SEAICE_emissivity, '/5.67e-8.'
945     CALL PRINT_ERROR( msgBuf , myThid)
946     STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
947     ENDIF
948    
949     IF ( DIFF1 .EQ. UNSET_RL ) THEN
950     DIFF1 = 0. _d 0
951     chkFlag = .FALSE.
952     IF ( SEAICEadvScheme.EQ.2 ) THEN
953     C-- Since DIFF1 default value has been changed (2011/05/29), issue a warning
954     C in case using centered avection scheme without any diffusion:
955     IF ( SEAICEadvHeff .AND. SEAICEdiffKhHeff .EQ. 0. _d 0 ) THEN
956     WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
957     & 'will use AdvScheme = 2 for HEFF without any diffusion'
958     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
959     & SQUEEZE_RIGHT, myThid )
960     chkFlag = .TRUE.
961     ENDIF
962     IF ( SEAICEadvArea .AND. SEAICEdiffKhArea .EQ. 0. _d 0 ) THEN
963     WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
964     & 'will use AdvScheme = 2 for AREA without any diffusion'
965     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
966     & SQUEEZE_RIGHT, myThid )
967     chkFlag = .TRUE.
968     ENDIF
969     IF ( SEAICEadvSnow .AND. SEAICEdiffKhSnow .EQ. 0. _d 0 ) THEN
970     WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
971     & 'will use AdvScheme = 2 for HSNOW without any diffusion'
972     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
973     & SQUEEZE_RIGHT, myThid )
974     chkFlag = .TRUE.
975     ENDIF
976     IF ( SEAICEadvSalt .AND. SEAICEdiffKhSalt .EQ. 0. _d 0 ) THEN
977     WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
978     & 'will use AdvScheme = 2 for HSALT without any diffusion'
979     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
980     & SQUEEZE_RIGHT, myThid )
981     chkFlag = .TRUE.
982     ENDIF
983     IF ( chkFlag ) THEN
984     WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
985     & 'since DIFF1 is set to 0 (= new DIFF1 default value)'
986     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
987     & SQUEEZE_RIGHT, myThid )
988     ENDIF
989     ENDIF
990     ENDIF
991    
992     _END_MASTER(myThid)
993    
994     C-- Everyone else must wait for the parameters to be loaded
995     _BARRIER
996    
997     RETURN
998     END

  ViewVC Help
Powered by ViewVC 1.1.22