Back to home page

MITgcm

 
 

    


File indexing completed on 2024-10-18 05:11:26 UTC

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