File indexing completed on 2025-12-21 17:50:59 UTC
view on githubraw file Latest commit 204068be on 2025-11-16 04:31:18 UTC
809c36b928 Patr*0001 #include "SEAICE_OPTIONS.h"
772b2ed80e Gael*0002 #ifdef ALLOW_AUTODIFF
0003 # include "AUTODIFF_OPTIONS.h"
0004 #endif
809c36b928 Patr*0005
3db1737c0d Jean*0006
0007
0008
809c36b928 Patr*0009 SUBROUTINE SEAICE_READPARMS( myThid )
cf95ef8a16 Jean*0010
3db1737c0d Jean*0011
0012
0013
0014
0015
0016
0017
0018
809c36b928 Patr*0019 IMPLICIT NONE
0020
0021
0022 #include "SIZE.h"
0023 #include "EEPARAMS.h"
0024 #include "PARAMS.h"
0025 #include "GRID.h"
e0fa1cecbf Mart*0026 #ifdef ALLOW_GENERIC_ADVDIFF
0027 # include "GAD.h"
0028 #endif /* ALLOW_GENERIC_ADVDIFF */
ccaa3c61f4 Patr*0029 #include "SEAICE_SIZE.h"
809c36b928 Patr*0030 #include "SEAICE_PARAMS.h"
ccaa3c61f4 Patr*0031 #include "SEAICE_TRACER.h"
869864d4b6 Patr*0032 #ifdef ALLOW_COST
3ad0d94cb0 Patr*0033 # include "SEAICE_COST.h"
869864d4b6 Patr*0034 #endif
07abca99f1 Jean*0035 #ifdef ALLOW_MNC
3ad0d94cb0 Patr*0036 # include "MNC_PARAMS.h"
0037 #endif
fff6be1885 Mart*0038 #ifdef ALLOW_EXF
0039 # include "EXF_CONSTANTS.h"
0040 #endif /* ALLOW_EXF */
8450210070 Jean*0041 #ifdef ALLOW_AUTODIFF
0042 # include "AUTODIFF_PARAMS.h"
0043 #endif
809c36b928 Patr*0044
3db1737c0d Jean*0045
809c36b928 Patr*0046
3db1737c0d Jean*0047
809c36b928 Patr*0048 INTEGER myThid
3db1737c0d Jean*0049
809c36b928 Patr*0050
3db1737c0d Jean*0051
809c36b928 Patr*0052
3db1737c0d Jean*0053
0054
809c36b928 Patr*0055 CHARACTER*(MAX_LEN_MBUF) msgBuf
cf95ef8a16 Jean*0056 LOGICAL chkFlag
afaeb4fe62 Jean*0057 INTEGER iUnit
4b6d456764 Mart*0058 INTEGER l
e54fe3e1f9 Gael*0059 #ifdef ALLOW_SITRACER
ccaa3c61f4 Patr*0060 INTEGER iTracer
edfdf5fa1d Jean*0061 #endif
4407641907 Jean*0062 #ifdef ALLOW_COST
0063 INTEGER locDate(4)
0064 #endif /* ALLOW_COST */
dc26f158aa Mart*0065 INTEGER nRetired, nError
4b6d456764 Mart*0066 _RL tmp
1c278edd09 Jean*0067
0068
0069 _RL SEAICE_availHeatTaper
0070 _RL SEAICE_gamma_t, SEAICE_gamma_t_frz, SEAICE_availHeatFracFrz
809c36b928 Patr*0071
1c278edd09 Jean*0072
b58e51ce4e Jean*0073
0074
0075
1c278edd09 Jean*0076
fff6be1885 Mart*0077 _RL SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce
1c278edd09 Jean*0078 _RL SEAICE_salinity, SIsalFRAC, SIsal0
050eb90cc6 Gael*0079 _RL SEAICE_lhSublim, SEAICE_freeze, MAX_HEFF
b58e51ce4e Jean*0080 _RL areaMin, areaMax, A22, hiceMin, MAX_TICE
e54fe3e1f9 Gael*0081 LOGICAL SEAICEadvAge
1c278edd09 Jean*0082 INTEGER SEAICEadvSchAge, LAD, SEAICEturbFluxFormula
79df32c3f1 Mart*0083 INTEGER NPSEUDOTIMESTEPS, SOLV_MAX_ITERS
0084 INTEGER SEAICEnewtonIterMax, SEAICEkrylovIterMax
0085 _RL JFNKgamma_nonlin
e54fe3e1f9 Gael*0086 _RL SEAICEdiffKhAge
0087 CHARACTER*(MAX_LEN_MBUF) IceAgeFile, IceAgeTrFile(4)
e501eee760 Mart*0088 _RL SEAICE_abEps
0089 LOGICAL SEAICEuseAB2
a4e168e012 antn*0090 #ifdef ALLOW_COST
2b959ba38e Mart*0091
0092 _RL mult_smrarea
0093 _RL mult_smrsst
0094 _RL mult_smrsss
0095 CHARACTER*(MAX_LEN_FNAM) smrarea_errfile
0096 CHARACTER*(MAX_LEN_FNAM) smrareadatfile
0097 CHARACTER*(MAX_LEN_FNAM) smrareabarfile
0098 CHARACTER*(MAX_LEN_FNAM) smrsstbarfile
0099 CHARACTER*(MAX_LEN_FNAM) smrsssbarfile
0100 INTEGER smrareastartdate1
0101 INTEGER smrareastartdate2
0102 _RL wsmrarea0
0103 _RL wmean_smrarea
0104 _RL smrareaperiod
0105 _RL SEAICE_clamp_salt
0106 _RL SEAICE_clamp_theta
a4e168e012 antn*0107 #endif /* ALLOW_COST */
b7411f1a84 Jean*0108 _RL SEAICE_taveFreq
0109 LOGICAL SEAICE_tave_mnc
fff6be1885 Mart*0110
809c36b928 Patr*0111
0112 NAMELIST /SEAICE_PARM01/
1459e8fe5a Mart*0113 & SEAICEuseDYNAMICS, SEAICEuseFREEDRIFT, SEAICEuseStrImpCpl,
c512e371cc drin*0114 & SEAICEuseMCS, SEAICEuseMCE, SEAICEuseTD, SEAICEusePL,
f82b316546 Jean*0115 & SEAICEuseTEM, SEAICEuseMetricTerms, SEAICEuseTilt,
210ee8461e jm-c 0116 & useHB87stressCoupling, SEAICEupdateOceanStress,
0117 & usePW79thermodynamics, useMaykutSatVapPoly, SEAICEuseFlooding,
62cc8945c8 Gael*0118 & SEAICErestoreUnderIce, SEAICE_growMeltByConv,
8bc8bee483 Gael*0119 & SEAICE_salinityTracer, SEAICE_ageTracer,
f681b7f5d4 Dimi*0120 & SEAICEadvHeff, SEAICEadvArea, SEAICEadvSnow,
79022779f5 Mart*0121 & SEAICEadvSalt, SEAICEadvAge, SEAICEaddSnowMass,
2e05c0b826 Mart*0122 & SEAICEmomAdvection, SEAICEselectKEscheme, SEAICEselectVortScheme,
0123 & SEAICEhighOrderVorticity, SEAICEupwindVorticity,
0124 & SEAICEuseAbsVorticity, SEAICEuseJamartMomAdv,
210ee8461e jm-c 0125 & SEAICE_clipVelocities, SEAICE_maskRHS,
5dac41bc68 Mart*0126 & SEAICE_no_slip, SEAICE_2ndOrderBC,
a305da5077 Mart*0127 & SEAICEetaZmethod, LAD, IMAX_TICE, postSolvTempIter,
f82b316546 Jean*0128 & SEAICEuseFluxForm, SEAICEadvScheme, SEAICEadvSchArea,
f681b7f5d4 Dimi*0129 & SEAICEadvSchHeff, SEAICEadvSchSnow,
0130 & SEAICEadvSchSalt, SEAICEadvSchAge,
6d78fc5463 Gael*0131 & SEAICEdiffKhHeff, SEAICEdiffKhSnow, SEAICEdiffKhArea,
f82b316546 Jean*0132 & SEAICEdiffKhSalt, SEAICEdiffKhAge, DIFF1,
f4fcd985ee Dimi*0133 & SEAICE_deltaTtherm, SEAICE_deltaTdyn,
e45202e340 Mart*0134 & SEAICE_LSRrelaxU, SEAICE_LSRrelaxV,
f82b316546 Jean*0135 & SOLV_MAX_ITERS, SOLV_NCHECK, NPSEUDOTIMESTEPS,
0136 & LSR_ERROR, LSR_mixIniGuess, SEAICEuseMultiTileSolver,
4ece3a93a6 Mart*0137 & SEAICE_deltaTevp, SEAICE_elasticParm, SEAICE_evpTauRelax,
210ee8461e jm-c 0138 & SEAICE_evpDampC, SEAICEnEVPstarSteps,
7c2e394a42 Mart*0139 & SEAICE_evpAlpha, SEAICE_evpBeta,
3b3669606e Mart*0140 & SEAICEaEVPcoeff, SEAICEaEVPcStar, SEAICEaEVPalphaMin,
204068be6a R. S*0141 & SEAICE_evpAreaReg,
c8739d4898 Mart*0142 & SEAICE_zetaMin, SEAICE_zetaMaxFac, SEAICEusePicardAsPrecon,
143d9ce879 Dami*0143 & SEAICEuseLSRflex, SEAICEuseKrylov, SEAICEuseJFNK,
79df32c3f1 Mart*0144 & SEAICEnonLinIterMax, SEAICElinearIterMax, SEAICEnonLinTol,
0145 & SEAICEnewtonIterMax, SEAICEkrylovIterMax, JFNKgamma_nonlin,
0146 & SEAICEpreconNL_Iter, SEAICEpreconLinIter,
c704c5a1ef Mart*0147 & SEAICE_JFNK_lsIter, SEAICE_JFNK_lsLmax, SEAICE_JFNK_lsGamma,
0148 & SEAICE_JFNK_tolIter, JFNKres_t,JFNKres_tFac,
79df32c3f1 Mart*0149 & JFNKgamma_lin_min,JFNKgamma_lin_max,
c8f5b4180e Mart*0150 & SEAICE_JFNKepsilon, SEAICE_OLx, SEAICE_OLy,
e501eee760 Mart*0151 & SEAICE_JFNKphi, SEAICE_JFNKalpha, SEAICEuseIMEX, SEAICEuseBDF2,
210ee8461e jm-c 0152 & SEAICEuseLinRemapITD,
5fd900657f Mart*0153 & useHibler79IceStrength, SEAICEpartFunc, SEAICEredistFunc,
3ac108d8cf Mart*0154 & SEAICEridgingIterMax, SEAICEsimpleRidging, SEAICEsnowFracRidge,
5fd900657f Mart*0155 & SEAICEgStar, SEAICEhStar, SEAICEaStar, SEAICEshearParm,
0156 & SEAICEmuRidging, SEAICEmaxRaft, SEAICE_cf,
e501eee760 Mart*0157 & SEAICEuseAB2, SEAICE_abEps,
76c8933abb Gael*0158 & SEAICEpresH0, SEAICEpresPow0, SEAICEpresPow1,
03c669d1ab Jean*0159 & SEAICE_initialHEFF, SEAICEturbFluxFormula,
6ec4646d60 Gael*0160 & SEAICE_areaGainFormula, SEAICE_areaLossFormula,
0161 & SEAICE_doOpenWaterGrowth, SEAICE_doOpenWaterMelt,
07b4a12853 Mart*0162 & SEAICE_rhoAir, SEAICE_rhoIce, SEAICE_rhoSnow, ICE2WATR,
36d0480ad6 Mart*0163 & SEAICE_cpAir, SEAICEscaleSurfStress,
5867b94c2f Mart*0164 & SEAICE_drag, SEAICE_waterDrag, SEAICEdWatMin, SEAICE_dryIceAlb,
f81e0cd482 Dimi*0165 & SEAICE_wetIceAlb, SEAICE_drySnowAlb, SEAICE_wetSnowAlb, HO,
f834b21bef Dimi*0166 & SEAICE_drag_south, SEAICE_waterDrag_south,
0167 & SEAICE_dryIceAlb_south, SEAICE_wetIceAlb_south,
f81e0cd482 Dimi*0168 & SEAICE_drySnowAlb_south, SEAICE_wetSnowAlb_south, HO_south,
5bb179ddc2 Mart*0169 & SEAICEsideDrag, uCoastLineFile, vCoastLineFile,
abb637800a Mart*0170 & SEAICE_cBasalStar, SEAICEbasalDragU0, SEAICEbasalDragK1,
0171 & SEAICEbasalDragK2, SEAICE_wetAlbTemp, SEAICE_waterAlbedo,
d104051171 Mart*0172 & SEAICE_strength, SEAICE_cStar, SEAICE_eccen,
c512e371cc drin*0173 & SEAICE_eccfr, SEAICEtdMU, SEAICEmcMu,
210ee8461e jm-c 0174 & SEAICEpressReplFac, SEAICE_tensilFac, SEAICE_tensilDepth,
136908bfac Ian *0175 & SEAICE_lhFusion, SEAICE_lhEvap, SEAICE_dalton,
809c36b928 Patr*0176 & SEAICE_sensHeat, SEAICE_latentWater, SEAICE_latentIce,
1c278edd09 Jean*0177 & SEAICE_salinity, SIsalFRAC, SIsal0,
136908bfac Ian *0178 & areaMin, areaMax, A22, hiceMin,
b58e51ce4e Jean*0179 & SEAICE_iceConduct, SEAICE_snowConduct,
22b703279f Mart*0180 & SEAICE_emissivity, SEAICE_ice_emiss, SEAICE_snow_emiss,
872b0063df Dimi*0181 & SEAICE_snowThick, SEAICE_shortwave, SEAICE_freeze, OCEAN_drag,
1c278edd09 Jean*0182 & SEAICE_tempFrz0, SEAICE_dTempFrz_dS, SEAICE_salt0,
0183 & SEAICE_saltFrac, SEAICEstressFactor, SEAICE_availHeatTaper,
ceae9498ad Gael*0184 & SEAICE_mcPheePiston, SEAICE_frazilFrac, SEAICE_mcPheeTaper,
0185 & SEAICE_mcPheeStepFunc, SEAICE_gamma_t, SEAICE_gamma_t_frz,
4b6d456764 Mart*0186 & SEAICE_availHeatFrac, SEAICE_availHeatFracFrz, SEAICE_PDF,
425e8efc36 Jean*0187 & AreaFile, HeffFile, uIceFile, vIceFile, HsnowFile, HsaltFile,
74c037b5fb Mart*0188 & SEAICEheatConsFix, SEAICE_multDim, SEAICE_useMultDimSnow,
3daf25222c Mart*0189 & SEAICE_deltaMin, SEAICE_area_reg, SEAICE_hice_reg,
d32fe07ad8 Patr*0190 & SEAICE_area_floor, SEAICE_area_max, SEAICE_tauAreaObsRelax,
16f85413ea Mart*0191 & SEAICE_airTurnAngle, SEAICE_waterTurnAngle,
460cb5f999 Dimi*0192 & MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE,
afaeb4fe62 Jean*0193 & SEAICE_EPS, SEAICE_EPS_SQ,
210ee8461e jm-c 0194 & SEAICEwriteState, SEAICEuseEVPpickup,
7c2e394a42 Mart*0195 & SEAICEuseEVPstar, SEAICEuseEVPrev,
f82b316546 Jean*0196 & SEAICE_monFreq, SEAICE_dumpFreq, SEAICE_taveFreq,
136908bfac Ian *0197 & SEAICE_tave_mnc, SEAICE_dump_mnc, SEAICE_mon_mnc,
86b84a92fc Patr*0198 #ifdef SEAICE_ITD
541c48397a Mart*0199 & Hlimit_c1, Hlimit_c2, Hlimit_c3, Hlimit,
86b84a92fc Patr*0200 #endif
dc54d31829 Ian *0201 & SEAICE_debugPointI, SEAICE_debugPointJ,
0202 & SINegFac
809c36b928 Patr*0203
869864d4b6 Patr*0204 #ifdef ALLOW_COST
0205 NAMELIST /SEAICE_PARM02/
1e22f5fc71 Patr*0206 & mult_ice_export, mult_ice, cost_ice_flag,
3ad0d94cb0 Patr*0207 & costIceStart1, costIceStart2,
0208 & costIceEnd1, costIceEnd2,
1bedc5345f An T*0209 & SEAICE_cutoff_area, SEAICE_cutoff_heff,
2b959ba38e Mart*0210 & SEAICE_clamp_salt, SEAICE_clamp_theta,
ec9632a8fc Patr*0211 & mult_smrsst, smrsstbarfile,
0212 & mult_smrsss, smrsssbarfile,
0213 & mult_smrarea, smrareabarfile, smrareadatfile,
3ad0d94cb0 Patr*0214 & wsmrarea0, wmean_smrarea, smrarea_errfile,
0215 & smrareastartdate1, smrareastartdate2, smrareaperiod
869864d4b6 Patr*0216 #endif
0217
e54fe3e1f9 Gael*0218 #ifdef ALLOW_SITRACER
ccaa3c61f4 Patr*0219 NAMELIST /SEAICE_PARM03/
e54fe3e1f9 Gael*0220 & SItrFile, SItrName, SItrNameLong, SItrUnit, SItrMate,
03c669d1ab Jean*0221 & SItrFromOcean0, SItrFromOceanFrac, SItrFromFlood0,
8bc8bee483 Gael*0222 & SItrFromFloodFrac, SItrExpand0,
0223 & IceAgeTrFile, SItrNumInUse
ccaa3c61f4 Patr*0224 #endif
0225
3db1737c0d Jean*0226
ccaa3c61f4 Patr*0227
ae4c29e0db Jean*0228 IF ( .NOT.useSEAICE ) THEN
0229
0230 _BEGIN_MASTER(myThid)
0231
0232
0233 CALL PACKAGES_UNUSED_MSG( 'useSEAICE', ' ', ' ' )
0234 _END_MASTER(myThid)
0235 RETURN
0236 ENDIF
0237
809c36b928 Patr*0238 _BEGIN_MASTER(myThid)
0239
0240
45315406aa Mart*0241 #if ( defined SEAICE_CGRID || defined SEAICE_BGRID_DYNAMICS )
809c36b928 Patr*0242 SEAICEuseDYNAMICS = .TRUE.
190e1777cb Dimi*0243 #else
0244 SEAICEuseDYNAMICS = .FALSE.
0245 #endif
3a3bf6419a Gael*0246 SEAICEadjMODE = 0
e97d1f6d02 Gael*0247 SEAICEuseFREEDRIFT = .FALSE.
1459e8fe5a Mart*0248 SEAICEuseStrImpCpl = .FALSE.
f82b316546 Jean*0249 SEAICEuseTilt = .TRUE.
381adf77df Gael*0250 SEAICEheatConsFix = .FALSE.
dadd13178c Mart*0251 SEAICEuseTEM = .FALSE.
c512e371cc drin*0252 SEAICEuseMCS = .FALSE.
0253 SEAICEuseMCE = .FALSE.
0254 SEAICEuseTD = .FALSE.
0255 SEAICEusePL = .FALSE.
4935169c82 Mart*0256 SEAICEuseMetricTerms = .TRUE.
d558d05cf5 Dimi*0257 SEAICEuseEVPpickup = .TRUE.
dc26f158aa Mart*0258 SEAICEuseEVPstar = .TRUE.
0259 SEAICEuseEVPrev = .TRUE.
f414077a87 Mart*0260 SEAICErestoreUnderIce = .FALSE.
62cc8945c8 Gael*0261 SEAICE_growMeltByConv = .FALSE.
8bc8bee483 Gael*0262 SEAICE_salinityTracer = .FALSE.
0263 SEAICE_ageTracer = .FALSE.
3ed8349f04 Mart*0264 useHB87stressCoupling = .FALSE.
210ee8461e jm-c 0265 SEAICEupdateOceanStress = .TRUE.
b8665dacca Mart*0266 SEAICEscaleSurfStress = .TRUE.
0267 SEAICEaddSnowMass = .TRUE.
09e3b53265 Mart*0268 usePW79thermodynamics = .TRUE.
ac7cc420cb Mart*0269
5fd900657f Mart*0270 useHibler79IceStrength= .TRUE.
0271 SEAICEsimpleRidging = .TRUE.
ac7cc420cb Mart*0272
5fd900657f Mart*0273 SEAICE_cf = 17. _d 0
ac7cc420cb Mart*0274
5fd900657f Mart*0275 SEAICEpartFunc = 0
ac7cc420cb Mart*0276
5fd900657f Mart*0277 SEAICEredistFunc = 0
0278 SEAICEridgingIterMax = 10
ac7cc420cb Mart*0279
5fd900657f Mart*0280 SEAICEshearParm = 0.5 _d 0
ac7cc420cb Mart*0281
5fd900657f Mart*0282 SEAICEgStar = 0.15 _d 0
ac7cc420cb Mart*0283
0284
210ee8461e jm-c 0285
ac7cc420cb Mart*0286
0287 SEAICEhStar = 25. _d 0
0288
0289
0290
5fd900657f Mart*0291 SEAICEaStar = 0.05 _d 0
ac7cc420cb Mart*0292
210ee8461e jm-c 0293
ac7cc420cb Mart*0294
0295 SEAICEmuRidging = 3. _d 0
5fd900657f Mart*0296 SEAICEmaxRaft = 1. _d 0
3ac108d8cf Mart*0297 SEAICEsnowFracRidge = 0.5 _d 0
3bd2cd9e40 Mart*0298 SEAICEuseLinRemapITD = .TRUE.
5fd900657f Mart*0299
b58e51ce4e Jean*0300 useMaykutSatVapPoly = .FALSE.
f82b316546 Jean*0301 SEAICEuseFluxForm = .TRUE.
afaeb4fe62 Jean*0302 SEAICEadvHeff = .TRUE.
09e3b53265 Mart*0303 SEAICEadvArea = .TRUE.
282e0c8db9 Mart*0304 SEAICEadvSnow = .TRUE.
a98c4b8072 Ian *0305 #ifdef SEAICE_VARIABLE_SALINITY
1f65d9866a Mart*0306 SEAICEadvSalt = .TRUE.
efcea8d6b7 Jean*0307 #else
0308 SEAICEadvSalt = .FALSE.
0309 #endif
2e05c0b826 Mart*0310 SEAICEmomAdvection = .FALSE.
0311 SEAICEselectKEscheme = 1
0312 SEAICEselectVortScheme = 2
0313 SEAICEhighOrderVorticity = .FALSE.
0314 SEAICEupwindVorticity = .FALSE.
0315 SEAICEuseAbsVorticity = .FALSE.
0316 SEAICEuseJamartMomAdv = .FALSE.
282e0c8db9 Mart*0317 SEAICEuseFlooding = .TRUE.
ba20a6318c Mart*0318 SEAICE_no_slip = .FALSE.
5dac41bc68 Mart*0319 SEAICE_2ndOrderBC = .FALSE.
4c696264d9 Mart*0320 SEAICE_clipVelocities = .FALSE.
7abe6d1375 Mart*0321 SEAICE_maskRHS = .FALSE.
b8665dacca Mart*0322 SEAICEetaZmethod = 3
0323 SEAICEadvScheme = 77
bd4f8028de Mart*0324 SEAICEadvSchArea = UNSET_I
0325 SEAICEadvSchHeff = UNSET_I
0326 SEAICEadvSchSnow = UNSET_I
fdfa8e151f Dimi*0327 SEAICEadvSchSalt = UNSET_I
3db1737c0d Jean*0328 SEAICEdiffKhArea = UNSET_RL
0329 SEAICEdiffKhHeff = UNSET_RL
0330 SEAICEdiffKhSnow = UNSET_RL
0331 SEAICEdiffKhSalt = UNSET_RL
f82b316546 Jean*0332 DIFF1 = UNSET_RL
0333
0334
dfc17c9c63 Jean*0335 SEAICE_deltaTtherm = dTtracerLev(1)
0336 SEAICE_deltaTdyn = dTtracerLev(1)
ba20a6318c Mart*0337 SEAICE_deltaTevp = UNSET_RL
e501eee760 Mart*0338 SEAICEuseBDF2 = .FALSE.
1ac05d2425 Mart*0339 SEAICEuseKrylov = .FALSE.
143d9ce879 Dami*0340 SEAICEuseLSRflex = .FALSE.
1a7605cf1d Mart*0341
0342 SEAICEuseJFNK = .FALSE.
6cbc659de0 Mart*0343 SEAICEuseIMEX = .FALSE.
a88fc20c6c Mart*0344 SEAICE_JFNK_lsIter = UNSET_I
c704c5a1ef Mart*0345 SEAICE_JFNK_lsLmax = 4
0346 SEAICE_JFNK_lsGamma = 0.5 _d 0
f6f4a9e227 Mart*0347 SEAICE_JFNK_tolIter = 100
a68248c150 Mart*0348
5a3ac3356d Mart*0349
0350
a68248c150 Mart*0351
b8665dacca Mart*0352 SEAICE_OLx = OLx-2
0353 SEAICE_OLy = OLy-2
1a7605cf1d Mart*0354 JFNKgamma_nonlin = 1. _d -05
0355 JFNKgamma_lin_min = 0.10 _d 0
0356 JFNKgamma_lin_max = 0.99 _d 0
0357 JFNKres_t = UNSET_RL
2e75855dde Mart*0358 JFNKres_tFac = UNSET_RL
c8f5b4180e Mart*0359 SEAICE_JFNKepsilon = 1. _d -06
1f3ad2d627 Mart*0360
0361 SEAICE_JFNKphi = 1. _d 0
ae4c29e0db Jean*0362
1f3ad2d627 Mart*0363 SEAICE_JFNKalpha = 1. _d 0
bb06934ea0 Mart*0364
8a89485793 Mart*0365 SEAICE_evpDampC = -1. _d 0
e9b037a7a1 Mart*0366 SEAICE_zetaMin = 0. _d 0
bb06934ea0 Mart*0367 SEAICE_zetaMaxFac = 2.5 _d 8
76c8933abb Gael*0368 SEAICEpresH0 = 1. _d 0
0369 SEAICEpresPow0 = 1
0370 SEAICEpresPow1 = 1
4ece3a93a6 Mart*0371 SEAICE_evpTauRelax = -1. _d 0
f82b316546 Jean*0372 SEAICE_elasticParm = 0.33333333333333333333333333 _d 0
2bf4ed5c39 Mart*0373 SEAICE_evpAlpha = UNSET_RL
0374 SEAICE_evpBeta = UNSET_RL
0375 SEAICEnEVPstarSteps = UNSET_I
3b3669606e Mart*0376 SEAICEaEVPcoeff = UNSET_RL
0377 SEAICEaEVPcStar = UNSET_RL
0378 SEAICEaEVPalphaMin = UNSET_RL
204068be6a R. S*0379 SEAICE_evpAreaReg = -1.
e7c33124ce Dimi*0380 SEAICE_initialHEFF = ZERO
86b84a92fc Patr*0381 #ifdef SEAICE_ITD
0382
0383
8450210070 Jean*0384
86b84a92fc Patr*0385
0386
0387
0388
541c48397a Mart*0389 DO l = 0, nITD
0390 Hlimit(l) = UNSET_RL
0391 ENDDO
8450210070 Jean*0392 Hlimit_c1 = 3.0
86b84a92fc Patr*0393 Hlimit_c2 = 15.
8450210070 Jean*0394 Hlimit_c3 = 3.0
86b84a92fc Patr*0395 #endif
53092bcb42 Mart*0396 SEAICE_rhoIce = 0.91 _d +03
07b4a12853 Mart*0397 SEAICE_rhoSnow = 330. _d 0
7b415cab4e Dimi*0398 ICE2WATR = UNSET_RL
b8665dacca Mart*0399 SEAICE_drag = 0.001 _d 0
09510da3bb Dimi*0400 OCEAN_drag = 0.001 _d 0
b8665dacca Mart*0401 SEAICE_waterDrag = 0.0055 _d 0
5bb179ddc2 Mart*0402 SEAICEsideDrag = 0.0 _d 0
5867b94c2f Mart*0403 SEAICEdWatMin = 0.25 _d 0
7109a141b2 Patr*0404 SEAICE_dryIceAlb = 0.75 _d 0
0405 SEAICE_wetIceAlb = 0.66 _d 0
baa476eeba Dimi*0406 SEAICE_drySnowAlb = 0.84 _d 0
0407 SEAICE_wetSnowAlb = 0.7 _d 0
f81e0cd482 Dimi*0408 HO = 0.5 _d 0
f834b21bef Dimi*0409 SEAICE_drag_south = UNSET_RL
0410 SEAICE_waterDrag_south = UNSET_RL
0411 SEAICE_dryIceAlb_south = UNSET_RL
0412 SEAICE_wetIceAlb_south = UNSET_RL
0413 SEAICE_drySnowAlb_south = UNSET_RL
0414 SEAICE_wetSnowAlb_south = UNSET_RL
f81e0cd482 Dimi*0415 HO_south = UNSET_RL
abb637800a Mart*0416
0417 SEAICE_cBasalStar = UNSET_RL
0418 SEAICEbasalDragU0 = 5. _d -05
0419 SEAICEbasalDragK1 = 8. _d 0
0420 SEAICEbasalDragK2 = 0. _d 0
0421
210ee8461e jm-c 0422
b58e51ce4e Jean*0423 SEAICE_wetAlbTemp = -1. _d -3
4613bbc38b Dimi*0424 #ifdef SEAICE_EXTERNAL_FLUXES
0425 SEAICE_waterAlbedo = UNSET_RL
0426 #else /* if undef SEAICE_EXTERNAL_FLUXES */
baa476eeba Dimi*0427 SEAICE_waterAlbedo = 0.1 _d +00
4613bbc38b Dimi*0428 #endif /* SEAICE_EXTERNAL_FLUXES */
baa476eeba Dimi*0429 SEAICE_strength = 2.75 _d +04
ba6cfc5714 Mart*0430 SEAICE_cStar = 20. _d 0
0adbdb4edd Mart*0431 SEAICEpressReplFac = 1. _d 0
53092bcb42 Mart*0432 SEAICE_eccen = 2. _d 0
c512e371cc drin*0433 SEAICE_eccfr = UNSET_RL
ba6cfc5714 Mart*0434 SEAICE_tensilFac = 0. _d 0
d104051171 Mart*0435 SEAICE_tensilDepth = 0. _d 0
c512e371cc drin*0436 SEAICEtdMU = 1. _d 0
0437 SEAICEmcMu = 1. _d 0
fff6be1885 Mart*0438
0439 SEAICE_dalton = 1.75 _d -03
0440 #ifdef ALLOW_EXF
b2a42ee513 Mart*0441 IF ( useEXF ) THEN
fff6be1885 Mart*0442
0443
b2a42ee513 Mart*0444 SEAICE_rhoAir = atmrho
0445 SEAICE_cpAir = atmcp
0446 SEAICE_lhEvap = flamb
0447 SEAICE_lhFusion = flami
d778130a13 Mart*0448 SEAICE_boltzmann = stefanBoltzmann
0449 SEAICE_emissivity = ocean_emissivity
22b703279f Mart*0450 SEAICE_ice_emiss = ice_emissivity
0451 SEAICE_snow_emiss = snow_emissivity
b2a42ee513 Mart*0452 ELSE
fff6be1885 Mart*0453 #else
b2a42ee513 Mart*0454 IF ( .TRUE. ) THEN
fff6be1885 Mart*0455 #endif /* ALLOW_EXF */
b2a42ee513 Mart*0456 SEAICE_rhoAir = 1.3 _d 0
0457 SEAICE_cpAir = 1004. _d 0
0458 SEAICE_lhEvap = 2.50 _d 6
0459 SEAICE_lhFusion = 3.34 _d 5
d778130a13 Mart*0460 SEAICE_boltzmann = 5.670 _d -08
0461
0462 SEAICE_emissivity = 5.5 _d -08/5.670 _d -08
22b703279f Mart*0463 SEAICE_ice_emiss = SEAICE_emissivity
0464 SEAICE_snow_emiss = SEAICE_emissivity
b2a42ee513 Mart*0465 ENDIF
baa476eeba Dimi*0466 SEAICE_iceConduct = 2.1656 _d +00
0467 SEAICE_snowConduct = 3.1 _d -01
0468 SEAICE_snowThick = 0.15 _d 0
0469 SEAICE_shortwave = 0.30 _d 0
1c278edd09 Jean*0470 SEAICE_salt0 = 0.0 _d 0
0471 SEAICE_saltFrac = 0.0 _d 0
fb0c323dcc Dimi*0472 #ifdef SEAICE_ITD
86b84a92fc Patr*0473
cf15f45de5 Torg*0474
ae4c29e0db Jean*0475
cf15f45de5 Torg*0476
0477
0478
0479 SEAICE_multDim = nITD
4b6d456764 Mart*0480 SEAICE_PDF(1) = 1. _d 0
0481 DO l=2,nITD
0482 SEAICE_PDF(l) = 0. _d 0
210ee8461e jm-c 0483 ENDDO
f5282c5b03 Gael*0484 #else
0485 SEAICE_multDim = 1
4b6d456764 Mart*0486 DO l=1,nITD
0487 SEAICE_PDF(l) = UNSET_RL
210ee8461e jm-c 0488 ENDDO
f5282c5b03 Gael*0489 #endif
b8665dacca Mart*0490 SEAICE_useMultDimSnow = .TRUE.
1c278edd09 Jean*0491
0492 SEAICE_mcPheeStepFunc = .FALSE.
0493 SEAICE_mcPheeTaper = UNSET_RL
ceae9498ad Gael*0494 SEAICE_availHeatTaper = UNSET_RL
1c278edd09 Jean*0495 SEAICE_mcPheePiston = UNSET_RL
0496 SEAICE_frazilFrac = UNSET_RL
0497 SEAICE_gamma_t = UNSET_RL
0498 SEAICE_gamma_t_frz = UNSET_RL
0499 SEAICE_availHeatFrac = UNSET_RL
0500 SEAICE_availHeatFracFrz = UNSET_RL
6ec4646d60 Gael*0501 SEAICE_doOpenWaterGrowth=.TRUE.
0502 SEAICE_doOpenWaterMelt=.FALSE.
0503 SEAICE_areaLossFormula=1
0504 SEAICE_areaGainFormula=1
840c7fba30 Gael*0505 SEAICE_tempFrz0 = 0.0901 _d 0
0506 SEAICE_dTempFrz_dS = -0.0575 _d 0
1c278edd09 Jean*0507
0508
0509
936a01b1f8 Mart*0510 SEAICEstressFactor = 1. _d 0
d32fe07ad8 Patr*0511 SEAICE_tauAreaObsRelax = -999. _d 0
09066b09cb Mart*0512 AreaFile = ' '
de31ea8481 Dimi*0513 HsnowFile = ' '
fdfa8e151f Dimi*0514 HsaltFile = ' '
6060ec2938 Dimi*0515 HeffFile = ' '
425e8efc36 Jean*0516 uIceFile = ' '
0517 vIceFile = ' '
5bb179ddc2 Mart*0518 uCoastLineFile = ' '
0519 vCoastLineFile = ' '
cee16b76ae Dimi*0520 IMAX_TICE = 10
b58e51ce4e Jean*0521 postSolvTempIter = 2
e45202e340 Mart*0522
c8739d4898 Mart*0523 SEAICEuseLSR = .TRUE.
0524 SEAICEusePicardAsPrecon = .FALSE.
e45202e340 Mart*0525 SEAICE_LSRrelaxU = 0.95 _d 0
0526 SEAICE_LSRrelaxV = 0.95 _d 0
07b4a12853 Mart*0527 SOLV_NCHECK= 2
79df32c3f1 Mart*0528 SEAICEnonLinIterMax = UNSET_I
0529 SEAICElinearIterMax = UNSET_I
0530 SEAICEpreconNL_Iter = 0
0531 SEAICEpreconLinIter = 10
3de1dea93d Jean*0532 #ifdef SEAICE_ALLOW_FREEDRIFT
0533 LSR_mixIniGuess = 0
0534 #else
0535 LSR_mixIniGuess = -1
0536 #endif
dc26f158aa Mart*0537 LSR_ERROR = 0.00001 _d 0
f82b316546 Jean*0538 SEAICEuseMultiTileSolver = .FALSE.
136908bfac Ian *0539
0540 SEAICE_area_floor = siEPS
0541 SEAICE_area_reg = siEPS
0542 SEAICE_hice_reg = 0.05 _d 0
f82b316546 Jean*0543 SEAICE_area_max = 1.00 _d 0
136908bfac Ian *0544
16f85413ea Mart*0545 SEAICE_airTurnAngle = 0.0 _d 0
0546 SEAICE_waterTurnAngle = 0.0 _d 0
cee16b76ae Dimi*0547 MIN_ATEMP = -50. _d 0
6060ec2938 Dimi*0548 MIN_LWDOWN = 60. _d 0
baa476eeba Dimi*0549 MIN_TICE = -50. _d 0
3daf25222c Mart*0550 SEAICE_deltaMin = UNSET_RL
460cb5f999 Dimi*0551 SEAICE_EPS = 1. _d -10
09510da3bb Dimi*0552 SEAICE_EPS_SQ = -99999.
f82b316546 Jean*0553
0554 SEAICEwriteState = .FALSE.
0555 SEAICE_monFreq = monitorFreq
0556 SEAICE_dumpFreq = dumpFreq
0557 #ifdef ALLOW_MNC
0558 SEAICE_dump_mnc = snapshot_mnc
0559 SEAICE_mon_mnc = monitor_mnc
0560 #else
0561 SEAICE_dump_mnc = .FALSE.
0562 SEAICE_mon_mnc = .FALSE.
0563 #endif
0564 SEAICE_debugPointI = UNSET_I
0565 SEAICE_debugPointJ = UNSET_I
dc54d31829 Ian *0566 SINegFac = 1. _d 0
b58e51ce4e Jean*0567
0568
0569 LAD = UNSET_I
79df32c3f1 Mart*0570 NPSEUDOTIMESTEPS = UNSET_I
0571 SOLV_MAX_ITERS = UNSET_I
0572 SEAICEnewtonIterMax= UNSET_I
0573 SEAICEkrylovIterMax= UNSET_I
0574 JFNKgamma_nonlin = UNSET_RL
b58e51ce4e Jean*0575
0576
fff6be1885 Mart*0577 SEAICE_sensHeat = UNSET_RL
b58e51ce4e Jean*0578
0579
fff6be1885 Mart*0580 SEAICE_latentWater = UNSET_RL
b58e51ce4e Jean*0581
0582
fff6be1885 Mart*0583 SEAICE_latentIce = UNSET_RL
a98c4b8072 Ian *0584 SEAICE_salinity = UNSET_RL
1c278edd09 Jean*0585 SIsalFRAC = UNSET_RL
0586 SIsal0 = UNSET_RL
ccaa3c61f4 Patr*0587 IceAgeFile = ' '
b58e51ce4e Jean*0588
0589 MAX_TICE = UNSET_RL
136908bfac Ian *0590 areaMin = UNSET_RL
0591 hiceMin = UNSET_RL
0592 A22 = UNSET_RL
0593 areaMax = UNSET_RL
0594 SEAICE_lhSublim = UNSET_RL
e54fe3e1f9 Gael*0595 SEAICEadvAge = .TRUE.
0596 SEAICEadvSchAge = UNSET_I
0597 SEAICEdiffKhAge = UNSET_RL
0598 IceAgeTrFile(1) = ' '
0599 IceAgeTrFile(2) = ' '
0600 IceAgeTrFile(3) = ' '
0601 IceAgeTrFile(4) = ' '
ceae9498ad Gael*0602 SEAICEturbFluxFormula =UNSET_I
0603 SEAICE_freeze = UNSET_RL
050eb90cc6 Gael*0604 MAX_HEFF = UNSET_RL
e501eee760 Mart*0605 SEAICEuseAB2 = .FALSE.
0606 SEAICE_abEps = UNSET_RL
b7411f1a84 Jean*0607 SEAICE_taveFreq = UNSET_RL
0608 SEAICE_tave_mnc = .FALSE.
b58e51ce4e Jean*0609
809c36b928 Patr*0610
869864d4b6 Patr*0611 #ifdef ALLOW_COST
7d0cf89c7c Jean*0612 locDate(1) = 0
0613 locDate(2) = 0
0614 # ifdef ALLOW_CAL
0615 CALL CAL_GETDATE( -1, startTime, locDate, myThid )
0616 # endif /* ALLOW_CAL */
1e22f5fc71 Patr*0617 mult_ice_export = 0. _d 0
3ad0d94cb0 Patr*0618 mult_ice = 0. _d 0
7d0cf89c7c Jean*0619 costIceStart1 = locDate(1)
0620 costIceStart2 = locDate(2)
3ad0d94cb0 Patr*0621 costIceEnd1 = 0
0622 costIceEnd2 = 0
0623 cost_ice_flag = 1
1bedc5345f An T*0624 SEAICE_cutoff_area = 0.0001 _d 0
0625 SEAICE_cutoff_heff = 0. _d 0
2b959ba38e Mart*0626
0627 SEAICE_clamp_salt = UNSET_RL
0628 SEAICE_clamp_theta = UNSET_RL
0629 mult_smrsst = UNSET_RL
0630 mult_smrsss = UNSET_RL
0631 mult_smrarea = UNSET_RL
0632 wsmrarea0 = UNSET_RL
0633 wmean_smrarea = UNSET_RL
0634 smrsstbarfile = ' '
0635 smrsssbarfile = ' '
0636 smrareabarfile = ' '
3ad0d94cb0 Patr*0637 smrareadatfile = ' '
0638 smrarea_errfile = ' '
2b959ba38e Mart*0639 smrareastartdate1 = UNSET_I
0640 smrareastartdate2 = UNSET_I
1c278edd09 Jean*0641 #endif /* ALLOW_COST */
869864d4b6 Patr*0642
e54fe3e1f9 Gael*0643 #ifdef ALLOW_SITRACER
8bc8bee483 Gael*0644 SItrNumInUse=SItrMaxNum
f50f58ec54 Gael*0645 DO iTracer = 1, SItrMaxNum
e54fe3e1f9 Gael*0646 SItrFile(iTracer) = ' '
f50f58ec54 Gael*0647 SItrName(iTracer) = ' '
3721cfe5e4 Gael*0648 SItrNameLong(iTracer) = ' '
0649 SItrUnit(iTracer) = ' '
bb24b8a3e6 Gael*0650 SItrMate(iTracer) = 'HEFF'
8bc8bee483 Gael*0651 SItrFromOcean0(iTracer) = ZERO
0652 SItrFromOceanFrac(iTracer) = ZERO
0653 SItrFromFlood0(iTracer) = ZERO
0654 SItrFromFloodFrac(iTracer) = ZERO
0655 SItrExpand0(iTracer) = ZERO
f50f58ec54 Gael*0656 ENDDO
1c278edd09 Jean*0657 #endif /* ALLOW_SITRACER */
0658 nRetired = 0
dc26f158aa Mart*0659 nError = 0
1c278edd09 Jean*0660
0661
0662 WRITE(msgBuf,'(A)')
0663 &' '
d99c25453c Jean*0664 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1c278edd09 Jean*0665 & SQUEEZE_RIGHT , myThid)
0666 WRITE(msgBuf,'(A)') ' SEAICE_READPARMS: opening data.seaice'
d99c25453c Jean*0667 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1c278edd09 Jean*0668 & SQUEEZE_RIGHT , myThid)
0669
0670 CALL OPEN_COPY_DATA_FILE(
0671 I 'data.seaice', 'SEAICE_READPARMS',
0672 O iUnit,
0673 I myThid )
0674
0675
0676 READ(UNIT=iUnit,NML=SEAICE_PARM01)
0677
0678 #ifdef ALLOW_COST
0679 READ(UNIT=iUnit,NML=SEAICE_PARM02)
0680 #endif /* ALLOW_COST */
0681
0682 #ifdef ALLOW_SITRACER
ccaa3c61f4 Patr*0683 READ(UNIT=iUnit,NML=SEAICE_PARM03)
1c278edd09 Jean*0684 #endif /* ALLOW_SITRACER */
ccaa3c61f4 Patr*0685
7a77863887 Mart*0686 #ifdef SINGLE_DISK_IO
809c36b928 Patr*0687 CLOSE(iUnit)
7a77863887 Mart*0688 #else
0689 CLOSE(iUnit,STATUS='DELETE')
0690 #endif /* SINGLE_DISK_IO */
809c36b928 Patr*0691
cf15f45de5 Torg*0692 #ifdef SEAICE_ITD
0693
0694
0695
0696 SEAICE_multDim = nITD
0697 #endif
0698
f4fcd985ee Dimi*0699 WRITE(msgBuf,'(A)')
0700 & ' SEAICE_READPARMS: finished reading data.seaice'
809c36b928 Patr*0701 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
9b8b001637 Jean*0702 & SQUEEZE_RIGHT , myThid)
809c36b928 Patr*0703
1c278edd09 Jean*0704
4b6d456764 Mart*0705
3daf25222c Mart*0706
0707 IF ( SEAICE_deltaMin .EQ. UNSET_RL ) SEAICE_deltaMin = SEAICE_EPS
c512e371cc drin*0708
0709 IF (SEAICE_eccfr .EQ. UNSET_RL ) SEAICE_eccfr = SEAICE_eccen
3daf25222c Mart*0710
4b6d456764 Mart*0711
0712 tmp = SEAICE_multDim
0713 DO l = 1, SEAICE_multDim
0714 IF (SEAICE_PDF(l).EQ.UNSET_RL) SEAICE_PDF(l) = ONE/tmp
0715 ENDDO
0716 DO l = SEAICE_multDim+1, nITD
0717 IF (SEAICE_PDF(l).EQ.UNSET_RL) SEAICE_PDF(l) = 0. _d 0
0718 ENDDO
0719
7b415cab4e Dimi*0720 IF (ICE2WATR.EQ.UNSET_RL) ICE2WATR = SEAICE_rhoIce*recip_rhoConst
f834b21bef Dimi*0721 IF (SEAICE_drag_south .EQ. UNSET_RL)
0722 & SEAICE_drag_south = SEAICE_drag
0723 IF (SEAICE_waterDrag_south .EQ. UNSET_RL)
0724 & SEAICE_waterDrag_south = SEAICE_waterDrag
0725 IF (SEAICE_dryIceAlb_south .EQ. UNSET_RL)
0726 & SEAICE_dryIceAlb_south = SEAICE_dryIceAlb
0727 IF (SEAICE_wetIceAlb_south .EQ. UNSET_RL)
0728 & SEAICE_wetIceAlb_south = SEAICE_wetIceAlb
0729 IF (SEAICE_drySnowAlb_south .EQ. UNSET_RL)
0730 & SEAICE_drySnowAlb_south = SEAICE_drySnowAlb
0731 IF (SEAICE_wetSnowAlb_south .EQ. UNSET_RL)
0732 & SEAICE_wetSnowAlb_south = SEAICE_wetSnowAlb
f81e0cd482 Dimi*0733 IF (HO_south .EQ. UNSET_RL)
0734 & HO_south = HO
abb637800a Mart*0735
0736 IF (SEAICE_cBasalStar .EQ. UNSET_RL)
0737 & SEAICE_cBasalStar = SEAICE_cStar
7b415cab4e Dimi*0738
f0385691ef Ed H*0739
0740
0741
0742
dfc17c9c63 Jean*0743 IF ( SEAICE_deltaTtherm .NE. dTtracerLev(1) .OR.
df4be8dc71 Dimi*0744 & SEAICE_deltaTdyn .LT. SEAICE_deltaTtherm .OR.
f4fcd985ee Dimi*0745 & (SEAICE_deltaTdyn/SEAICE_deltaTtherm) .NE.
0746 & INT(SEAICE_deltaTdyn/SEAICE_deltaTtherm) ) THEN
0747 WRITE(msgBuf,'(A)')
0748 & 'Unsupported combination of SEAICE_deltaTtherm,'
9b8b001637 Jean*0749 CALL PRINT_ERROR( msgBuf , myThid)
f4fcd985ee Dimi*0750 WRITE(msgBuf,'(A)')
dfc17c9c63 Jean*0751 & ' SEAICE_deltaTdyn, and dTtracerLev(1)'
9b8b001637 Jean*0752 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0753 nError = nError + 1
f4fcd985ee Dimi*0754 ENDIF
ba20a6318c Mart*0755 SEAICEuseEVP = .FALSE.
1c278edd09 Jean*0756 #ifdef SEAICE_ALLOW_EVP
dc26f158aa Mart*0757
624c4d1fbb Mart*0758
dc26f158aa Mart*0759 IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
210ee8461e jm-c 0760
624c4d1fbb Mart*0761
3b3669606e Mart*0762 IF ( SEAICE_evpAlpha .NE. UNSET_RL
dc26f158aa Mart*0763 & .OR. SEAICE_evpBeta .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
624c4d1fbb Mart*0764
dc26f158aa Mart*0765 IF ( SEAICEaEVPcoeff .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
3b3669606e Mart*0766
6e2f4e58fa Mart*0767 IF ( SEAICEuseEVP ) THEN
0768 IF ( (SEAICE_deltaTdyn/SEAICE_deltaTevp) .NE.
2bf4ed5c39 Mart*0769 & INT(SEAICE_deltaTdyn/SEAICE_deltaTevp) .AND.
7c2e394a42 Mart*0770 & .NOT. (SEAICEuseEVPstar.OR.SEAICEuseEVPrev) ) THEN
6e2f4e58fa Mart*0771 WRITE(msgBuf,'(A)')
0772 & 'SEAICE_deltaTevp must be a factor of SEAICE_deltaTdyn.'
9b8b001637 Jean*0773 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0774 nError = nError + 1
6e2f4e58fa Mart*0775 ENDIF
128248bff6 Mart*0776 IF ( SEAICE_elasticParm .LE. 0. _d 0 ) THEN
6e2f4e58fa Mart*0777 WRITE(msgBuf,'(A)')
128248bff6 Mart*0778 & 'SEAICE_elasticParm must greater than 0.'
9b8b001637 Jean*0779 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0780 nError = nError + 1
6e2f4e58fa Mart*0781 ENDIF
4ece3a93a6 Mart*0782 IF ( SEAICE_evpTauRelax .LE. 0. _d 0 )
0783 & SEAICE_evpTauRelax = SEAICE_deltaTdyn*SEAICE_elasticParm
dc26f158aa Mart*0784
0785 IF ( SEAICEnEVPstarSteps.EQ.UNSET_I ) THEN
0786 IF ( SEAICE_deltaTevp.EQ.UNSET_RL ) THEN
0787 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_readparms: Either ',
0788 & 'SEAICEnEVPstarSteps or SEAICE_deltaTevp need to be set.'
0789 CALL PRINT_ERROR( msgBuf , myThid)
0790 nError = nError + 1
0791 ELSE
0792 SEAICEnEVPstarSteps = INT(SEAICE_deltaTdyn/SEAICE_deltaTevp)
0793 ENDIF
0794 ENDIF
3b3669606e Mart*0795
210ee8461e jm-c 0796 IF ( SEAICE_evpAlpha .NE. UNSET_RL .AND.
3b3669606e Mart*0797 & SEAICE_evpBeta .EQ. UNSET_RL ) SEAICE_evpBeta = SEAICE_evpAlpha
210ee8461e jm-c 0798 IF ( SEAICE_evpBeta .NE. UNSET_RL .AND.
3b3669606e Mart*0799 & SEAICE_evpAlpha .EQ. UNSET_RL ) SEAICE_evpAlpha = SEAICE_evpBeta
0800
2bf4ed5c39 Mart*0801 IF ( SEAICE_evpBeta .EQ. UNSET_RL ) THEN
0802 SEAICE_evpBeta = SEAICE_deltaTdyn/SEAICE_deltaTevp
0803 ELSE
0804 SEAICE_deltaTevp = SEAICE_deltaTdyn/SEAICE_evpBeta
0805 ENDIF
0806 IF ( SEAICE_evpAlpha .EQ. UNSET_RL ) THEN
0807 SEAICE_evpAlpha = 2. _d 0 * SEAICE_evpTauRelax/SEAICE_deltaTevp
0808 ELSE
0809 SEAICE_evpTauRelax = 0.5 _d 0 *SEAICE_evpAlpha*SEAICE_deltaTevp
0810 ENDIF
624c4d1fbb Mart*0811
3b3669606e Mart*0812 IF ( SEAICEaEVPcoeff .NE. UNSET_RL ) THEN
624c4d1fbb Mart*0813 IF ( SEAICEaEVPcStar .EQ.UNSET_RL) SEAICEaEVPcStar =4. _d 0
0814 IF (SEAICEaEVPalphaMin.EQ.UNSET_RL) SEAICEaEVPalphaMin=5. _d 0
0815
dc26f158aa Mart*0816
624c4d1fbb Mart*0817
0818
dc26f158aa Mart*0819
0820
0821
0822 SEAICE_evpAlpha = UNSET_RL
0823 SEAICE_evpBeta = UNSET_RL
3b3669606e Mart*0824 ENDIF
2bf4ed5c39 Mart*0825
6e2f4e58fa Mart*0826 ENDIF
0827 #endif /* SEAICE_ALLOW_EVP */
d99c25453c Jean*0828
e97d1f6d02 Gael*0829 #ifdef SEAICE_ALLOW_FREEDRIFT
0830 IF ( SEAICEuseFREEDRIFT ) SEAICEuseEVP = .FALSE.
0831 IF ( SEAICEuseFREEDRIFT ) THEN
0832 WRITE(msgBuf,'(A,A)')
0833 & 'WARNING FROM S/R SEAICE_READPARMS:',
0834 & ' switch seaice from LSR or EVP to "free drift"'
0835 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
edfdf5fa1d Jean*0836 & SQUEEZE_RIGHT , myThid)
e97d1f6d02 Gael*0837 ENDIF
0838 #endif /* SEAICE_ALLOW_FREEDRIFT */
f4fcd985ee Dimi*0839
5fd900657f Mart*0840 #ifndef SEAICE_ITD
0841 IF ( .NOT.useHibler79IceStrength ) THEN
0842 useHibler79IceStrength = .TRUE.
0843 WRITE(msgBuf,'(A,A)')
0844 & 'WARNING FROM S/R SEAICE_READPARMS:',
0845 & ' resetting useHibler79IceStrength = .TRUE., because'
0846 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0847 & SQUEEZE_RIGHT , myThid)
0848 WRITE(msgBuf,'(A,A)')
0849 & 'WARNING FROM S/R SEAICE_READPARMS:',
0850 & ' SEAICE_ITD is not defined.'
0851 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0852 & SQUEEZE_RIGHT , myThid)
0853 ENDIF
0854 #endif /* SEAICE_ITD */
0855
c8739d4898 Mart*0856
0857 SEAICEuseLSR = .NOT.SEAICEuseFREEDRIFT .AND. .NOT.SEAICEuseEVP
1ac05d2425 Mart*0858 & .AND. .NOT.SEAICEuseJFNK .AND. .NOT. SEAICEuseKrylov
c8739d4898 Mart*0859
1ac05d2425 Mart*0860
0861 IF ( SEAICEuseJFNK .AND. SEAICEusePicardAsPrecon .AND.
0862 & .NOT. SEAICEuseKrylov ) SEAICEuseLSR = .TRUE.
0863 IF ( SEAICEuseJFNK .AND. .NOT. SEAICEusePicardAsPrecon )
0864 & SEAICEuseKrylov = .FALSE.
210ee8461e jm-c 0865
79df32c3f1 Mart*0866
0867 IF ( SEAICEnonLinIterMax .EQ. UNSET_I ) THEN
0868
0869
0870 IF ( SEAICEuseLSR ) SEAICEnonLinIterMax = 2
0871 IF ( SEAICEuseJFNK.OR.SEAICEuseKrylov ) SEAICEnonLinIterMax = 10
0872 ENDIF
0873
0874 IF ( SEAICEuseLSR .AND. .NOT. SEAICEusePicardAsPrecon )
0875 & SEAICEnonLinIterMax = MAX(SEAICEnonLinIterMax,2)
0876
143d9ce879 Dami*0877
0878 IF ( .NOT. SEAICEuseLSR ) SEAICEuseLSRflex = .FALSE.
0879
fe1572f1db Mart*0880
79df32c3f1 Mart*0881 IF ( SEAICElinearIterMax .EQ. UNSET_I ) THEN
210ee8461e jm-c 0882
fe1572f1db Mart*0883
0d75a51072 Mart*0884 #ifdef ALLOW_AUTODIFF
0885 SEAICElinearIterMax = SOLV_MAX_FIXED
0886 #else
79df32c3f1 Mart*0887 SEAICElinearIterMax = 1500
0d75a51072 Mart*0888 #endif
210ee8461e jm-c 0889
fe1572f1db Mart*0890
0891
79df32c3f1 Mart*0892 IF ( SEAICEuseJFNK.OR.SEAICEuseKrylov ) SEAICElinearIterMax = 10
0893 ENDIF
0894
0895
0896
0897 IF ( SEAICE_JFNK_lsIter .EQ. UNSET_I )
0898 & SEAICE_JFNK_lsIter = 2*SEAICEnewtonIterMax
1c278edd09 Jean*0899
33088916b3 Mart*0900
0901
0902 IF ( .NOT. SEAICE_no_slip ) SEAICE_2ndOrderBC = .FALSE.
0903 IF ( SEAICEuseLSR ) SEAICE_2ndOrderBC = .FALSE.
0904
b8665dacca Mart*0905
0906 IF ( SEAICE_2ndOrderBC ) THEN
0907 SEAICE_OLx = OLx-3
0908 SEAICE_OLy = OLy-3
a68248c150 Mart*0909 ENDIF
0910
1c278edd09 Jean*0911
0912
0913
0914 IF ( SEAICE_mcPheeTaper .EQ. UNSET_RL ) THEN
0915 IF ( SEAICE_availHeatTaper.EQ.UNSET_RL ) THEN
0916 SEAICE_mcPheeTaper = 0.0 _d 0
0917 ELSE
0918 SEAICE_mcPheeTaper = SEAICE_availHeatTaper
0919 ENDIF
0920 ELSEIF ( SEAICE_availHeatTaper.NE.UNSET_RL ) THEN
0921 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0922 & 'both SEAICE_mcPheeTaper & SEAICE_availHeatTaper'
0923 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0924 nError = nError + 1
1c278edd09 Jean*0925 ENDIF
0926
0927
0928 IF ( SEAICE_gamma_t_frz .NE. UNSET_RL ) THEN
0929 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
0930 SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t_frz
0931 ELSE
0932 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0933 & 'both SEAICE_frazilFrac & SEAICE_gamma_t_frz'
0934 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0935 nError = nError + 1
1c278edd09 Jean*0936 ENDIF
0937 ENDIF
0938 IF ( SEAICE_availHeatFracFrz.NE.UNSET_RL ) THEN
0939 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
0940 SEAICE_frazilFrac = SEAICE_availHeatFracFrz
0941 ELSE
0942 IF ( SEAICE_gamma_t_frz .EQ. UNSET_RL ) THEN
0943 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0944 & 'both SEAICE_frazilFrac & SEAICE_availHeatFracFrz'
0945 ELSE
0946 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0947 & 'both SEAICE_gamma_t_frz & SEAICE_availHeatFracFrz'
0948 ENDIF
dc26f158aa Mart*0949 CALL PRINT_ERROR( msgBuf , myThid)
0950 nError = nError + 1
1c278edd09 Jean*0951 ENDIF
0952 ENDIF
0953
0954 IF ( SEAICE_gamma_t .NE. UNSET_RL .AND.
0955 & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
0956 SEAICE_frazilFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
0957 ENDIF
0958
0959 IF ( SEAICE_availHeatFrac.NE.UNSET_RL .AND.
0960 & SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
0961 SEAICE_frazilFrac = SEAICE_availHeatFrac
0962 ENDIF
0963 IF ( SEAICE_frazilFrac .EQ. UNSET_RL ) THEN
0964 SEAICE_frazilFrac = 1. _d 0
0965 ENDIF
0966
0967
0968
0969 IF ( SEAICE_gamma_t .NE. UNSET_RL ) THEN
0970 IF ( SEAICE_availHeatFrac.EQ.UNSET_RL ) THEN
0971 SEAICE_availHeatFrac = SEAICE_deltaTtherm/SEAICE_gamma_t
0972 ELSE
0973 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0974 & 'both SEAICE_gamma_t & SEAICE_availHeatFrac'
0975 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0976 nError = nError + 1
1c278edd09 Jean*0977 ENDIF
0978 ENDIF
0979 IF ( SEAICE_mcPheePiston .NE. UNSET_RL .AND.
0980 & SEAICE_availHeatFrac.NE. UNSET_RL ) THEN
0981 IF ( SEAICE_gamma_t .EQ. UNSET_RL ) THEN
0982 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0983 & 'both SEAICE_mcPheePiston & SEAICE_availHeatFrac'
0984 ELSE
0985 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: Cannot specify ',
0986 & 'both SEAICE_mcPheePiston & SEAICE_gamma_t'
0987 ENDIF
0988 CALL PRINT_ERROR( msgBuf , myThid)
dc26f158aa Mart*0989 nError = nError + 1
1c278edd09 Jean*0990 ENDIF
d99c25453c Jean*0991
09e3b53265 Mart*0992 IF ( useThSice ) THEN
0993
0994
0995
0996 usePW79thermodynamics = .FALSE.
afaeb4fe62 Jean*0997 SEAICEadvHeff = .FALSE.
09e3b53265 Mart*0998 SEAICEadvArea = .FALSE.
afaeb4fe62 Jean*0999 SEAICEadvSnow = .FALSE.
1000 SEAICEadvSalt = .FALSE.
09e3b53265 Mart*1001 ENDIF
1c278edd09 Jean*1002
afaeb4fe62 Jean*1003 IF ( SEAICEadvSchArea .EQ. UNSET_I )
3db1737c0d Jean*1004 & SEAICEadvSchArea = SEAICEadvSchHeff
1005 IF ( SEAICEadvSchArea .EQ. UNSET_I )
bd4f8028de Mart*1006 & SEAICEadvSchArea = SEAICEadvScheme
1007 IF ( SEAICEadvScheme .NE. SEAICEadvSchArea )
1008 & SEAICEadvScheme = SEAICEadvSchArea
afaeb4fe62 Jean*1009 IF ( SEAICEadvSchHeff .EQ. UNSET_I )
bd4f8028de Mart*1010 & SEAICEadvSchHeff = SEAICEadvSchArea
1011 IF ( SEAICEadvSchSnow .EQ. UNSET_I )
1012 & SEAICEadvSchSnow = SEAICEadvSchHeff
fdfa8e151f Dimi*1013 IF ( SEAICEadvSchSalt .EQ. UNSET_I )
1014 & SEAICEadvSchSalt = SEAICEadvSchHeff
3db1737c0d Jean*1015
1016 IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
1017 & SEAICEdiffKhArea = SEAICEdiffKhHeff
1018 IF ( SEAICEdiffKhArea .EQ. UNSET_RL )
1019 & SEAICEdiffKhArea = 0. _d 0
1020 IF ( SEAICEdiffKhHeff .EQ. UNSET_RL )
1021 & SEAICEdiffKhHeff = SEAICEdiffKhArea
1022 IF ( SEAICEdiffKhSnow .EQ. UNSET_RL )
1023 & SEAICEdiffKhSnow = SEAICEdiffKhHeff
1024 IF ( SEAICEdiffKhSalt .EQ. UNSET_RL )
1025 & SEAICEdiffKhSalt = SEAICEdiffKhHeff
09510da3bb Dimi*1026 IF ( SEAICE_EPS_SQ .EQ. -99999. )
1027 & SEAICE_EPS_SQ = SEAICE_EPS * SEAICE_EPS
1028
e0fa1cecbf Mart*1029 #ifdef ALLOW_GENERIC_ADVDIFF
1030 SEAICEmultiDimAdvection = .TRUE.
1031 IF ( SEAICEadvScheme.EQ.ENUM_CENTERED_2ND
1032 & .OR.SEAICEadvScheme.EQ.ENUM_UPWIND_3RD
1033 & .OR.SEAICEadvScheme.EQ.ENUM_CENTERED_4TH ) THEN
1034 SEAICEmultiDimAdvection = .FALSE.
1035 ENDIF
1036 #else
1037 SEAICEmultiDimAdvection = .FALSE.
1038 #endif /* ALLOW_GENERIC_ADVDIFF */
1039
b58e51ce4e Jean*1040
79df32c3f1 Mart*1041 IF ( SEAICEnewtonIterMax .NE. UNSET_I ) THEN
1042 nRetired = nRetired + 1
1043 WRITE(msgBuf,'(A,A)')
1044 & 'S/R SEAICE_READPARMS: "SEAICEnewtonIterMax" ',
1045 & 'is no longer allowed in file "data.seaice"'
1046 CALL PRINT_ERROR( msgBuf, myThid )
1047 WRITE(msgBuf,'(A)')
1048 & 'S/R SEAICE_READPARMS: use "SEAICEnonLinIterMax" instead'
1049 CALL PRINT_ERROR( msgBuf, myThid )
1050 ENDIF
1051 IF ( SEAICEkrylovIterMax .NE. UNSET_I ) THEN
1052 nRetired = nRetired + 1
1053 WRITE(msgBuf,'(A,A)')
1054 & 'S/R SEAICE_READPARMS: "SEAICEkrylovIterMax" ',
1055 & 'is no longer allowed in file "data.seaice"'
1056 CALL PRINT_ERROR( msgBuf, myThid )
1057 WRITE(msgBuf,'(A)')
1058 & 'S/R SEAICE_READPARMS: use "SEAICElinearIterMax" instead'
1059 CALL PRINT_ERROR( msgBuf, myThid )
1060 ENDIF
1061 IF ( NPSEUDOTIMESTEPS .NE. UNSET_I ) THEN
1062 nRetired = nRetired + 1
1063 WRITE(msgBuf,'(A,A)')
1064 & 'S/R SEAICE_READPARMS: "NPSEUDOTIMESTEPS" ',
1065 & 'is no longer allowed in file "data.seaice"'
1066 CALL PRINT_ERROR( msgBuf, myThid )
1067 WRITE(msgBuf,'(A)')
1068 & 'S/R SEAICE_READPARMS: use "SEAICEnonLinIterMax" instead'
1069 CALL PRINT_ERROR( msgBuf, myThid )
1070 ENDIF
1071 IF ( SOLV_MAX_ITERS .NE. UNSET_I ) THEN
1072 nRetired = nRetired + 1
1073 WRITE(msgBuf,'(A,A)')
1074 & 'S/R SEAICE_READPARMS: "SOLV_MAX_ITERS" ',
1075 & 'is no longer allowed in file "data.seaice"'
1076 CALL PRINT_ERROR( msgBuf, myThid )
1077 WRITE(msgBuf,'(A)')
1078 & 'S/R SEAICE_READPARMS: use "SEAICElinearIterMax" instead'
1079 CALL PRINT_ERROR( msgBuf, myThid )
1080 ENDIF
1081 IF ( JFNKgamma_nonlin .NE. UNSET_RL ) THEN
1082 nRetired = nRetired + 1
1083 WRITE(msgBuf,'(A,A)')
1084 & 'S/R SEAICE_READPARMS: "JFNKgamma_nonlin" ',
1085 & 'is no longer allowed in file "data.seaice"'
1086 CALL PRINT_ERROR( msgBuf, myThid )
1087 WRITE(msgBuf,'(A)')
1088 & 'S/R SEAICE_READPARMS: use "SEAICEnonLinTol" instead'
1089 CALL PRINT_ERROR( msgBuf, myThid )
1090 ENDIF
fff6be1885 Mart*1091 IF ( SEAICE_sensHeat .NE. UNSET_RL ) THEN
1092 nRetired = nRetired + 1
edfdf5fa1d Jean*1093 WRITE(msgBuf,'(A,A)')
fff6be1885 Mart*1094 & 'S/R SEAICE_READPARMS: "SEAICE_sensHeat" ',
1095 & 'is no longer allowed in file "data.seaice"'
1096 CALL PRINT_ERROR( msgBuf, myThid )
edfdf5fa1d Jean*1097 WRITE(msgBuf,'(A,A)')
fff6be1885 Mart*1098 & 'S/R SEAICE_READPARMS: set "SEAICE_cpAir", ',
1099 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
1100 CALL PRINT_ERROR( msgBuf, myThid )
1101 ENDIF
1102 IF ( SEAICE_latentWater .NE. UNSET_RL ) THEN
1103 nRetired = nRetired + 1
edfdf5fa1d Jean*1104 WRITE(msgBuf,'(A,A)')
fff6be1885 Mart*1105 & 'S/R SEAICE_READPARMS: "SEAICE_latentWater" ',
1106 & 'is no longer allowed in file "data.seaice"'
1107 CALL PRINT_ERROR( msgBuf, myThid )
edfdf5fa1d Jean*1108 WRITE(msgBuf,'(A,A)')
fff6be1885 Mart*1109 & 'S/R SEAICE_READPARMS: set "SEAICE_lhEvap", ',
1110 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
1111 CALL PRINT_ERROR( msgBuf, myThid )
1112 ENDIF
1113 IF ( SEAICE_latentIce .NE. UNSET_RL ) THEN
1114 nRetired = nRetired + 1
edfdf5fa1d Jean*1115 WRITE(msgBuf,'(A,A)')
fff6be1885 Mart*1116 & 'S/R SEAICE_READPARMS: "SEAICE_latentIce" ',
1117 & 'is no longer allowed in file "data.seaice"'
1118 CALL PRINT_ERROR( msgBuf, myThid )
edfdf5fa1d Jean*1119 WRITE(msgBuf,'(A,A)')
fff6be1885 Mart*1120 & 'S/R SEAICE_READPARMS: set "SEAICE_lhFusion", ',
1121 & '"SEAICE_dalton", and "SEAICE_rhoAir" instead'
1122 CALL PRINT_ERROR( msgBuf, myThid )
1123 ENDIF
1c278edd09 Jean*1124 IF ( SEAICE_freeze .NE. UNSET_RL ) THEN
1125 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1126 & '"SEAICE_freeze" no longer allowed in file "data.seaice"'
1127 CALL PRINT_ERROR( msgBuf, myThid )
1128 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1129 & 'set instead "SEAICE_tempFrz0" and "SEAICE_dTempFrz_dS"'
1130 CALL PRINT_ERROR( msgBuf, myThid )
1131 ENDIF
a98c4b8072 Ian *1132 IF ( SEAICE_salinity .NE. UNSET_RL ) THEN
1133 nRetired = nRetired + 1
1c278edd09 Jean*1134 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1135 & '"SEAICE_salinity" is no longer allowed in file "data.seaice"'
a98c4b8072 Ian *1136 CALL PRINT_ERROR( msgBuf, myThid )
1c278edd09 Jean*1137 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1138 & 'set "SEAICE_saltFrac" instead'
1139 CALL PRINT_ERROR( msgBuf, myThid )
1140 ENDIF
1141 IF ( SIsalFrac .NE. UNSET_RL ) THEN
1142 nRetired = nRetired + 1
1143 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1144 & '"SIsalFrac" is no longer allowed in file "data.seaice"'
1145 CALL PRINT_ERROR( msgBuf, myThid )
1146 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1147 & 'set "SEAICE_saltFrac" instead'
1148 CALL PRINT_ERROR( msgBuf, myThid )
1149 ENDIF
1150 IF ( SIsal0 .NE. UNSET_RL ) THEN
1151 nRetired = nRetired + 1
1152 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1153 & '"SIsal0" is no longer allowed in file "data.seaice"'
1154 CALL PRINT_ERROR( msgBuf, myThid )
1155 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: ',
1156 & 'set "SEAICE_salt0" instead'
a98c4b8072 Ian *1157 CALL PRINT_ERROR( msgBuf, myThid )
1158 ENDIF
ccaa3c61f4 Patr*1159 IF ( IceAgeFile .NE. ' ' ) THEN
1160 nRetired = nRetired + 1
edfdf5fa1d Jean*1161 WRITE(msgBuf,'(A,A)')
ccaa3c61f4 Patr*1162 & 'S/R SEAICE_READPARMS: "IceAgeFile" ',
1163 & 'is no longer allowed in file "data.seaice"'
1164 CALL PRINT_ERROR( msgBuf, myThid )
edfdf5fa1d Jean*1165 WRITE(msgBuf,'(A,A)')
ccaa3c61f4 Patr*1166 & 'S/R SEAICE_READPARMS: replaced by ',
1167 & '"IceAgeTrFile(SEAICE_num)" array '
1168 CALL PRINT_ERROR( msgBuf, myThid )
425e8efc36 Jean*1169 ENDIF
136908bfac Ian *1170 IF ( areaMax .NE. UNSET_RL ) THEN
1171 nRetired = nRetired + 1
1172 WRITE(msgBuf,'(A,A)')
1173 & 'S/R SEAICE_READPARMS: "areaMax" ',
1174 & 'is no longer allowed in file "data.seaice"'
1175 CALL PRINT_ERROR( msgBuf, myThid )
1176 WRITE(msgBuf,'(A,A)')
1177 & 'S/R SEAICE_READPARMS: replaced by ',
1178 & '"SEAICE_area_max"'
1179 CALL PRINT_ERROR( msgBuf, myThid )
1180 ENDIF
1181 IF ( areaMin .NE. UNSET_RL ) THEN
1182 nRetired = nRetired + 1
1183 WRITE(msgBuf,'(A,A)')
1184 & 'S/R SEAICE_READPARMS: "areaMin" ',
1185 & 'is no longer allowed in file "data.seaice"'
1186 CALL PRINT_ERROR( msgBuf, myThid )
1187 WRITE(msgBuf,'(A,A)')
1188 & 'S/R SEAICE_READPARMS: replaced by ',
1189 & '"SEAICE_area_reg" for regularization and ',
1190 & '"SEAICE_area_floor" setting a lower bound'
1191 CALL PRINT_ERROR( msgBuf, myThid )
1192 ENDIF
1193 IF (SEAICE_lhSublim .NE. UNSET_RL ) THEN
1194 nRetired = nRetired + 1
1195 WRITE(msgBuf,'(A,A)')
1196 & 'S/R SEAICE_READPARMS: "SEAICE_lhSublim" ',
1197 & 'is no longer allowed in file "data.seaice"'
1198 CALL PRINT_ERROR( msgBuf, myThid )
1199 WRITE(msgBuf,'(A,A)')
1200 & 'S/R SEAICE_READPARMS: specify ',
1201 & '"SEAICE_lhFusion" and "SEAICE_lhEvap" instead'
1202 CALL PRINT_ERROR( msgBuf, myThid )
1203 ENDIF
1204 IF ( A22 .NE. UNSET_RL ) THEN
1205 nRetired = nRetired + 1
1206 WRITE(msgBuf,'(A,A)')
1207 & 'S/R SEAICE_READPARMS: "A22" ',
1208 & 'is no longer allowed in file "data.seaice"'
1209 CALL PRINT_ERROR( msgBuf, myThid )
1210 WRITE(msgBuf,'(A,A)')
1211 & 'S/R SEAICE_READPARMS: replaced by ',
425e8efc36 Jean*1212 & '"SEAICE_area_reg" for regularization'
136908bfac Ian *1213 CALL PRINT_ERROR( msgBuf, myThid )
1214 ENDIF
b58e51ce4e Jean*1215 IF ( LAD .NE. UNSET_I ) THEN
1216 nRetired = nRetired + 1
1217 WRITE(msgBuf,'(A,A)') 'S/R SEAICE_READPARMS: "LAD" ',
1218 & 'is no longer allowed in file "data.seaice"'
1219 CALL PRINT_ERROR( msgBuf, myThid )
1220 WRITE(msgBuf,'(A,A)') 'always use modified Euler step ',
1221 & '(LAD==2) since Leap frog code (LAD==1) is gone.'
1222 CALL PRINT_ERROR( msgBuf, myThid )
1223 ENDIF
1224 IF ( MAX_TICE .NE. UNSET_RL ) THEN
1225 nRetired = nRetired + 1
1226 WRITE(msgBuf,'(A,A)')
1227 & 'S/R SEAICE_READPARMS: "MAX_TICE" ',
1228 & 'is no longer allowed in file "data.seaice"'
1229 CALL PRINT_ERROR( msgBuf, myThid )
1230 ENDIF
136908bfac Ian *1231 IF ( hiceMin .NE. UNSET_RL ) THEN
1232 nRetired = nRetired + 1
1233 WRITE(msgBuf,'(A,A)')
1234 & 'S/R SEAICE_READPARMS: "hiceMin" ',
1235 & 'is no longer allowed in file "data.seaice"'
1236 CALL PRINT_ERROR( msgBuf, myThid )
1237 WRITE(msgBuf,'(A,A)')
1238 & 'S/R SEAICE_READPARMS: replaced by ',
425e8efc36 Jean*1239 & '"SEAICE_hice_reg" for regularization'
136908bfac Ian *1240 CALL PRINT_ERROR( msgBuf, myThid )
ccaa3c61f4 Patr*1241 ENDIF
e54fe3e1f9 Gael*1242 IF ( .NOT. SEAICEadvAge ) THEN
1243 nRetired = nRetired + 1
1244 WRITE(msgBuf,'(A,A)')
1245 & 'S/R SEAICE_READPARMS: "SEAICEadvAge" ',
1246 & 'is no longer allowed in file "data.seaice"'
1247 CALL PRINT_ERROR( msgBuf, myThid )
1248 WRITE(msgBuf,'(A,A)')
1249 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1250 & 'replaced and extended SEAICE_AGE'
1251 CALL PRINT_ERROR( msgBuf, myThid )
1252 ENDIF
1253 IF ( SEAICEadvSchAge .NE. UNSET_I ) THEN
1254 nRetired = nRetired + 1
1255 WRITE(msgBuf,'(A,A)')
1256 & 'S/R SEAICE_READPARMS: "SEAICEadvSchAge" ',
1257 & 'is no longer allowed in file "data.seaice"'
1258 CALL PRINT_ERROR( msgBuf, myThid )
1259 WRITE(msgBuf,'(A,A)')
1260 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1261 & 'replaced and extended SEAICE_AGE'
1262 CALL PRINT_ERROR( msgBuf, myThid )
1263 ENDIF
1264 IF ( SEAICEdiffKhAge .NE. UNSET_RL ) THEN
1265 nRetired = nRetired + 1
1266 WRITE(msgBuf,'(A,A)')
1267 & 'S/R SEAICE_READPARMS: "SEAICEdiffKhAge" ',
1268 & 'is no longer allowed in file "data.seaice"'
1269 CALL PRINT_ERROR( msgBuf, myThid )
1270 WRITE(msgBuf,'(A,A)')
1271 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1272 & 'replaced and extended SEAICE_AGE'
1273 CALL PRINT_ERROR( msgBuf, myThid )
1274 ENDIF
1275 IF ( ( IceAgeTrFile(1) .NE. ' ' ).OR.
1276 & ( IceAgeTrFile(2) .NE. ' ' ).OR.
1277 & ( IceAgeTrFile(3) .NE. ' ' ).OR.
1278 & ( IceAgeTrFile(4) .NE. ' ' ) ) THEN
1279 nRetired = nRetired + 1
1280 WRITE(msgBuf,'(A,A)')
1281 & 'S/R SEAICE_READPARMS: "IceAgeTrFile" ',
1282 & 'is no longer allowed in file "data.seaice"'
1283 CALL PRINT_ERROR( msgBuf, myThid )
1284 WRITE(msgBuf,'(A,A)')
1285 & 'S/R SEAICE_READPARMS: since ALLOW_SITRACER ',
1286 & 'replaced and extended SEAICE_AGE'
1287 CALL PRINT_ERROR( msgBuf, myThid )
1288 ENDIF
1c278edd09 Jean*1289 IF ( SEAICEturbFluxFormula .NE. UNSET_I ) THEN
1290 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1291 & '"SEAICEturbFluxFormula" no longer allowed in "data.seaice"'
1292 CALL PRINT_ERROR( msgBuf, myThid )
1293 WRITE(msgBuf,'(A,A)')'S/R SEAICE_READPARMS: ',
1294 & ' Set instead "SEAICE_mcPheePiston" and "SEAICE_frazilFrac"'
1295 CALL PRINT_ERROR( msgBuf, myThid )
1296 ENDIF
050eb90cc6 Gael*1297 IF ( MAX_HEFF .NE. UNSET_RL ) THEN
1298 nRetired = nRetired + 1
1299 WRITE(msgBuf,'(A,A)')
1300 & 'S/R SEAICE_READPARMS: "MAX_HEFF" ',
e501eee760 Mart*1301 & 'is no longer allowed in file "data.seaice"'
1302 CALL PRINT_ERROR( msgBuf, myThid )
1303 ENDIF
1304 IF ( SEAICEuseAB2 ) THEN
1305 nRetired = nRetired + 1
1306 WRITE(msgBuf,'(A,A)')
1307 & 'S/R SEAICE_READPARMS: "SEAICEuseAB2" ',
1308 & 'is no longer allowed in file "data.seaice"'
1309 CALL PRINT_ERROR( msgBuf, myThid )
1310 ENDIF
1311 IF ( SEAICE_abEps .NE. UNSET_RL ) THEN
1312 nRetired = nRetired + 1
1313 WRITE(msgBuf,'(A,A)')
1314 & 'S/R SEAICE_READPARMS: "SEAICE_abEps" ',
050eb90cc6 Gael*1315 & 'is no longer allowed in file "data.seaice"'
1316 CALL PRINT_ERROR( msgBuf, myThid )
1317 ENDIF
2b959ba38e Mart*1318 #ifdef ALLOW_COST
1319 IF ( smrsstbarfile .NE. ' ' .OR. smrsssbarfile .NE. ' '
1320 & .OR. smrareabarfile .NE. ' ' .OR. smrareadatfile .NE. ' '
1321 & .OR. smrarea_errfile .NE. ' '
1322 & .OR. mult_smrsst .NE. UNSET_RL .OR. mult_smrsss.NE.UNSET_RL
1323 & .OR. mult_smrarea .NE. UNSET_RL .OR. wsmrarea0 .NE.UNSET_RL
1324 & .OR. wmean_smrarea .NE. UNSET_RL
1325 & .OR. smrareastartdate1 .NE. UNSET_I
1326 & .OR. smrareastartdate2 .NE. UNSET_I
1327 & ) THEN
1328 nRetired = nRetired + 1
1329 WRITE(msgBuf,'(A,A)')
1330 & 'S/R SEAICE_READPARMS: "SMR"-related parameters ',
1331 & 'are no longer allowed in file "data.seaice"'
1332 CALL PRINT_ERROR( msgBuf, myThid )
1333 ENDIF
1334 IF ( SEAICE_clamp_salt .NE. UNSET_RL ) THEN
1335 nRetired = nRetired + 1
1336 WRITE(msgBuf,'(A,A)')
1337 & 'S/R SEAICE_READPARMS: "SEAICE_clamp_salt" ',
1338 & 'is no longer allowed in file "data.seaice"'
1339 CALL PRINT_ERROR( msgBuf, myThid )
1340 ENDIF
1341 IF ( SEAICE_clamp_theta .NE. UNSET_RL ) THEN
1342 nRetired = nRetired + 1
1343 WRITE(msgBuf,'(A,A)')
1344 & 'S/R SEAICE_READPARMS: "SEAICE_clamp_theta" ',
1345 & 'is no longer allowed in file "data.seaice"'
1346 CALL PRINT_ERROR( msgBuf, myThid )
1347 ENDIF
a4e168e012 antn*1348 #endif /* ALLOW_COST */
b7411f1a84 Jean*1349 IF ( SEAICE_taveFreq .NE. UNSET_RL ) THEN
1350 WRITE(msgBuf,'(2A)') 'SEAICE_READPARMS: "SEAICE_taveFreq"',
1351 & ' is no longer allowed in file "data.seaice"'
1352 CALL PRINT_ERROR( msgBuf, myThid )
1353 WRITE(msgBuf,'(2A)') 'SEAICE_READPARMS: ',
1354 & ' since "pkg/timeave" has been removed.'
1355 CALL PRINT_ERROR( msgBuf, myThid )
1356 nRetired = nRetired + 1
1357 ENDIF
1358 IF ( SEAICE_tave_mnc ) THEN
1359 WRITE(msgBuf,'(2A)') 'SEAICE_READPARMS: "SEAICE_tave_mnc"',
1360 & ' is no longer allowed in file "data.seaice"'
1361 CALL PRINT_ERROR( msgBuf, myThid )
1362 WRITE(msgBuf,'(2A)') 'SEAICE_READPARMS: ',
1363 & ' since "pkg/timeave" has been removed.'
1364 CALL PRINT_ERROR( msgBuf, myThid )
1365 nRetired = nRetired + 1
1366 ENDIF
1367
1c278edd09 Jean*1368 IF ( nRetired .GT. 0 ) THEN
1369 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ',
1370 & 'Error reading parameter file "data.seaice"'
1371 CALL PRINT_ERROR( msgBuf, myThid )
dc26f158aa Mart*1372 WRITE(msgBuf,'(A,I3,A)') 'S/R SEAICE_READPARMS: ', nRetired,
1373 & ' out of date parameters were found in the namelist'
1c278edd09 Jean*1374 CALL PRINT_ERROR( msgBuf, myThid )
dc26f158aa Mart*1375 ENDIF
1376
1377 IF ( nError .GT. 0 ) THEN
1378 WRITE(msgBuf,'(2A)') 'S/R SEAICE_READPARMS: ',
1379 & 'Error reading parameter file "data.seaice"'
1380 CALL PRINT_ERROR( msgBuf, myThid )
1381 WRITE(msgBuf,'(A,I3,A)') 'S/R SEAICE_READPARMS: ', nError,
1382 & ' parameters values are inconsistent or incomplete'
1383 CALL PRINT_ERROR( msgBuf, myThid )
1384 ENDIF
1385
1386 IF ( nRetired .GT. 0 .OR. nError .GT. 0 ) THEN
1387 CALL ALL_PROC_DIE( 0 )
1c278edd09 Jean*1388 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
1389 ENDIF
1390
1391
1392
1393
1394
1395 facOpenGrow = 0. _d 0
1396 facOpenMelt = 0. _d 0
1397 IF (SEAICE_doOpenWaterGrowth) facOpenGrow = 1. _d 0
1398 IF (SEAICE_doOpenWaterMelt) facOpenMelt = 1. _d 0
fff6be1885 Mart*1399
07abca99f1 Jean*1400
1401 SEAICE_dump_mdsio = .TRUE.
1402 SEAICE_mon_stdio = .TRUE.
1403 #ifdef ALLOW_MNC
1404 IF (useMNC) THEN
1405 IF ( .NOT.outputTypesInclusive
1406 & .AND. SEAICE_dump_mnc ) SEAICE_dump_mdsio = .FALSE.
1407 IF ( .NOT.outputTypesInclusive
1408 & .AND. SEAICE_mon_mnc ) SEAICE_mon_stdio = .FALSE.
1409 ENDIF
1410 #endif
1411
8450210070 Jean*1412
1413 #ifdef ALLOW_AUTODIFF
1414 SEAICEuseFREEDRIFTinFwdMode = SEAICEuseFREEDRIFT
1415 SEAICEuseDYNAMICSinFwdMode = SEAICEuseDYNAMICS
1416 #endif /* ALLOW_AUTODIFF */
1417
1c278edd09 Jean*1418
1419 IF ( SEAICE_emissivity .LT. 1. _d -04 ) THEN
1420 WRITE(msgBuf,'(2A)')
1421 & 'SEAICE_emissivity is no longer emissivity*(boltzmann ',
1422 & 'constant) but really an emissivity.'
1423 CALL PRINT_ERROR( msgBuf , myThid)
1424 WRITE(msgBuf,'(2A)')
1425 & 'Typical values are near 1 ',
1426 & '(default is 5.5/5.67=0.9700176...).'
1427 CALL PRINT_ERROR( msgBuf , myThid)
1428 WRITE(msgBuf,'(A,E13.6,A)')
1429 & 'Please change SEAICE_emissivity in data.seaice to ',
1430 & SEAICE_emissivity, '/5.67e-8.'
1431 CALL PRINT_ERROR( msgBuf , myThid)
fff6be1885 Mart*1432 STOP 'ABNORMAL END: S/R SEAICE_READPARMS'
1433 ENDIF
1434
b8665dacca Mart*1435
1436
1437 chkFlag = .FALSE.
1438 IF ( SEAICE_waterDrag .GT. 1. _d 0 ) THEN
1439 WRITE(msgBuf,'(A,A,F5.2)') '** WARNING ** SEAICE_READPARMS: ',
1440 & 'SEAICE_waterDrag = ', SEAICE_waterDrag
1441 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1442 & SQUEEZE_RIGHT, myThid )
1443 chkFlag = .TRUE.
1444 ENDIF
1445 IF ( SEAICE_waterDrag_South .GT. 1. _d 0 ) THEN
1446 WRITE(msgBuf,'(A,A,F5.2)') '** WARNING ** SEAICE_READPARMS: ',
1447 & 'SEAICE_waterDrag_South = ', SEAICE_waterDrag_South
1448 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1449 & SQUEEZE_RIGHT, myThid )
1450 chkFlag = .TRUE.
1451 ENDIF
1452 IF ( chkFlag ) THEN
1453 WRITE(msgBuf,'(3A)') '** WARNING ** SEAICE_READPARMS: ',
1454 & 'That is 3 orders of magnitude larger',
1455 & ' than the default of 5.5e-3.'
1456 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1457 & SQUEEZE_RIGHT, myThid )
1458 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1459 & 'Are you maybe using an old (pre Jun2018) data.seaice?'
1460 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1461 & SQUEEZE_RIGHT, myThid )
1462 ENDIF
1463
5bb179ddc2 Mart*1464 #ifdef SEAICE_ALLOW_SIDEDRAG
1465 IF ( SEAICEsideDrag .NE. 0.0 _d 0 .AND. SEAICE_no_slip ) THEN
1466 WRITE(msgBuf,'(3A)') '** WARNING ** SEAICE_READPARMS: ',
1467 & 'SEAICEsideDrag .NE. 0.,',
1468 & ' resetting SEAICE_no_slip = .FALSE.'
1469 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1470 & SQUEEZE_RIGHT, myThid )
1471 SEAICE_no_slip = .FALSE.
1472 ENDIF
1473 #endif
1474
cf95ef8a16 Jean*1475 IF ( DIFF1 .EQ. UNSET_RL ) THEN
1476 DIFF1 = 0. _d 0
1477 chkFlag = .FALSE.
1478 IF ( SEAICEadvScheme.EQ.2 ) THEN
1479
1480
1481 IF ( SEAICEadvHeff .AND. SEAICEdiffKhHeff .EQ. 0. _d 0 ) THEN
1482 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1483 & 'will use AdvScheme = 2 for HEFF without any diffusion'
1484 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1485 & SQUEEZE_RIGHT, myThid )
1486 chkFlag = .TRUE.
1487 ENDIF
1488 IF ( SEAICEadvArea .AND. SEAICEdiffKhArea .EQ. 0. _d 0 ) THEN
1489 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1490 & 'will use AdvScheme = 2 for AREA without any diffusion'
1491 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1492 & SQUEEZE_RIGHT, myThid )
1493 chkFlag = .TRUE.
1494 ENDIF
1495 IF ( SEAICEadvSnow .AND. SEAICEdiffKhSnow .EQ. 0. _d 0 ) THEN
1496 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1497 & 'will use AdvScheme = 2 for HSNOW without any diffusion'
1498 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1499 & SQUEEZE_RIGHT, myThid )
1500 chkFlag = .TRUE.
1501 ENDIF
1502 IF ( SEAICEadvSalt .AND. SEAICEdiffKhSalt .EQ. 0. _d 0 ) THEN
1503 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1504 & 'will use AdvScheme = 2 for HSALT without any diffusion'
1505 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1506 & SQUEEZE_RIGHT, myThid )
1507 chkFlag = .TRUE.
1508 ENDIF
1509 IF ( chkFlag ) THEN
1510 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_READPARMS: ',
1511 & 'since DIFF1 is set to 0 (= new DIFF1 default value)'
1512 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1513 & SQUEEZE_RIGHT, myThid )
1514 ENDIF
1515 ENDIF
1516 ENDIF
1517
9b8b001637 Jean*1518 _END_MASTER(myThid)
1519
1520
1521 _BARRIER
1522
07abca99f1 Jean*1523 RETURN
1524 END