35 |
#ifdef ALLOW_EXF |
#ifdef ALLOW_EXF |
36 |
# include "EXF_CONSTANTS.h" |
# include "EXF_CONSTANTS.h" |
37 |
#endif /* ALLOW_EXF */ |
#endif /* ALLOW_EXF */ |
38 |
|
#ifdef ALLOW_AUTODIFF |
39 |
|
# include "AUTODIFF_PARAMS.h" |
40 |
|
#endif |
41 |
|
|
42 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
43 |
C === Routine arguments === |
C === Routine arguments === |
71 |
C SEAICE_freeze :: FREEZING TEMP. OF SEA WATER |
C SEAICE_freeze :: FREEZING TEMP. OF SEA WATER |
72 |
_RL SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce |
_RL SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce |
73 |
_RL SEAICE_salinity, SIsalFRAC, SIsal0 |
_RL SEAICE_salinity, SIsalFRAC, SIsal0 |
74 |
_RL SEAICE_lhSublim, SEAICE_freeze |
_RL SEAICE_lhSublim, SEAICE_freeze, MAX_HEFF |
75 |
_RL areaMin, areaMax, A22, hiceMin, MAX_TICE |
_RL areaMin, areaMax, A22, hiceMin, MAX_TICE |
76 |
LOGICAL SEAICEadvAge |
LOGICAL SEAICEadvAge |
77 |
INTEGER SEAICEadvSchAge, LAD, SEAICEturbFluxFormula |
INTEGER SEAICEadvSchAge, LAD, SEAICEturbFluxFormula |
80 |
|
|
81 |
C-- SEAICE parameters |
C-- SEAICE parameters |
82 |
NAMELIST /SEAICE_PARM01/ |
NAMELIST /SEAICE_PARM01/ |
83 |
& SEAICEwriteState, SEAICEuseDYNAMICS, SEAICEuseTEM, |
& SEAICEuseDYNAMICS, SEAICEuseFREEDRIFT, |
84 |
& SEAICEuseEVPpickup, SEAICEuseFluxForm, |
& SEAICEuseTEM, SEAICEuseMetricTerms, SEAICEuseTilt, |
|
& SEAICEuseMetricTerms, |
|
85 |
& useHB87stressCoupling, SEAICEuseFlooding, |
& useHB87stressCoupling, SEAICEuseFlooding, |
86 |
& usePW79thermodynamics, useMaykutSatVapPoly, |
& usePW79thermodynamics, useMaykutSatVapPoly, |
87 |
& SEAICErestoreUnderIce, |
& SEAICErestoreUnderIce, |
89 |
& SEAICEadvHeff, SEAICEadvArea, SEAICEadvSnow, |
& SEAICEadvHeff, SEAICEadvArea, SEAICEadvSnow, |
90 |
& SEAICEadvSalt, SEAICEadvAge, |
& SEAICEadvSalt, SEAICEadvAge, |
91 |
& SEAICE_clipVelocities, SEAICE_maskRHS, SEAICE_no_slip, |
& SEAICE_clipVelocities, SEAICE_maskRHS, SEAICE_no_slip, |
92 |
& LAD, IMAX_TICE, postSolvTempIter, |
& SEAICEetaZmethod, LAD, IMAX_TICE, postSolvTempIter, |
93 |
& SEAICEadvScheme, SEAICEadvSchArea, |
& SEAICEuseFluxForm, SEAICEadvScheme, SEAICEadvSchArea, |
94 |
& SEAICEadvSchHeff, SEAICEadvSchSnow, |
& SEAICEadvSchHeff, SEAICEadvSchSnow, |
95 |
& SEAICEadvSchSalt, SEAICEadvSchAge, |
& SEAICEadvSchSalt, SEAICEadvSchAge, |
96 |
& SEAICEdiffKhHeff, SEAICEdiffKhSnow, SEAICEdiffKhArea, |
& SEAICEdiffKhHeff, SEAICEdiffKhSnow, SEAICEdiffKhArea, |
97 |
& SEAICEdiffKhSalt, SEAICEdiffKhAge, |
& SEAICEdiffKhSalt, SEAICEdiffKhAge, DIFF1, |
98 |
& SEAICE_deltaTtherm, SEAICE_deltaTdyn, |
& SEAICE_deltaTtherm, SEAICE_deltaTdyn, |
99 |
|
& SEAICE_LSRrelaxU, SEAICE_LSRrelaxV, |
100 |
|
& SOLV_MAX_ITERS, SOLV_NCHECK, NPSEUDOTIMESTEPS, |
101 |
|
& LSR_ERROR, LSR_mixIniGuess, SEAICEuseMultiTileSolver, |
102 |
& SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax, |
& SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax, |
103 |
& SEAICE_evpDampC, SEAICE_zetaMin, SEAICE_zetaMaxFac, |
& SEAICE_evpDampC, SEAICEnEVPstarSteps, |
104 |
|
& SEAICE_zetaMin, SEAICE_zetaMaxFac, |
105 |
& SEAICEuseJFNK, SEAICEnewtonIterMax, SEAICEkrylovIterMax, |
& SEAICEuseJFNK, SEAICEnewtonIterMax, SEAICEkrylovIterMax, |
106 |
& JFNKgamma_nonlin,JFNKres_t,JFNKgamma_lin_min,JFNKgamma_lin_max, |
& SEAICE_JFNK_lsIter, SEAICE_JFNK_tolIter, JFNKres_t,JFNKres_tFac, |
107 |
|
& JFNKgamma_nonlin,JFNKgamma_lin_min,JFNKgamma_lin_max, |
108 |
|
& SEAICE_JFNKepsilon, SEAICE_OLx, SEAICE_OLy, |
109 |
& SEAICEpresH0, SEAICEpresPow0, SEAICEpresPow1, |
& SEAICEpresH0, SEAICEpresPow0, SEAICEpresPow1, |
|
& SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq, |
|
110 |
& SEAICE_initialHEFF, SEAICEturbFluxFormula, |
& SEAICE_initialHEFF, SEAICEturbFluxFormula, |
111 |
& SEAICE_areaGainFormula, SEAICE_areaLossFormula, |
& SEAICE_areaGainFormula, SEAICE_areaLossFormula, |
112 |
& SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt, |
& SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt, |
132 |
& SEAICE_mcPheeStepFunc, SEAICE_gamma_t, SEAICE_gamma_t_frz, |
& SEAICE_mcPheeStepFunc, SEAICE_gamma_t, SEAICE_gamma_t_frz, |
133 |
& SEAICE_availHeatFrac, SEAICE_availHeatFracFrz, |
& SEAICE_availHeatFrac, SEAICE_availHeatFracFrz, |
134 |
& AreaFile, HeffFile, uIceFile, vIceFile, HsnowFile, HsaltFile, |
& AreaFile, HeffFile, uIceFile, vIceFile, HsnowFile, HsaltFile, |
|
& SOLV_MAX_ITERS, SOLV_NCHECK, NPSEUDOTIMESTEPS, LSR_mixIniGuess, |
|
|
& LSR_ERROR, DIFF1, SEAICEuseFREEDRIFT, SEAICEuseTILT, |
|
135 |
& SEAICEheatConsFix, SEAICE_multDim, SEAICE_useMultDimSnow, |
& SEAICEheatConsFix, SEAICE_multDim, SEAICE_useMultDimSnow, |
136 |
& SEAICE_area_reg, SEAICE_hice_reg, |
& SEAICE_area_reg, SEAICE_hice_reg, |
137 |
& SEAICE_area_floor, SEAICE_area_max, SEAICE_tauAreaObsRelax, |
& SEAICE_area_floor, SEAICE_area_max, SEAICE_tauAreaObsRelax, |
138 |
& SEAICE_airTurnAngle, SEAICE_waterTurnAngle, |
& SEAICE_airTurnAngle, SEAICE_waterTurnAngle, |
139 |
& MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE, |
& MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE, |
140 |
& SEAICE_EPS, SEAICE_EPS_SQ, |
& SEAICE_EPS, SEAICE_EPS_SQ, |
141 |
|
& SEAICEwriteState, SEAICEuseEVPpickup, SEAICEuseEVPstar, |
142 |
|
& SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq, |
143 |
& SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc, |
& SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc, |
|
& SEAICE_debugPointI, SEAICE_debugPointJ |
|
144 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
145 |
CToM<<< |
& Hlimit_c1, Hlimit_c2, Hlimit_c3, |
|
C & SEAICE_debugPointI, SEAICE_debugPointJ |
|
|
& SEAICE_debugPointI, SEAICE_debugPointJ, |
|
|
& Hlimit_c1, Hlimit_c2, Hlimit_c3 |
|
|
C>>>ToM |
|
146 |
#endif |
#endif |
147 |
|
& SEAICE_debugPointI, SEAICE_debugPointJ |
148 |
|
|
149 |
#ifdef ALLOW_COST |
#ifdef ALLOW_COST |
150 |
NAMELIST /SEAICE_PARM02/ |
NAMELIST /SEAICE_PARM02/ |
173 |
_BEGIN_MASTER(myThid) |
_BEGIN_MASTER(myThid) |
174 |
|
|
175 |
C-- set default sea ice parameters |
C-- set default sea ice parameters |
|
SEAICEwriteState = .FALSE. |
|
176 |
#ifdef SEAICE_ALLOW_DYNAMICS |
#ifdef SEAICE_ALLOW_DYNAMICS |
177 |
SEAICEuseDYNAMICS = .TRUE. |
SEAICEuseDYNAMICS = .TRUE. |
178 |
#else |
#else |
180 |
#endif |
#endif |
181 |
SEAICEadjMODE = 0 |
SEAICEadjMODE = 0 |
182 |
SEAICEuseFREEDRIFT = .FALSE. |
SEAICEuseFREEDRIFT = .FALSE. |
183 |
SEAICEuseTILT = .TRUE. |
SEAICEuseTilt = .TRUE. |
184 |
SEAICEheatConsFix = .FALSE. |
SEAICEheatConsFix = .FALSE. |
185 |
SEAICEuseTEM = .FALSE. |
SEAICEuseTEM = .FALSE. |
186 |
SEAICEuseMetricTerms = .TRUE. |
SEAICEuseMetricTerms = .TRUE. |
187 |
SEAICEuseEVPpickup = .TRUE. |
SEAICEuseEVPpickup = .TRUE. |
188 |
SEAICEuseFluxForm = .TRUE. |
SEAICEuseEVPstar = .FALSE. |
|
C-- old default: |
|
|
c SEAICEuseFluxForm = .FALSE. |
|
189 |
SEAICErestoreUnderIce = .FALSE. |
SEAICErestoreUnderIce = .FALSE. |
190 |
SEAICE_salinityTracer = .FALSE. |
SEAICE_salinityTracer = .FALSE. |
191 |
SEAICE_ageTracer = .FALSE. |
SEAICE_ageTracer = .FALSE. |
192 |
useHB87stressCoupling = .FALSE. |
useHB87stressCoupling = .FALSE. |
193 |
usePW79thermodynamics = .TRUE. |
usePW79thermodynamics = .TRUE. |
194 |
useMaykutSatVapPoly = .FALSE. |
useMaykutSatVapPoly = .FALSE. |
195 |
|
SEAICEuseFluxForm = .TRUE. |
196 |
SEAICEadvHeff = .TRUE. |
SEAICEadvHeff = .TRUE. |
197 |
SEAICEadvArea = .TRUE. |
SEAICEadvArea = .TRUE. |
198 |
SEAICEadvSnow = .TRUE. |
SEAICEadvSnow = .TRUE. |
205 |
SEAICE_no_slip = .FALSE. |
SEAICE_no_slip = .FALSE. |
206 |
SEAICE_clipVelocities = .FALSE. |
SEAICE_clipVelocities = .FALSE. |
207 |
SEAICE_maskRHS = .FALSE. |
SEAICE_maskRHS = .FALSE. |
208 |
|
SEAICEetaZmethod = 0 |
209 |
SEAICEadvScheme = 2 |
SEAICEadvScheme = 2 |
210 |
SEAICEadvSchArea = UNSET_I |
SEAICEadvSchArea = UNSET_I |
211 |
SEAICEadvSchHeff = UNSET_I |
SEAICEadvSchHeff = UNSET_I |
215 |
SEAICEdiffKhHeff = UNSET_RL |
SEAICEdiffKhHeff = UNSET_RL |
216 |
SEAICEdiffKhSnow = UNSET_RL |
SEAICEdiffKhSnow = UNSET_RL |
217 |
SEAICEdiffKhSalt = UNSET_RL |
SEAICEdiffKhSalt = UNSET_RL |
218 |
|
DIFF1 = UNSET_RL |
219 |
|
C-- old DIFF1 default: |
220 |
|
c DIFF1 = .004 _d 0 |
221 |
SEAICE_deltaTtherm = dTtracerLev(1) |
SEAICE_deltaTtherm = dTtracerLev(1) |
222 |
SEAICE_deltaTdyn = dTtracerLev(1) |
SEAICE_deltaTdyn = dTtracerLev(1) |
223 |
SEAICE_deltaTevp = UNSET_RL |
SEAICE_deltaTevp = UNSET_RL |
225 |
SEAICEuseJFNK = .FALSE. |
SEAICEuseJFNK = .FALSE. |
226 |
SEAICEnewtonIterMax = 10 |
SEAICEnewtonIterMax = 10 |
227 |
SEAICEkrylovIterMax = 10 |
SEAICEkrylovIterMax = 10 |
228 |
|
SEAICE_JFNK_lsIter = UNSET_I |
229 |
|
SEAICE_JFNK_tolIter = 100 |
230 |
|
SEAICE_OLx = OLx-2 |
231 |
|
SEAICE_OLy = OLy-2 |
232 |
JFNKgamma_nonlin = 1. _d -05 |
JFNKgamma_nonlin = 1. _d -05 |
233 |
JFNKgamma_lin_min = 0.10 _d 0 |
JFNKgamma_lin_min = 0.10 _d 0 |
234 |
JFNKgamma_lin_max = 0.99 _d 0 |
JFNKgamma_lin_max = 0.99 _d 0 |
235 |
JFNKres_t = UNSET_RL |
JFNKres_t = UNSET_RL |
236 |
|
JFNKres_tFac = UNSET_RL |
237 |
|
SEAICE_JFNKepsilon = 1. _d -06 |
238 |
C Hunke, JCP, 2001 use 615 kg/m^2 for this, but does not recommend using it |
C Hunke, JCP, 2001 use 615 kg/m^2 for this, but does not recommend using it |
239 |
SEAICE_evpDampC = -1. _d 0 |
SEAICE_evpDampC = -1. _d 0 |
240 |
SEAICE_zetaMin = 0. _d 0 |
SEAICE_zetaMin = 0. _d 0 |
242 |
SEAICEpresH0 = 1. _d 0 |
SEAICEpresH0 = 1. _d 0 |
243 |
SEAICEpresPow0 = 1 |
SEAICEpresPow0 = 1 |
244 |
SEAICEpresPow1 = 1 |
SEAICEpresPow1 = 1 |
|
SEAICE_monFreq = monitorFreq |
|
|
SEAICE_dumpFreq = dumpFreq |
|
|
SEAICE_taveFreq = taveFreq |
|
|
SEAICE_elasticParm = 0.33333333333333333333333333 _d 0 |
|
245 |
SEAICE_evpTauRelax = -1. _d 0 |
SEAICE_evpTauRelax = -1. _d 0 |
246 |
#ifdef ALLOW_MNC |
SEAICE_elasticParm = 0.33333333333333333333333333 _d 0 |
247 |
SEAICE_tave_mnc = timeave_mnc |
SEAICE_evpAlpha = UNSET_RL |
248 |
SEAICE_dump_mnc = snapshot_mnc |
SEAICE_evpBeta = UNSET_RL |
249 |
SEAICE_mon_mnc = monitor_mnc |
SEAICEnEVPstarSteps = UNSET_I |
|
#else |
|
|
SEAICE_tave_mnc = .FALSE. |
|
|
SEAICE_dump_mnc = .FALSE. |
|
|
SEAICE_mon_mnc = .FALSE. |
|
|
#endif |
|
250 |
SEAICE_initialHEFF = ZERO |
SEAICE_initialHEFF = ZERO |
251 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
|
CToM<<< |
|
252 |
C Coefficients used to calculate sea ice thickness category limits |
C Coefficients used to calculate sea ice thickness category limits |
253 |
C after Lipscomb et al. (2001, JGR), Equ. 22 |
C after Lipscomb et al. (2001, JGR), Equ. 22 |
254 |
C choose between |
C choose between |
255 |
C - original parameters of Lipscomb et al. (2001): |
C - original parameters of Lipscomb et al. (2001): |
256 |
C c1=3.0/N, c2=15*c1, c3=3.0 |
C c1=3.0/N, c2=15*c1, c3=3.0 |
257 |
C - and a higher resolution of thin end of ITD: |
C - and a higher resolution of thin end of ITD: |
258 |
C c1=1.5/N, c2=42*c1, c3=3.3 |
C c1=1.5/N, c2=42*c1, c3=3.3 |
259 |
Hlimit_c1 = 3.0 |
Hlimit_c1 = 3.0 |
260 |
Hlimit_c2 = 15. |
Hlimit_c2 = 15. |
261 |
Hlimit_c3 = 3.0 |
Hlimit_c3 = 3.0 |
|
C>>>ToM |
|
262 |
#endif |
#endif |
263 |
SEAICE_rhoIce = 0.91 _d +03 |
SEAICE_rhoIce = 0.91 _d +03 |
264 |
SEAICE_rhoSnow = 330. _d 0 |
SEAICE_rhoSnow = 330. _d 0 |
320 |
SEAICE_shortwave = 0.30 _d 0 |
SEAICE_shortwave = 0.30 _d 0 |
321 |
SEAICE_salt0 = 0.0 _d 0 |
SEAICE_salt0 = 0.0 _d 0 |
322 |
SEAICE_saltFrac = 0.0 _d 0 |
SEAICE_saltFrac = 0.0 _d 0 |
323 |
CToM<<< |
#ifdef SEAICE_ITD |
|
C#ifdef SEAICE_MULTICATEGORY |
|
|
#if defined(SEAICE_MULTICATEGORY) || defined(SEAICE_ITD) |
|
324 |
C in case defined(SEAICE_ITD) MULTDIM = nITD (see SEAICE_SIZE.h) |
C in case defined(SEAICE_ITD) MULTDIM = nITD (see SEAICE_SIZE.h) |
325 |
C because SEAICE_ITD uses code related to SEAICE_MULTICATEGORY |
c SEAICE_multDim = MULTDIM |
326 |
C>>>ToM |
C the switch MULTICATEGORY (and with it parameter MULTDIM) has been retired |
327 |
SEAICE_multDim = MULTDIM |
C and SEAICE_multDim is now a runtime parameter; |
328 |
|
C in case SEAICE_multDim is given in data.seaice it needs to be overwritten |
329 |
|
C after PARM01 was read (see below) |
330 |
|
SEAICE_multDim = nITD |
331 |
#else |
#else |
332 |
SEAICE_multDim = 1 |
SEAICE_multDim = 1 |
333 |
#endif |
#endif |
342 |
SEAICE_gamma_t_frz = UNSET_RL |
SEAICE_gamma_t_frz = UNSET_RL |
343 |
SEAICE_availHeatFrac = UNSET_RL |
SEAICE_availHeatFrac = UNSET_RL |
344 |
SEAICE_availHeatFracFrz = UNSET_RL |
SEAICE_availHeatFracFrz = UNSET_RL |
|
#ifndef SEAICE_GROWTH_LEGACY |
|
345 |
SEAICE_doOpenWaterGrowth=.TRUE. |
SEAICE_doOpenWaterGrowth=.TRUE. |
346 |
SEAICE_doOpenWaterMelt=.FALSE. |
SEAICE_doOpenWaterMelt=.FALSE. |
347 |
SEAICE_areaLossFormula=1 |
SEAICE_areaLossFormula=1 |
348 |
SEAICE_areaGainFormula=1 |
SEAICE_areaGainFormula=1 |
|
#else |
|
|
SEAICE_doOpenWaterGrowth=.FALSE. |
|
|
SEAICE_doOpenWaterMelt=.FALSE. |
|
|
SEAICE_areaGainFormula=2 |
|
|
SEAICE_areaLossFormula=3 |
|
|
#endif |
|
349 |
SEAICE_tempFrz0 = 0.0901 _d 0 |
SEAICE_tempFrz0 = 0.0901 _d 0 |
350 |
SEAICE_dTempFrz_dS = -0.0575 _d 0 |
SEAICE_dTempFrz_dS = -0.0575 _d 0 |
351 |
C old default for constant freezing point |
C old default for constant freezing point |
361 |
vIceFile = ' ' |
vIceFile = ' ' |
362 |
IMAX_TICE = 10 |
IMAX_TICE = 10 |
363 |
postSolvTempIter = 2 |
postSolvTempIter = 2 |
364 |
|
C LSR parameters |
365 |
|
SEAICE_LSRrelaxU = 0.95 _d 0 |
366 |
|
SEAICE_LSRrelaxV = 0.95 _d 0 |
367 |
SOLV_MAX_ITERS = UNSET_I |
SOLV_MAX_ITERS = UNSET_I |
368 |
SOLV_NCHECK= 2 |
SOLV_NCHECK= 2 |
369 |
C two pseudo time steps correspond to the original modified |
C two pseudo time steps correspond to the original modified |
375 |
LSR_mixIniGuess = -1 |
LSR_mixIniGuess = -1 |
376 |
#endif |
#endif |
377 |
LSR_ERROR = 0.0001 _d 0 |
LSR_ERROR = 0.0001 _d 0 |
378 |
DIFF1 = UNSET_RL |
SEAICEuseMultiTileSolver = .FALSE. |
|
C-- old DIFF1 default: |
|
|
c DIFF1 = .004 _d 0 |
|
379 |
|
|
|
#ifdef SEAICE_GROWTH_LEGACY |
|
|
SEAICE_area_reg = 0.15 _d 0 |
|
|
SEAICE_area_floor = 0.15 _d 0 |
|
|
#else |
|
380 |
SEAICE_area_floor = siEPS |
SEAICE_area_floor = siEPS |
381 |
SEAICE_area_reg = siEPS |
SEAICE_area_reg = siEPS |
|
#endif |
|
382 |
SEAICE_hice_reg = 0.05 _d 0 |
SEAICE_hice_reg = 0.05 _d 0 |
383 |
SEAICE_area_max = 1.00 _d 0 |
SEAICE_area_max = 1.00 _d 0 |
384 |
|
|
385 |
SEAICE_airTurnAngle = 0.0 _d 0 |
SEAICE_airTurnAngle = 0.0 _d 0 |
386 |
SEAICE_waterTurnAngle = 0.0 _d 0 |
SEAICE_waterTurnAngle = 0.0 _d 0 |
|
MAX_HEFF = 10. _d 0 |
|
387 |
MIN_ATEMP = -50. _d 0 |
MIN_ATEMP = -50. _d 0 |
388 |
MIN_LWDOWN = 60. _d 0 |
MIN_LWDOWN = 60. _d 0 |
389 |
MIN_TICE = -50. _d 0 |
MIN_TICE = -50. _d 0 |
390 |
SEAICE_EPS = 1. _d -10 |
SEAICE_EPS = 1. _d -10 |
391 |
SEAICE_EPS_SQ = -99999. |
SEAICE_EPS_SQ = -99999. |
392 |
|
|
393 |
|
SEAICEwriteState = .FALSE. |
394 |
|
SEAICE_monFreq = monitorFreq |
395 |
|
SEAICE_dumpFreq = dumpFreq |
396 |
|
SEAICE_taveFreq = taveFreq |
397 |
|
#ifdef ALLOW_MNC |
398 |
|
SEAICE_tave_mnc = timeave_mnc |
399 |
|
SEAICE_dump_mnc = snapshot_mnc |
400 |
|
SEAICE_mon_mnc = monitor_mnc |
401 |
|
#else |
402 |
|
SEAICE_tave_mnc = .FALSE. |
403 |
|
SEAICE_dump_mnc = .FALSE. |
404 |
|
SEAICE_mon_mnc = .FALSE. |
405 |
|
#endif |
406 |
|
SEAICE_debugPointI = UNSET_I |
407 |
|
SEAICE_debugPointJ = UNSET_I |
408 |
|
|
409 |
C- Retired parameters: |
C- Retired parameters: |
410 |
c LAD = 2 |
c LAD = 2 |
411 |
LAD = UNSET_I |
LAD = UNSET_I |
438 |
IceAgeTrFile(4) = ' ' |
IceAgeTrFile(4) = ' ' |
439 |
SEAICEturbFluxFormula =UNSET_I |
SEAICEturbFluxFormula =UNSET_I |
440 |
SEAICE_freeze = UNSET_RL |
SEAICE_freeze = UNSET_RL |
441 |
|
MAX_HEFF = UNSET_RL |
442 |
C- end retired parameters |
C- end retired parameters |
|
SEAICE_debugPointI = UNSET_I |
|
|
SEAICE_debugPointJ = UNSET_I |
|
443 |
|
|
444 |
#ifdef ALLOW_COST |
#ifdef ALLOW_COST |
445 |
locDate(1) = 0 |
locDate(1) = 0 |
515 |
|
|
516 |
CLOSE(iUnit) |
CLOSE(iUnit) |
517 |
|
|
518 |
|
#ifdef SEAICE_ITD |
519 |
|
C SEAICE_multDim has become a runtime parameter but if SEAICE_ITD is defined |
520 |
|
C it needs to equal nITD because of shared code (mostly in seaice_growth.F). |
521 |
|
C nITD is set in SEAICE_SIZE.h |
522 |
|
SEAICE_multDim = nITD |
523 |
|
#endif |
524 |
|
|
525 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
526 |
& ' SEAICE_READPARMS: finished reading data.seaice' |
& ' SEAICE_READPARMS: finished reading data.seaice' |
527 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
565 |
IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE. |
IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE. |
566 |
IF ( SEAICEuseEVP ) THEN |
IF ( SEAICEuseEVP ) THEN |
567 |
IF ( (SEAICE_deltaTdyn/SEAICE_deltaTevp) .NE. |
IF ( (SEAICE_deltaTdyn/SEAICE_deltaTevp) .NE. |
568 |
& INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) ) THEN |
& INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) .AND. |
569 |
|
& .NOT. SEAICEuseEVPstar ) THEN |
570 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
571 |
& 'SEAICE_deltaTevp must be a factor of SEAICE_deltaTdyn.' |
& 'SEAICE_deltaTevp must be a factor of SEAICE_deltaTdyn.' |
572 |
CALL PRINT_ERROR( msgBuf , myThid) |
CALL PRINT_ERROR( msgBuf , myThid) |
580 |
ENDIF |
ENDIF |
581 |
IF ( SEAICE_evpTauRelax .LE. 0. _d 0 ) |
IF ( SEAICE_evpTauRelax .LE. 0. _d 0 ) |
582 |
& SEAICE_evpTauRelax = SEAICE_deltaTdyn*SEAICE_elasticParm |
& SEAICE_evpTauRelax = SEAICE_deltaTdyn*SEAICE_elasticParm |
583 |
|
IF ( SEAICE_evpBeta .EQ. UNSET_RL ) THEN |
584 |
|
SEAICE_evpBeta = SEAICE_deltaTdyn/SEAICE_deltaTevp |
585 |
|
ELSE |
586 |
|
SEAICE_deltaTevp = SEAICE_deltaTdyn/SEAICE_evpBeta |
587 |
|
ENDIF |
588 |
|
IF ( SEAICE_evpAlpha .EQ. UNSET_RL ) THEN |
589 |
|
SEAICE_evpAlpha = 2. _d 0 * SEAICE_evpTauRelax/SEAICE_deltaTevp |
590 |
|
ELSE |
591 |
|
SEAICE_evpTauRelax = 0.5 _d 0 *SEAICE_evpAlpha*SEAICE_deltaTevp |
592 |
|
ENDIF |
593 |
|
C Check if all parameters are set. |
594 |
ENDIF |
ENDIF |
595 |
#endif /* SEAICE_ALLOW_EVP */ |
#endif /* SEAICE_ALLOW_EVP */ |
596 |
|
|
615 |
C maximum number of LSOR steps as preconditioner in JFNK solver |
C maximum number of LSOR steps as preconditioner in JFNK solver |
616 |
IF ( SEAICEuseJFNK ) SOLV_MAX_ITERS = 10 |
IF ( SEAICEuseJFNK ) SOLV_MAX_ITERS = 10 |
617 |
ENDIF |
ENDIF |
618 |
|
C Turn line search with JFNK solver off by default by making this |
619 |
|
C number much larger than the maximum allowed Newton iterations |
620 |
|
IF ( SEAICE_JFNK_lsIter .EQ. UNSET_I ) |
621 |
|
& SEAICE_JFNK_lsIter = 2*SEAICEnewtonIterMax |
622 |
|
|
623 |
C- The old ways of specifying mcPheeTaper, mcPheePiston & frazilFrac: |
C- The old ways of specifying mcPheeTaper, mcPheePiston & frazilFrac: |
624 |
C a) prevent multiple specification of the same coeff; |
C a) prevent multiple specification of the same coeff; |
702 |
ENDIF |
ENDIF |
703 |
|
|
704 |
#ifdef SEAICE_ITD |
#ifdef SEAICE_ITD |
705 |
CToM<<< |
C The ice thickness distribution (ITD) module can only be used with |
706 |
C The ice thickness distribution module can only be used with |
C package seaice thermodynamics (seaice_growth) |
|
C package seaice calling |
|
707 |
C SEAICE_ADVDIFF and |
C SEAICE_ADVDIFF and |
708 |
C SEAICE_GROWTH, i.e. needs usePW79thermodynamics = .TRUE. |
C SEAICE_GROWTH, i.e. needs usePW79thermodynamics = .TRUE. |
709 |
useTHSice = .FALSE. |
useTHSice = .FALSE. |
|
C>>>ToM |
|
710 |
#endif |
#endif |
711 |
IF ( useThSice ) THEN |
IF ( useThSice ) THEN |
712 |
C If the thsice package with the Winton thermodynamics is used |
C If the thsice package with the Winton thermodynamics is used |
952 |
& ' Set instead "SEAICE_mcPheePiston" and "SEAICE_frazilFrac"' |
& ' Set instead "SEAICE_mcPheePiston" and "SEAICE_frazilFrac"' |
953 |
CALL PRINT_ERROR( msgBuf, myThid ) |
CALL PRINT_ERROR( msgBuf, myThid ) |
954 |
ENDIF |
ENDIF |
955 |
|
IF ( MAX_HEFF .NE. UNSET_RL ) THEN |
956 |
|
nRetired = nRetired + 1 |
957 |
|
WRITE(msgBuf,'(A,A)') |
958 |
|
& 'S/R SEAICE_READPARMS: "MAX_HEFF" ', |
959 |
|
& 'is no longer allowed in file "data.seaice"' |
960 |
|
CALL PRINT_ERROR( msgBuf, myThid ) |
961 |
|
ENDIF |
962 |
IF ( nRetired .GT. 0 ) THEN |
IF ( nRetired .GT. 0 ) THEN |
963 |
WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ', |
WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ', |
964 |
& 'Error reading parameter file "data.seaice"' |
& 'Error reading parameter file "data.seaice"' |
993 |
ENDIF |
ENDIF |
994 |
#endif |
#endif |
995 |
|
|
996 |
|
C- store value of logical flag which might be changed in AD mode |
997 |
|
#ifdef ALLOW_AUTODIFF |
998 |
|
SEAICEuseFREEDRIFTinFwdMode = SEAICEuseFREEDRIFT |
999 |
|
SEAICEuseDYNAMICSinFwdMode = SEAICEuseDYNAMICS |
1000 |
|
#endif /* ALLOW_AUTODIFF */ |
1001 |
|
|
1002 |
C Check the consitency of a few parameters |
C Check the consitency of a few parameters |
1003 |
IF ( SEAICE_emissivity .LT. 1. _d -04 ) THEN |
IF ( SEAICE_emissivity .LT. 1. _d -04 ) THEN |
1004 |
WRITE(msgBuf,'(2A)') |
WRITE(msgBuf,'(2A)') |