Back to home page

MITgcm

 
 

    


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 CBOP
                0007 C     !ROUTINE: SEAICE_READPARMS
                0008 C     !INTERFACE:
809c36b928 Patr*0009       SUBROUTINE SEAICE_READPARMS( myThid )
cf95ef8a16 Jean*0010 
3db1737c0d Jean*0011 C     !DESCRIPTION: \bv
                0012 C     *==========================================================*
                0013 C     | S/R SEAICE_READPARMS
                0014 C     | o Routine to read in file data.seaice
                0015 C     *==========================================================*
                0016 C     \ev
                0017 
                0018 C     !USES:
809c36b928 Patr*0019       IMPLICIT NONE
                0020 
                0021 C     === Global variables ===
                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 C     !INPUT/OUTPUT PARAMETERS:
809c36b928 Patr*0046 C     === Routine arguments ===
3db1737c0d Jean*0047 C     myThid     :: my Thread Id. number
809c36b928 Patr*0048       INTEGER myThid
3db1737c0d Jean*0049 CEOP
809c36b928 Patr*0050 
3db1737c0d Jean*0051 C     !LOCAL VARIABLES:
809c36b928 Patr*0052 C     === Local variables ===
3db1737c0d Jean*0053 C     msgBuf     :: Informational/error message buffer
                0054 C     iUnit      :: Work variable for IO unit number
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 C-    Old parameters (to be retired one day):
                0069       _RL SEAICE_availHeatTaper
                0070       _RL SEAICE_gamma_t, SEAICE_gamma_t_frz, SEAICE_availHeatFracFrz
809c36b928 Patr*0071 
1c278edd09 Jean*0072 C-    Retired parameters:
b58e51ce4e Jean*0073 C     MAX_TICE          :: maximum ice temperature   (deg C)
                0074 C     LAD               :: time stepping used for sea-ice advection:
                0075 C                          1 = LEAPFROG,  2 = BACKWARD EULER.
1c278edd09 Jean*0076 C     SEAICE_freeze     :: FREEZING TEMP. OF SEA WATER
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 C     former ALLOW_SEAICE_COST_SMR_AREA related flags
                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 C--   SEAICE parameters
                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 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
ccaa3c61f4 Patr*0223 
ae4c29e0db Jean*0224       IF ( .NOT.useSEAICE ) THEN
                0225 C-    pkg SEAICE is not used
                0226         _BEGIN_MASTER(myThid)
                0227 C-    Track pkg activation status:
                0228 C     print a (weak) warning if data.seaice is found
                0229          CALL PACKAGES_UNUSED_MSG( 'useSEAICE', ' ', ' ' )
                0230         _END_MASTER(myThid)
                0231         RETURN
                0232       ENDIF
                0233 
809c36b928 Patr*0234       _BEGIN_MASTER(myThid)
                0235 
                0236 C--   set default sea ice parameters
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 C     start of ridging parameters
5fd900657f Mart*0266       useHibler79IceStrength= .TRUE.
                0267       SEAICEsimpleRidging   = .TRUE.
ac7cc420cb Mart*0268 C     The range of this proportionality constant is 2 to 17
5fd900657f Mart*0269       SEAICE_cf             = 17. _d 0
ac7cc420cb Mart*0270 C     By default use partition function of Thorndyke et al. (1975) ...
5fd900657f Mart*0271       SEAICEpartFunc        = 0
ac7cc420cb Mart*0272 C     and redistribution function of Hibler (1980)
5fd900657f Mart*0273       SEAICEredistFunc      = 0
                0274       SEAICEridgingIterMax  = 10
ac7cc420cb Mart*0275 C     This parameter is not well constraint (Lipscomb et al. 2007)
5fd900657f Mart*0276       SEAICEshearParm       = 0.5 _d 0
ac7cc420cb Mart*0277 C     Thorndyke et al. (1975)
5fd900657f Mart*0278       SEAICEgStar           = 0.15 _d 0
ac7cc420cb Mart*0279 C     suggested by Hibler (1980), Flato and Hibler (1995)
                0280 C     SEAICEhStar           = 100. _d 0
210ee8461e jm-c 0281 C     but this value of 25 seems to give thinner ridges in better agreement
ac7cc420cb Mart*0282 C     with observations (according to Lipscomb et al 2007)
                0283       SEAICEhStar           =  25. _d 0
                0284 C     according to Lipscomb et al. (2007) these values for aStar and mu
                0285 C     are approximately equivalent to gStar=0.15 (aStar = gStar/3) for
                0286 C     SEAICEpartFunc = 1 ...
5fd900657f Mart*0287       SEAICEaStar           = 0.05 _d 0
ac7cc420cb Mart*0288 C     ... and hStar=25 for SEAICEredistFunc = 1
210ee8461e jm-c 0289 C     Libscomb et al. (2007): mu =  3,  4,  5,   6
ac7cc420cb Mart*0290 C     correspond to        hStar = 25, 50, 75, 100
                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 C     end ridging parampeters
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 C--   old DIFF1 default:
                0330 c     DIFF1      = .004 _d 0
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 C     JFNK stuff
                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 C     This should be the default for both JFNK and for LSR but in order
5a3ac3356d Mart*0345 C     to not jeopardize any existing results, and because it does not yet
                0346 C     work for llc/cubed-sphere topologies, we require that the user knows
a68248c150 Mart*0347 C     what he/she is doing when turning this on.
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 C     factor for inexact Newton forcing, .gt. 0 and .le. 1
                0357       SEAICE_JFNKphi      = 1. _d 0
ae4c29e0db Jean*0358 C     exponent for inexact Newton forcing .gt. 1 and .le. 2
1f3ad2d627 Mart*0359       SEAICE_JFNKalpha    = 1. _d 0
bb06934ea0 Mart*0360 C     Hunke, JCP, 2001 use 615 kg/m^2 for this, but does not recommend using it
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 C     Coefficients used to calculate sea ice thickness category limits
                0378 C     after Lipscomb et al. (2001, JGR), Equ. 22
8450210070 Jean*0379 C     choose between
86b84a92fc Patr*0380 C      - original parameters of Lipscomb et al. (2001):
                0381 C        c1=3.0/N, c2=15*c1, c3=3.0
                0382 C      - and a higher resolution of thin end of ITD:
                0383 C        c1=1.5/N, c2=42*c1, c3=3.3
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 C     basal drag parameters following Lemieux et al. (2015)
                0411       SEAICE_cBasalStar = UNSET_RL
                0412       SEAICEbasalDragU0 =  5. _d -05
                0413       SEAICEbasalDragK1 =  8. _d 0
                0414       SEAICEbasalDragK2 =  0. _d 0
                0415 C     Lemieux et al. (2015) recommend: SEAICEbasalDragK2 = 15. _d 0
210ee8461e jm-c 0416 C
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 C     coefficients for flux computations/bulk formulae
                0433       SEAICE_dalton      = 1.75   _d -03
                0434 #ifdef ALLOW_EXF
b2a42ee513 Mart*0435       IF ( useEXF ) THEN
fff6be1885 Mart*0436 C     Use parameters that have already been set in data.exf
                0437 C     to be consistent
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 C     old default value of 0.97001763668430343479
                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 C in case defined(SEAICE_ITD) MULTDIM = nITD (see SEAICE_SIZE.h)
cf15f45de5 Torg*0468 c      SEAICE_multDim     = MULTDIM
ae4c29e0db Jean*0469 C the switch MULTICATEGORY (and with it parameter MULTDIM) has been retired
cf15f45de5 Torg*0470 C  and SEAICE_multDim is now a runtime parameter;
                0471 C  in case SEAICE_multDim is given in data.seaice it needs to be overwritten
                0472 C  after PARM01 was read (see below)
                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 C     default to be set later (ocean-seaice turbulent flux coeff):
                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 C     old default for constant freezing point
                0502 c     SEAICE_tempFrz0    = -1.96 _d 0
                0503 c     SEAICE_dTempFrz_dS = 0. _d 0
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 C     LSR parameters
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 C-    Retired parameters:
                0563 c     LAD        = 2
                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 c     SEAICE_sensHeat    = 1.75 _d -03 * 1004 * 1.3
                0571 c     SEAICE_sensHeat    = 2.284  _d +00
fff6be1885 Mart*0572       SEAICE_sensHeat    = UNSET_RL
b58e51ce4e Jean*0573 c     SEAICE_latentWater = 1.75 _d -03 * 2.500 _d 06 * 1.3
                0574 c     SEAICE_latentWater = 5.6875 _d +03
fff6be1885 Mart*0575       SEAICE_latentWater = UNSET_RL
b58e51ce4e Jean*0576 c     SEAICE_latentIce   = 1.75 _d -03 * 2.834 _d 06 * 1.3
                0577 c     SEAICE_latentIce   = 6.4474 _d +03
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 c     MAX_TICE           = 30.     _d 0
                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 C-    end retired parameters
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 C     retired cost related parameters
                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 C     Open and read the data.seaice file
                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 C--   Read settings from model parameter file "data.seaice".
                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 C SEAICE_multDim has become a runtime parameter but if SEAICE_ITD is defined
                0687 C  it needs to equal nITD because of shared code (mostly in seaice_growth.F).
                0688 C nITD is set in SEAICE_SIZE.h
                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 C--   Set default values (if not specified in data.seaice namelist)
4b6d456764 Mart*0698 
3daf25222c Mart*0699 C--   Default for regularizing Delta to remain backward compatible
                0700       IF ( SEAICE_deltaMin .EQ. UNSET_RL ) SEAICE_deltaMin = SEAICE_EPS
c512e371cc drin*0701 C--   Default is to have a normal flow rule if SEAICE_eccfr is not set
                0702       IF (SEAICE_eccfr .EQ. UNSET_RL ) SEAICE_eccfr = SEAICE_eccen
3daf25222c Mart*0703 
4b6d456764 Mart*0704 C--   If no PDF was prescribed use the default uniform pdf
                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 C     Basal drag parameter
                0729       IF (SEAICE_cBasalStar .EQ. UNSET_RL)
                0730      &     SEAICE_cBasalStar = SEAICE_cStar
7b415cab4e Dimi*0731 
f0385691ef Ed H*0732 C     Check that requested time step size is supported.  The combination
                0733 C     below is the only one that is supported at this time.  Does not
                0734 C     mean that something fancier will not work, just that it has not
                0735 C     yet been tried nor thought through.
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 C     There are three ways to turn on EVP
624c4d1fbb Mart*0751 C     1. original EVP (Hunke, 2001)
dc26f158aa Mart*0752       IF ( SEAICE_deltaTevp .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
210ee8461e jm-c 0753 C     2. modified EVP (Lemieux et al., 2012) or revised EVP (Bouillon
624c4d1fbb Mart*0754 C     et al., 2014) by setting alpha and beta
3b3669606e Mart*0755       IF ( SEAICE_evpAlpha  .NE. UNSET_RL
dc26f158aa Mart*0756      &  .OR. SEAICE_evpBeta .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
624c4d1fbb Mart*0757 C     3. adaptive EVP
dc26f158aa Mart*0758       IF ( SEAICEaEVPcoeff  .NE. UNSET_RL ) SEAICEuseEVP = .TRUE.
3b3669606e Mart*0759 C     if EVP is turned on, a couple of parameters need to be computed
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 C     determine number of internal steps
                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 C     default: evpAlpha = evpBeta
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 C     derive other parameters
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 C     this turns on adaptive EVP
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 C     requires EVP* to work well, so make sure we set it here (commented out
dc26f158aa Mart*0809 C     for now, but these values are the default values now)
624c4d1fbb Mart*0810 CML        SEAICEuseEVPstar   = .TRUE.
                0811 CML        SEAICEuseEVPrev    = .TRUE.
dc26f158aa Mart*0812 C     For adaptive EVP we do not need constant parameters alpha and
                0813 C     beta, because they are computed dynamically. Reset them to
                0814 C     undefined here, so that we know if something funny is going on.
                0815         SEAICE_evpAlpha     = UNSET_RL
                0816         SEAICE_evpBeta      = UNSET_RL
3b3669606e Mart*0817        ENDIF
2bf4ed5c39 Mart*0818 C     Check if all parameters are set.
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 C     reset default SEAICEuseLSR according to parameters from namelist
                0850       SEAICEuseLSR = .NOT.SEAICEuseFREEDRIFT .AND. .NOT.SEAICEuseEVP
1ac05d2425 Mart*0851      &     .AND. .NOT.SEAICEuseJFNK .AND. .NOT. SEAICEuseKrylov
c8739d4898 Mart*0852 C     allow SEAICEuseLSR = .TRUE. if used as a preconditioner for non-linear
1ac05d2425 Mart*0853 C     JFNK problem (and Krylov solver is not used)
                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 C     Set different defaults for different solvers
                0860       IF ( SEAICEnonLinIterMax .EQ. UNSET_I ) THEN
                0861 C     two nonlinear iterations correspond to the original modified
                0862 C     Euler time stepping scheme of Zhang+Hibler (1997)
                0863        IF ( SEAICEuseLSR ) SEAICEnonLinIterMax = 2
                0864        IF ( SEAICEuseJFNK.OR.SEAICEuseKrylov ) SEAICEnonLinIterMax = 10
                0865       ENDIF
                0866 C     Make sure that we have least two pseudo time steps for Picard-LSR
                0867       IF ( SEAICEuseLSR .AND. .NOT. SEAICEusePicardAsPrecon )
                0868      &     SEAICEnonLinIterMax = MAX(SEAICEnonLinIterMax,2)
                0869 
143d9ce879 Dami*0870 C     If we do not use the LSR solver, using LSRflex makes no sense
                0871       IF ( .NOT. SEAICEuseLSR ) SEAICEuseLSRflex = .FALSE.
                0872 
fe1572f1db Mart*0873 C-    different defaults for different linear solvers
79df32c3f1 Mart*0874       IF ( SEAICElinearIterMax .EQ. UNSET_I ) THEN
210ee8461e jm-c 0875 C     maximum number of LSOR steps in default Picard solver
fe1572f1db Mart*0876 C     (=previous default for retired SOLV_MAX_ITERS)
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 C     the maximum number of Krylov dimensions of 50 is hard coded in
fe1572f1db Mart*0883 C     S/R SEAICE_FGMRES, so that more than 50 linear iterations will
                0884 C     restart GMRES
79df32c3f1 Mart*0885        IF ( SEAICEuseJFNK.OR.SEAICEuseKrylov ) SEAICElinearIterMax = 10
                0886       ENDIF
                0887 
                0888 C     Turn line search with JFNK solver off by default by making this
                0889 C     number much larger than the maximum allowed Newton iterations
                0890       IF ( SEAICE_JFNK_lsIter .EQ. UNSET_I )
                0891      &     SEAICE_JFNK_lsIter  = 2*SEAICEnewtonIterMax
1c278edd09 Jean*0892 
33088916b3 Mart*0893 C     2nd order boundary conditions only possible for no_slip,
                0894 C     and EVP, JFNK, and Krylov solvers
                0895       IF ( .NOT. SEAICE_no_slip ) SEAICE_2ndOrderBC = .FALSE.
                0896       IF ( SEAICEuseLSR ) SEAICE_2ndOrderBC = .FALSE.
                0897 
b8665dacca Mart*0898 C     2nd order boundary conditions require one more row of overlap for the additive Schwartz method
                0899       IF ( SEAICE_2ndOrderBC ) THEN
                0900        SEAICE_OLx = OLx-3
                0901        SEAICE_OLy = OLy-3
a68248c150 Mart*0902       ENDIF
                0903 
1c278edd09 Jean*0904 C-    The old ways of specifying mcPheeTaper, mcPheePiston & frazilFrac:
                0905 C     a) prevent multiple specification of the same coeff;
                0906 C     b) if specified, then try to recover old way of setting & default.
                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 C-    set SEAICE_frazilFrac if not yet done
                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 C     the default for SEAICE_gamma_t_frz use to be SEAICE_gamma_t:
                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 C     the default for SEAICE_availHeatFracFrz use to be SEAICE_availHeatFrac:
                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 C-    start by setting SEAICE_availHeatFrac (used in seaice_init_fixed.F
                0961 C     to set SEAICE_mcPheePiston once drF is known)
                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 C     If the thsice package with the Winton thermodynamics is used
                0987 C     is does not make sense to have the following parameters defined,
                0988 C     so we reset them here
                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 C     Set advection schemes to some sensible values if not done in data.seaice
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 C     Set diffusivity to some sensible values if not done in data.seaice
                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 C-    Retired parameters
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 C--   Now set-up any remaining parameters that result from other params
                1366 
                1367 C-    convert SEAICE_doOpenWaterGrowth/Melt logical switch to numerical
                1368 C     facOpenGrow/facOpenMelt
                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 C-    Set Output type flags :
                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 C-    store value of logical flag which might be changed in AD mode
                1390 #ifdef ALLOW_AUTODIFF
                1391       SEAICEuseFREEDRIFTinFwdMode = SEAICEuseFREEDRIFT
                1392       SEAICEuseDYNAMICSinFwdMode  = SEAICEuseDYNAMICS
                1393 #endif /* ALLOW_AUTODIFF */
                1394 
1c278edd09 Jean*1395 C     Check the consitency of a few parameters
                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 C--   Since the default of SEAICE_waterDrag has changed, issue a warning
                1413 C     in case of large values
                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 C--   Since DIFF1 default value has been changed (2011/05/29), issue a warning
                1446 C     in case using centered avection scheme without any diffusion:
                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 C--   Everyone else must wait for the parameters to be loaded
                1487       _BARRIER
                1488 
07abca99f1 Jean*1489       RETURN
                1490       END