Back to home page

darwin3

 
 

    


File indexing completed on 2025-12-21 17:50:59 UTC

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