18 |
C if true use elastic viscous plastic solver |
C if true use elastic viscous plastic solver |
19 |
C SEAICEuseFREEDRIFT :: If True use free drift velocity instead of EVP |
C SEAICEuseFREEDRIFT :: If True use free drift velocity instead of EVP |
20 |
C or LSR |
C or LSR |
21 |
|
C SEAICEuseJFNK :: If true, use Jacobi-free Newton-Krylov solver |
22 |
|
C instead of LSR (default: false) |
23 |
|
C SEAICEuseTILT :: If true then include surface tilt term in dynamics |
24 |
C SEAICEheatConsFix :: If true then fix ocn<->seaice advective heat flux. |
C SEAICEheatConsFix :: If true then fix ocn<->seaice advective heat flux. |
25 |
C SEAICEuseEVPpickup :: Set to false in order to start EVP solver with |
C SEAICEuseEVPpickup :: Set to false in order to start EVP solver with |
26 |
C non-EVP pickup files. Default is true. |
C non-EVP pickup files. Default is true. |
47 |
C instead of extended temp-range exponential law; def=F. |
C instead of extended temp-range exponential law; def=F. |
48 |
C SEAICE_mcPheeStepFunc :: use step function (not linear tapering) in |
C SEAICE_mcPheeStepFunc :: use step function (not linear tapering) in |
49 |
C ocean-ice turbulent flux |
C ocean-ice turbulent flux |
50 |
|
C SEAICE_useMultDimSnow :: use same fixed pdf for snow as for MULITCATEGORY ICE |
51 |
C SEAICE_doOpenWaterGrowth :: use open water heat flux directly to grow ice |
C SEAICE_doOpenWaterGrowth :: use open water heat flux directly to grow ice |
52 |
C (when false cool ocean, and grow later if needed) |
C (when false cool ocean, and grow later if needed) |
53 |
C SEAICE_doOpenWaterMelt :: use open water heat flux directly to melt ice |
C SEAICE_doOpenWaterMelt :: use open water heat flux directly to melt ice |
68 |
C SEAICE_mon_mnc :: write monitor to netcdf file |
C SEAICE_mon_mnc :: write monitor to netcdf file |
69 |
LOGICAL |
LOGICAL |
70 |
& SEAICEwriteState, SEAICEuseDYNAMICS, SEAICEuseEVP, |
& SEAICEwriteState, SEAICEuseDYNAMICS, SEAICEuseEVP, |
71 |
& SEAICEuseFREEDRIFT, SEAICEuseTEM, |
& SEAICEuseFREEDRIFT, SEAICEuseTILT, SEAICEuseTEM, |
72 |
|
& SEAICEuseJFNK, |
73 |
& SEAICEheatConsFix, |
& SEAICEheatConsFix, |
74 |
& SEAICEuseMetricTerms, |
& SEAICEuseMetricTerms, |
75 |
& SEAICEuseEVPpickup, SEAICEuseFlooding, |
& SEAICEuseEVPpickup, SEAICEuseFlooding, |
77 |
& SEAICEadvSnow, SEAICEadvSalt, |
& SEAICEadvSnow, SEAICEadvSalt, |
78 |
& SEAICEuseFluxForm, useHB87stressCoupling, |
& SEAICEuseFluxForm, useHB87stressCoupling, |
79 |
& usePW79thermodynamics, useMaykutSatVapPoly, |
& usePW79thermodynamics, useMaykutSatVapPoly, |
80 |
& SEAICE_mcPheeStepFunc, |
& SEAICE_mcPheeStepFunc, SEAICE_useMultDimSnow, |
81 |
& SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt, |
& SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt, |
82 |
& SEAICE_salinityTracer, SEAICE_ageTracer, |
& SEAICE_salinityTracer, SEAICE_ageTracer, |
83 |
& SEAICErestoreUnderIce, |
& SEAICErestoreUnderIce, |
86 |
& SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc |
& SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc |
87 |
COMMON /SEAICE_PARM_L/ |
COMMON /SEAICE_PARM_L/ |
88 |
& SEAICEwriteState, SEAICEuseDYNAMICS, SEAICEuseEVP, |
& SEAICEwriteState, SEAICEuseDYNAMICS, SEAICEuseEVP, |
89 |
& SEAICEuseFREEDRIFT, SEAICEuseTEM, |
& SEAICEuseFREEDRIFT, SEAICEuseTILT, SEAICEuseTEM, |
90 |
|
& SEAICEuseJFNK, |
91 |
& SEAICEheatConsFix, |
& SEAICEheatConsFix, |
92 |
& SEAICEuseMetricTerms, |
& SEAICEuseMetricTerms, |
93 |
& SEAICEuseEVPpickup, SEAICEuseFlooding, |
& SEAICEuseEVPpickup, SEAICEuseFlooding, |
95 |
& SEAICEadvSnow, SEAICEadvSalt, |
& SEAICEadvSnow, SEAICEadvSalt, |
96 |
& SEAICEuseFluxForm, useHB87stressCoupling, |
& SEAICEuseFluxForm, useHB87stressCoupling, |
97 |
& usePW79thermodynamics, useMaykutSatVapPoly, |
& usePW79thermodynamics, useMaykutSatVapPoly, |
98 |
& SEAICE_mcPheeStepFunc, |
& SEAICE_mcPheeStepFunc, SEAICE_useMultDimSnow, |
99 |
& SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt, |
& SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt, |
100 |
& SEAICE_salinityTracer, SEAICE_ageTracer, |
& SEAICE_salinityTracer, SEAICE_ageTracer, |
101 |
& SEAICErestoreUnderIce, |
& SEAICErestoreUnderIce, |
111 |
C SOLV_MAX_ITERS :: maximum number of allowed LSR-solver iterations |
C SOLV_MAX_ITERS :: maximum number of allowed LSR-solver iterations |
112 |
C SOLV_NCHECK :: iteration interval for solver convergence test |
C SOLV_NCHECK :: iteration interval for solver convergence test |
113 |
C NPSEUDOTIMESTEPS :: number of extra pseudo time steps (>= 2) |
C NPSEUDOTIMESTEPS :: number of extra pseudo time steps (>= 2) |
114 |
|
C SEAICEnewtonIterMax :: maximum number of allowed Newton iterations |
115 |
|
C in JFNK-solver |
116 |
|
C SEAICEkrylovIterMax :: maximum number of allowed Krylov iterations |
117 |
|
C in JFNK-solver |
118 |
C LSR_mixIniGuess :: control mixing of free-drift sol. into LSR initial guess |
C LSR_mixIniGuess :: control mixing of free-drift sol. into LSR initial guess |
119 |
C :: =0 : no mix ; =2,4 : mix with (1/err)^2,4 factor |
C :: =0 : no mix ; =2,4 : mix with (1/err)^2,4 factor |
120 |
|
C SEAICEpresPow0 :: HEFF exponent for ice strength below SEAICEpresH0 |
121 |
|
C SEAICEpresPow1 :: HEFF exponent for ice strength above SEAICEpresH0 |
122 |
C SEAICEadvScheme :: sets the advection scheme for thickness and area |
C SEAICEadvScheme :: sets the advection scheme for thickness and area |
123 |
C SEAICEadvSchArea :: sets the advection scheme for area |
C SEAICEadvSchArea :: sets the advection scheme for area |
124 |
C SEAICEadvSchHeff :: sets the advection scheme for effective thickness |
C SEAICEadvSchHeff :: sets the advection scheme for effective thickness |
133 |
C SEAICE_areaGainFormula :: selects formula for ice cover gain from open water growth |
C SEAICE_areaGainFormula :: selects formula for ice cover gain from open water growth |
134 |
C :: 1=from growth by ATM |
C :: 1=from growth by ATM |
135 |
C :: 2=from predicted growth by ATM |
C :: 2=from predicted growth by ATM |
136 |
|
C SEAICEetaZmethod :: determines how shear-viscosity eta is computed at |
137 |
|
C Z-points |
138 |
|
C 0=simple averaging from C-points (default and old) |
139 |
|
C 1=linear averaging of strain rates to Z-points |
140 |
|
C 2=averaging of squares of strain rates |
141 |
C SEAICE_multDim :: number of ice categories |
C SEAICE_multDim :: number of ice categories |
142 |
C SEAICE_debugPointI :: I,J index for seaice-specific debuggin |
C SEAICE_debugPointI :: I,J index for seaice-specific debuggin |
143 |
C SEAICE_debugPointJ |
C SEAICE_debugPointJ |
146 |
INTEGER SOLV_MAX_ITERS, SOLV_NCHECK |
INTEGER SOLV_MAX_ITERS, SOLV_NCHECK |
147 |
INTEGER NPSEUDOTIMESTEPS |
INTEGER NPSEUDOTIMESTEPS |
148 |
INTEGER LSR_mixIniGuess |
INTEGER LSR_mixIniGuess |
149 |
|
INTEGER SEAICEnewtonIterMax, SEAICEkrylovIterMax |
150 |
INTEGER SEAICEadvScheme |
INTEGER SEAICEadvScheme |
151 |
INTEGER SEAICEadvSchArea |
INTEGER SEAICEadvSchArea |
152 |
INTEGER SEAICEadvSchHeff |
INTEGER SEAICEadvSchHeff |
155 |
INTEGER SEAICEadjMODE |
INTEGER SEAICEadjMODE |
156 |
INTEGER SEAICE_areaLossFormula |
INTEGER SEAICE_areaLossFormula |
157 |
INTEGER SEAICE_areaGainFormula |
INTEGER SEAICE_areaGainFormula |
158 |
|
INTEGER SEAICEetaZmethod |
159 |
INTEGER SEAICE_multDim |
INTEGER SEAICE_multDim |
160 |
INTEGER SEAICE_debugPointI |
INTEGER SEAICE_debugPointI |
161 |
INTEGER SEAICE_debugPointJ |
INTEGER SEAICE_debugPointJ |
162 |
|
INTEGER SEAICEpresPow0, SEAICEpresPow1 |
163 |
COMMON /SEAICE_PARM_I/ |
COMMON /SEAICE_PARM_I/ |
164 |
& IMAX_TICE, postSolvTempIter, |
& IMAX_TICE, postSolvTempIter, |
165 |
& SOLV_MAX_ITERS, SOLV_NCHECK, |
& SOLV_MAX_ITERS, SOLV_NCHECK, |
166 |
& NPSEUDOTIMESTEPS, |
& NPSEUDOTIMESTEPS, |
167 |
& LSR_mixIniGuess, |
& LSR_mixIniGuess, |
168 |
|
& SEAICEnewtonIterMax, SEAICEkrylovIterMax, |
169 |
|
& SEAICEpresPow0, SEAICEpresPow1, |
170 |
& SEAICEadvScheme, |
& SEAICEadvScheme, |
171 |
& SEAICEadvSchArea, |
& SEAICEadvSchArea, |
172 |
& SEAICEadvSchHeff, |
& SEAICEadvSchHeff, |
176 |
& SEAICE_areaLossFormula, |
& SEAICE_areaLossFormula, |
177 |
& SEAICE_areaGainFormula, |
& SEAICE_areaGainFormula, |
178 |
& SEAICE_multDim, |
& SEAICE_multDim, |
179 |
|
& SEAICEetaZmethod, |
180 |
& SEAICE_debugPointI, |
& SEAICE_debugPointI, |
181 |
& SEAICE_debugPointJ |
& SEAICE_debugPointJ |
182 |
|
|
205 |
C-- COMMON /SEAICE_PARM_RL/ Real valued parameters of sea ice model. |
C-- COMMON /SEAICE_PARM_RL/ Real valued parameters of sea ice model. |
206 |
C SEAICE_deltaTtherm :: Seaice timestep for thermodynamic equations (s) |
C SEAICE_deltaTtherm :: Seaice timestep for thermodynamic equations (s) |
207 |
C SEAICE_deltaTdyn :: Seaice timestep for dynamic solver (s) |
C SEAICE_deltaTdyn :: Seaice timestep for dynamic solver (s) |
208 |
|
C SEAICE_LSRrelaxU/V :: relaxation parameter for LSR-solver: U/V-component |
209 |
C SEAICE_deltaTevp :: Seaice timestep for EVP solver (s) |
C SEAICE_deltaTevp :: Seaice timestep for EVP solver (s) |
210 |
C SEAICE_elasticParm :: parameter that sets relaxation timescale |
C SEAICE_elasticParm :: parameter that sets relaxation timescale |
211 |
C tau = SEAICE_elasticParm * SEAICE_deltaTdyn |
C tau = SEAICE_elasticParm * SEAICE_deltaTdyn |
212 |
C SEAICE_evpTauRelax :: relaxation timescale tau (s) |
C SEAICE_evpTauRelax :: relaxation timescale tau (s) |
213 |
C SEAICE_evpDampC :: evp damping constant (Hunke,JCP,2001) (kg/m^2) |
C SEAICE_evpDampC :: evp damping constant (Hunke,JCP,2001) (kg/m^2) |
214 |
|
C JFNKgamma_nonlin :: non-linear tolerance parameter for JFNK solver |
215 |
|
C JFNKgamma_lin_min/max :: tolerance parameters for linear JFNK solver |
216 |
|
C JFNKres_t :: tolerance parameter for FGMRES residual |
217 |
C SEAICE_zetaMaxFac :: factor determining the maximum viscosity (s) |
C SEAICE_zetaMaxFac :: factor determining the maximum viscosity (s) |
218 |
C (default = 5.e+12/2.e4 = 2.5e8) |
C (default = 5.e+12/2.e4 = 2.5e8) |
219 |
C SEAICE_zetaMin :: lower bound for viscosity (default = 0) (N s/m^2) |
C SEAICE_zetaMin :: lower bound for viscosity (default = 0) (N s/m^2) |
220 |
|
C SEAICEpresH0 :: HEFF threshold for ice strength (m) |
221 |
C SEAICE_monFreq :: SEAICE monitor frequency. (s) |
C SEAICE_monFreq :: SEAICE monitor frequency. (s) |
222 |
C SEAICE_dumpFreq :: SEAICE dump frequency. (s) |
C SEAICE_dumpFreq :: SEAICE dump frequency. (s) |
223 |
C SEAICE_taveFreq :: SEAICE time-averaging frequency. (s) |
C SEAICE_taveFreq :: SEAICE time-averaging frequency. (s) |
304 |
C SEAICEdiffKhSalt :: sets the diffusivity for sea ice salinity (m^2/s) |
C SEAICEdiffKhSalt :: sets the diffusivity for sea ice salinity (m^2/s) |
305 |
C SEAICE_airTurnAngle :: turning angles of air-ice interfacial stress |
C SEAICE_airTurnAngle :: turning angles of air-ice interfacial stress |
306 |
C SEAICE_waterTurnAngle :: and ice-water interfacial stress (in degrees) |
C SEAICE_waterTurnAngle :: and ice-water interfacial stress (in degrees) |
307 |
|
C SEAICE_tauAreaObsRelax :: Timescale of relaxation to observed |
308 |
|
C sea ice concentration (s), default=unset |
309 |
C |
C |
310 |
_RL SEAICE_deltaTtherm, SEAICE_deltaTdyn, SEAICE_deltaTevp |
_RL SEAICE_deltaTtherm, SEAICE_deltaTdyn, SEAICE_deltaTevp |
311 |
|
_RL SEAICE_LSRrelaxU, SEAICE_LSRrelaxV |
312 |
_RL SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq |
_RL SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq |
313 |
_RL SEAICE_initialHEFF |
_RL SEAICE_initialHEFF |
314 |
_RL SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR |
_RL SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR |
332 |
_RL facOpenGrow, facOpenMelt |
_RL facOpenGrow, facOpenMelt |
333 |
_RL SEAICE_tempFrz0, SEAICE_dTempFrz_dS |
_RL SEAICE_tempFrz0, SEAICE_dTempFrz_dS |
334 |
_RL OCEAN_drag, LSR_ERROR, DIFF1 |
_RL OCEAN_drag, LSR_ERROR, DIFF1 |
335 |
|
_RL JFNKgamma_nonlin, JFNKres_t |
336 |
|
_RL JFNKgamma_lin_min, JFNKgamma_lin_max |
337 |
_RL SEAICE_area_reg, SEAICE_hice_reg |
_RL SEAICE_area_reg, SEAICE_hice_reg |
338 |
_RL SEAICE_area_floor, SEAICE_area_max |
_RL SEAICE_area_floor, SEAICE_area_max |
339 |
_RL SEAICE_airTurnAngle, SEAICE_waterTurnAngle |
_RL SEAICE_airTurnAngle, SEAICE_waterTurnAngle |
340 |
_RL SEAICE_elasticParm, SEAICE_evpTauRelax |
_RL SEAICE_elasticParm, SEAICE_evpTauRelax |
341 |
_RL SEAICE_evpDampC, SEAICE_zetaMin, SEAICE_zetaMaxFac |
_RL SEAICE_evpDampC, SEAICE_zetaMin, SEAICE_zetaMaxFac |
342 |
|
_RL SEAICEpresH0 |
343 |
_RL SEAICEdiffKhArea, SEAICEdiffKhHeff, SEAICEdiffKhSnow |
_RL SEAICEdiffKhArea, SEAICEdiffKhHeff, SEAICEdiffKhSnow |
344 |
_RL SEAICEdiffKhSalt |
_RL SEAICEdiffKhSalt |
345 |
|
_RL SEAICE_tauAreaObsRelax |
346 |
|
|
347 |
COMMON /SEAICE_PARM_RL/ |
COMMON /SEAICE_PARM_RL/ |
348 |
& SEAICE_deltaTtherm, SEAICE_deltaTdyn, |
& SEAICE_deltaTtherm, SEAICE_deltaTdyn, |
349 |
|
& SEAICE_LSRrelaxU, SEAICE_LSRrelaxV, |
350 |
& SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax, |
& SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax, |
351 |
& SEAICE_evpDampC, SEAICE_zetaMin, SEAICE_zetaMaxFac, |
& SEAICE_evpDampC, SEAICE_zetaMin, SEAICE_zetaMaxFac, |
352 |
|
& SEAICEpresH0, |
353 |
& SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq, |
& SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq, |
354 |
& SEAICE_initialHEFF, |
& SEAICE_initialHEFF, |
355 |
& SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR, |
& SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR, |
372 |
& facOpenGrow, facOpenMelt, |
& facOpenGrow, facOpenMelt, |
373 |
& SEAICE_tempFrz0, SEAICE_dTempFrz_dS, |
& SEAICE_tempFrz0, SEAICE_dTempFrz_dS, |
374 |
& OCEAN_drag, LSR_ERROR, DIFF1, |
& OCEAN_drag, LSR_ERROR, DIFF1, |
375 |
|
& JFNKgamma_nonlin, JFNKres_t, |
376 |
|
& JFNKgamma_lin_min, JFNKgamma_lin_max, |
377 |
& SEAICE_area_reg, SEAICE_hice_reg, |
& SEAICE_area_reg, SEAICE_hice_reg, |
378 |
& SEAICE_area_floor, SEAICE_area_max, |
& SEAICE_area_floor, SEAICE_area_max, |
379 |
& SEAICEdiffKhArea, SEAICEdiffKhHeff, SEAICEdiffKhSnow, |
& SEAICEdiffKhArea, SEAICEdiffKhHeff, SEAICEdiffKhSnow, |
380 |
& SEAICEdiffKhSalt, |
& SEAICEdiffKhSalt, SEAICE_tauAreaObsRelax, |
381 |
& SEAICE_airTurnAngle, SEAICE_waterTurnAngle |
& SEAICE_airTurnAngle, SEAICE_waterTurnAngle |
382 |
|
|
383 |
C-- COMMON /SEAICE_BOUND_RL/ Various bounding values |
C-- COMMON /SEAICE_BOUND_RL/ Various bounding values |
394 |
& MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MIN_TICE, |
& MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MIN_TICE, |
395 |
& SEAICE_EPS, SEAICE_EPS_SQ |
& SEAICE_EPS, SEAICE_EPS_SQ |
396 |
|
|
397 |
|
#ifdef SEAICE_ITD |
398 |
|
CToM<<< |
399 |
|
C Hlimit :: ice thickness category limits (m), array of size nITD+1 |
400 |
|
C Hlimit_c1,_c2,_c3 :: coefficients set in seaice_readparams.F to calculate Hlimit in seaice_init_fixed.F |
401 |
|
_RL Hlimit(0:nITD) |
402 |
|
_RL Hlimit_c1, Hlimit_c2, Hlimit_c3 |
403 |
|
COMMON /SEAICE_BOUND_ITD_RL/ |
404 |
|
& Hlimit, |
405 |
|
& Hlimit_c1,Hlimit_c2,Hlimit_c3 |
406 |
|
C>>>ToM |
407 |
|
#endif /* SEAICE_ITD */ |
408 |
|
|
409 |
C-- Constants used by sea-ice model |
C-- Constants used by sea-ice model |
410 |
_RL ZERO , ONE , TWO |
_RL ZERO , ONE , TWO |
411 |
PARAMETER ( ZERO = 0.0 _d 0, ONE = 1.0 _d 0, TWO = 2.0 _d 0 ) |
PARAMETER ( ZERO = 0.0 _d 0, ONE = 1.0 _d 0, TWO = 2.0 _d 0 ) |