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