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