File indexing completed on 2025-03-06 06:10:33 UTC
view on githubraw file Latest commit e922d59b on 2025-02-10 15:57:10 UTC
b9b591469d Jean*0001 #include "PACKAGES_CONFIG.h"
b9377e56be Alis*0002 #include "CPP_OPTIONS.h"
b9b591469d Jean*0003 #ifdef ALLOW_EXCH2
0004 # include "W2_OPTIONS.h"
0005 #endif /* ALLOW_EXCH2 */
924557e60a Chri*0006
a30418b6b9 Ed H*0007
9366854e02 Chri*0008
427e24e121 Jean*0009
0010
924557e60a Chri*0011 SUBROUTINE INI_PARMS( myThid )
0012
427e24e121 Jean*0013
809bdccbfc Jean*0014
0015
9366854e02 Chri*0016
0017 IMPLICIT NONE
924557e60a Chri*0018 #include "SIZE.h"
0019 #include "EEPARAMS.h"
0020 #include "PARAMS.h"
b9b591469d Jean*0021 #ifdef ALLOW_EXCH2
0022 # include "W2_EXCH2_SIZE.h"
0023 # include "W2_EXCH2_TOPOLOGY.h"
0024 #endif /* ALLOW_EXCH2 */
a37a13034c Mart*0025 #include "EOS.h"
97168926d1 Jean*0026
2ad79bdf32 Jean*0027 #include "GRID.h"
97168926d1 Jean*0028 #include "SET_GRID.h"
924557e60a Chri*0029
427e24e121 Jean*0030
0031
924557e60a Chri*0032 INTEGER myThid
0033
427e24e121 Jean*0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
910f05e765 Chri*0048 _RL dxSpacing
0049 _RL dySpacing
062a876ce5 Jean*0050 _RL deltaTtracer
924557e60a Chri*0051 CHARACTER*(MAX_LEN_MBUF) msgBuf
c2b6ed6bfd Jean*0052 LOGICAL forcing_In_AB
924557e60a Chri*0053 INTEGER goptCount
b9b591469d Jean*0054 INTEGER gridNx, gridNy
aa8f58c33d Jean*0055 INTEGER k, i, j, iUnit
90aed06079 Jean*0056 INTEGER errIO, errCount
427e24e121 Jean*0057
0058
910f05e765 Chri*0059 _RL viscArDefault
0060 _RL diffKrTDefault
0061 _RL diffKrSDefault
0062 _RL hFacMinDrDefault
0127add478 Alis*0063 _RL delRDefault(Nr)
427e24e121 Jean*0064
0065
e6e223b277 Jean*0066
427e24e121 Jean*0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
53f30fd0a1 Jean*0081
910f05e765 Chri*0082 LOGICAL zCoordInputData
0083 LOGICAL pCoordInputData
0084 LOGICAL rCoordInputData
0085 INTEGER coordsSet
7cd7754949 Jean*0086 INTEGER vertSetCount
13b4d13c98 Jean*0087 LOGICAL specifiedDiffKrT, specifiedDiffKrS
ede2cfe569 Chri*0088
427e24e121 Jean*0089
0090
0091
0092
0093
0094
0095
0096
0097
53f30fd0a1 Jean*0098 _RL delZ(Nr)
0099 _RL delP(Nr)
0100 _RL viscAz
0101 _RL viscAp
7cd7754949 Jean*0102 _RL viscAr
53f30fd0a1 Jean*0103 _RL diffKzT
0104 _RL diffKpT
8fc5af62b8 Jean*0105 _RL diffKrT
53f30fd0a1 Jean*0106 _RL diffKzS
0107 _RL diffKpS
8fc5af62b8 Jean*0108 _RL diffKrS
53f30fd0a1 Jean*0109
427e24e121 Jean*0110
0111
0112
0113
742cf4499c Jean*0114
427e24e121 Jean*0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
aecc8b0f47 Mart*0143
427e24e121 Jean*0144
0145
0146
0147
742cf4499c Jean*0148
427e24e121 Jean*0149
0150
0151
742cf4499c Jean*0152
427e24e121 Jean*0153
0154
0155
0156
0157
0158
8194bc4a99 Mart*0159
427e24e121 Jean*0160
0161
0162
0163
8194bc4a99 Mart*0164
9780090eaa Jean*0165 INTEGER nRetired
c07cd3bfa8 Jean*0166 LOGICAL useConstantF, useBetaPlaneF, useSphereF
427e24e121 Jean*0167 LOGICAL useJamartWetPoints, useEnergyConservingCoriolis
7e00d7e8f9 Jean*0168 LOGICAL SadournyCoriolis
427e24e121 Jean*0169 LOGICAL use3dCoriolis, metricTerms
7a4ec66481 Jean*0170 LOGICAL tempDiffusion, saltDiffusion
0171 INTEGER tracerAdvScheme
0172 _RL trac_EvPrRn
2ad79bdf32 Jean*0173 _RL zonal_filt_lat
0174
8f934af0f4 Jean*0175 _RL viscAstrain, viscAtension
6d61b52b09 Jean*0176 LOGICAL useAnisotropicViscAgridMax
0177 LOGICAL usePickupBeforeC35
83513ae28b Jean*0178 LOGICAL saveDebugMode
e793395f17 Jean*0179 LOGICAL allowInteriorFreezing, useOldFreezing
7e00d7e8f9 Jean*0180 LOGICAL balanceEmPmR
427e24e121 Jean*0181 INTEGER writeStatePrec
742cf4499c Jean*0182
aecc8b0f47 Mart*0183 INTEGER cg2dChkResFreq, cg3dChkResFreq
0184
46979d29da Jean*0185 _RL tauThetaClimRelax3Dim, tauSaltClimRelax3Dim
742cf4499c Jean*0186 LOGICAL calendarDumps
0187
0188 LOGICAL groundAtK1
2ad79bdf32 Jean*0189 _RL Ro_SeaLevel
742cf4499c Jean*0190 _RL rkFac
9780090eaa Jean*0191 _RL thetaMin, phiMin
7e00d7e8f9 Jean*0192
8194bc4a99 Mart*0193 CHARACTER*(MAX_LEN_FNAM) shelfIceFile
275ad78b78 Jean*0194 CHARACTER*(MAX_LEN_FNAM) dQdTfile
924557e60a Chri*0195
0196
0197 NAMELIST /PARM01/
fe4f35d666 Alis*0198 & gravitySign, nh_Am2,
7fbd8d8c1c Jean*0199 & gravity, gBaro, gravityFile, rhonil, tAlpha, sBeta,
c07cd3bfa8 Jean*0200 & selectCoriMap, f0, beta, fPrime, omega, rotationPeriod,
8f106aecfd Bayl*0201 & viscAh, viscAhW, viscAhMax,
0202 & viscAhGrid, viscAhGridMax, viscAhGridMin,
dc3adfb09b Jean*0203 & viscC2leith, viscC4leith, smag3D_coeff, useSmag3D,
6d61b52b09 Jean*0204 & useFullLeith, useAnisotropicViscAgridMax, useStrainTensionVisc,
f59d76b0dd Ed D*0205 & useAreaViscLength, viscC2leithD, viscC4leithD, viscC2LeithQG,
0206 & viscC2smag, viscC4smag, viscAhD, viscAhZ, viscA4D, viscA4Z,
0b6cbae535 Mart*0207 & viscA4, viscA4W,
0208 & viscA4Max, viscA4Grid, viscA4GridMax, viscA4GridMin,
1e9e8678dd Bayl*0209 & viscA4ReMax, viscAhReMax,
7cd7754949 Jean*0210 & cosPower, viscAstrain, viscAtension,
427e24e121 Jean*0211 & viscAz, diffKzT, diffKzS, viscAp, diffKpT, diffKpS,
0212 & viscAr, diffKrT, diffKrS, viscArNr, diffKrNrT, diffKrNrS,
2d5bb917cc Jean*0213 & diffKhT, diffK4T, diffKhS, diffK4S, smag3D_diffCoeff,
427e24e121 Jean*0214 & diffKr4T, diffKr4S, BL79LatVary,
0215 & diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
0216 & diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
9330bd8273 Jean*0217 & surf_pRef, tRef, sRef, tRefFile, sRefFile, rhoRefFile,
7fbd8d8c1c Jean*0218 & eosType, selectP_inEOS_Zc, integr_GeoPot, selectFindRoSurf,
aad87ebb4c Jean*0219 & HeatCapacity_Cp, celsius2K, atm_Cp, atm_Rd, atm_Rq, atm_Po,
59b35dd864 Jean*0220 & no_slip_sides, sideDragFactor, no_slip_bottom, bottomVisc_pCell,
ab47de63dc Mart*0221 & bottomDragLinear, bottomDragQuadratic, zRoughBot,
0222 & selectBotDragQuadr,
427e24e121 Jean*0223 & momPressureForcing, momForcing, momTidalForcing,
0224 & momViscosity, momAdvection, vectorInvariantMomentum,
0225 & useConstantF, useBetaPlaneF, useSphereF, useCoriolis,
0226 & use3dCoriolis, select3dCoriScheme, selectCoriScheme,
0227 & useCDscheme, useJamartWetPoints, useEnergyConservingCoriolis,
0228 & useAbsVorticity, selectVortScheme, SadournyCoriolis,
0229 & useJamartMomAdv, upwindVorticity, highOrderVorticity,
0230 & upwindShear, selectKEscheme,
0231 & selectMetricTerms, metricTerms, useNHMTerms, addFrictionHeating,
46918f1b26 Jean*0232 & tempDiffusion, tempAdvection, tempForcing, temp_stayPositive,
0233 & saltDiffusion, saltAdvection, saltForcing, salt_stayPositive,
9e44938df7 Jean*0234 & implicSurfPress, implicDiv2DFlow, implicitNHPress,
7cd7754949 Jean*0235 & implicitFreeSurface, rigidLid, freeSurfFac,
0236 & hFacMin, hFacMinDz, hFacMinDp, hFacMinDr,
1e6181f584 Davi*0237 & exactConserv, linFSConserveTr, uniformLin_PhiSurf,
0238 & nonlinFreeSurf, hFacInf, hFacSup, select_rStar,
3fcd8a21e5 Jean*0239 & nonHydrostatic, selectNHfreeSurf, quasiHydrostatic,
627a21a418 Jean*0240 & implicitIntGravWave, staggerTimeStep, doResetHFactors,
8a28092f34 Patr*0241 & tempStepping, saltStepping, momStepping,
9e44938df7 Jean*0242 & implicitDiffusion, implicitViscosity, selectImplicitDrag,
b9d351b225 Jean*0243 & tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
aad87ebb4c Jean*0244 & rhoConst, thetaConst, rhoConstFresh, buoyancyRelation,
7c642b2a2b Dimi*0245 & allowFreezing, allowInteriorFreezing, useOldFreezing, ivdc_kappa,
d1b0368d70 Davi*0246 & hMixCriteria, dRhoSmall, hMixSmooth,
427e24e121 Jean*0247 & tempAdvScheme, tempVertAdvScheme, tracerAdvScheme,
0248 & saltAdvScheme, saltVertAdvScheme, multiDimAdvection,
d18df35fee Jean*0249 & selectAddFluid, useRealFreshWaterFlux, convertFW2Salt,
745a0098ab Jean*0250 & temp_EvPrRn, salt_EvPrRn, trac_EvPrRn,
80d98e0151 Dimi*0251 & temp_addMass, salt_addMass, zonal_filt_lat,
0320e25227 Mart*0252 & smoothAbsFuncRange, sIceLoadFac,
7e00d7e8f9 Jean*0253 & selectBalanceEmPmR, balanceEmPmR, balanceQnet, balancePrintMean,
427e24e121 Jean*0254 & balanceThetaClimRelax, balanceSaltClimRelax,
0255 & readBinaryPrec, writeBinaryPrec, writeStatePrec, globalFiles,
0256 & useSingleCpuIO, useSingleCpuInput, usePickupBeforeC54,
0257 & usePickupBeforeC35, debugMode, debugLevel, plotLevel
924557e60a Chri*0258
0259
0260 NAMELIST /PARM02/
aecc8b0f47 Mart*0261 & cg2dMaxIters, cg2dMinItersNSA, cg2dChkResFreq, cg2dUseMinResSol,
b46f9da188 Jean*0262 & cg2dTargetResidual, cg2dTargetResWunit,
0263 & cg2dpcOffDFac, cg2dPreCondFreq,
e922d59b96 Jean*0264 & cg3dMaxIters, cg3dChkResFreq,
e6e223b277 Jean*0265 & cg3dTargetResidual, cg3dTargetResWunit,
aecc8b0f47 Mart*0266 & useNSACGSolver, useSRCGSolver, printResidualFreq
924557e60a Chri*0267
0268
0269 NAMELIST /PARM03/
6e6f314aa7 Patr*0270 & nIter0, nTimeSteps, nTimeSteps_l2, nEndIter,
f804abbd25 Jean*0271 & baseTime, startTime, endTime,
db8d49beca Jean*0272 & deltaT, deltaTClock, deltaTMom,
0273 & deltaTtracer, dTtracerLev, deltaTFreeSurf,
b9306711eb Jean*0274 & forcing_In_AB, momForcingOutAB, tracForcingOutAB,
c2b6ed6bfd Jean*0275 & momDissip_In_AB, doAB_onGtGs,
2a618ca8c5 Jean*0276 & abEps, alph_AB, beta_AB, startFromPickupAB2, applyExchUV_early,
8039e9b985 Jean*0277 & tauCD, rCD, epsAB_CD, cAdjFreq,
f804abbd25 Jean*0278 & chkPtFreq, pChkPtFreq, pickupSuff, pickupStrictlyMatch,
8c73a5b228 Mart*0279 & writePickupAtEnd,
82d0948361 Jean*0280 & dumpFreq, dumpInitAndLast, adjDumpFreq, taveFreq, tave_lastIter,
f804abbd25 Jean*0281 & diagFreq, monitorFreq, adjMonitorFreq, monitorSelect,
2e3729af6b Jean*0282 & outputTypesInclusive, rwSuffixType,
b9306711eb Jean*0283 & tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
a31e157718 Jean*0284 & tauThetaClimRelax3Dim, tauSaltClimRelax3Dim,
fc64655a31 Dimi*0285 & periodicExternalForcing, externForcingPeriod, externForcingCycle,
82d0948361 Jean*0286 & calendarDumps
924557e60a Chri*0287
0288
0289 NAMELIST /PARM04/
b9306711eb Jean*0290 & usingCartesianGrid, usingCylindricalGrid,
9780090eaa Jean*0291 & usingSphericalPolarGrid, usingCurvilinearGrid,
0292 & xgOrigin, ygOrigin, dxSpacing, dySpacing,
0293 & delX, delY, delXFile, delYFile, horizGridFile,
0294 & phiEuler, thetaEuler, psiEuler,
2ad79bdf32 Jean*0295 & rSphere, radius_fromHorizGrid, deepAtmosphere, seaLev_Z,
0296 & top_Pres, delZ, delP, delR, delRc, delRFile, delRcFile,
bb2fd3f1ad Jean*0297 & useMin4hFacEdges, interViscAr_pCell, interDiffKr_pCell,
0298 & pCellMix_select, pCellMix_maxFac, pCellMix_delR,
0299 & pCellMix_viscAr, pCellMix_diffKr,
0300 & selectSigmaCoord, rSigmaBnd, hybSigmFile,
2ad79bdf32 Jean*0301 & Ro_SeaLevel, rkFac, groundAtK1, thetaMin, phiMin
924557e60a Chri*0302
81bc00c2f0 Chri*0303
0304 NAMELIST /PARM05/
26565fca80 Jean*0305 & bathyFile, topoFile, addWwallFile, addSwallFile, shelfIceFile,
0306 & diffKrFile, viscAhDfile, viscAhZfile, viscA4Dfile, viscA4Zfile,
4c5bb1c88e Jean*0307 & hydrogThetaFile, hydrogSaltFile,
0308 & maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
88830be691 Alis*0309 & zonalWindFile, meridWindFile,
0310 & thetaClimFile, saltClimFile,
1e273d1bf5 Jean*0311 & surfQfile, surfQnetFile, surfQswFile, EmPmRfile, saltFluxFile,
2dcaa8b9a5 Patr*0312 & uVelInitFile, vVelInitFile, pSurfInitFile,
0320e25227 Mart*0313 & dQdTFile, ploadFile, geoPotAnomFile, addMassFile,
0314 & tCylIn, tCylOut,
90929f8806 Patr*0315 & eddyPsiXFile, eddyPsiYFile, geothermalFile,
7e00d7e8f9 Jean*0316 & lambdaThetaFile, lambdaSaltFile, wghtBalanceFile,
cbc417d429 Mart*0317 & mdsioLocalDir, adTapeDir,
9a263a84a8 Ed H*0318 & the_run_name
a30418b6b9 Ed H*0319
81bc00c2f0 Chri*0320
b9b591469d Jean*0321 #ifdef ALLOW_EXCH2
0322 gridNx = exch2_mydNx(1)
0323 gridNy = exch2_mydNy(1)
0324 #else /* ALLOW_EXCH2 */
0325 gridNx = Nx
0326 gridNy = Ny
0327 #endif /* ALLOW_EXCH2 */
0328
924557e60a Chri*0329 _BEGIN_MASTER(myThid)
0330
0127add478 Alis*0331
0332 CALL SET_DEFAULTS(
0333 O viscArDefault, diffKrTDefault, diffKrSDefault,
f15994caab Jean*0334 O hFacMinDrDefault, delRDefault,
0127add478 Alis*0335 I myThid )
7843dde2de jm-c 0336
427e24e121 Jean*0337 useJamartWetPoints = .FALSE.
7843dde2de jm-c 0338 useEnergyConservingCoriolis = .FALSE.
e35a804907 Jean*0339 SadournyCoriolis = .FALSE.
427e24e121 Jean*0340 use3dCoriolis = .TRUE.
0341 metricTerms = .TRUE.
7e00d7e8f9 Jean*0342 balanceEmPmR = .FALSE.
0127add478 Alis*0343
910f05e765 Chri*0344
0345 zCoordInputData = .FALSE.
0346 pCoordInputData = .FALSE.
0347 rCoordInputData = .FALSE.
0348 coordsSet = 0
0349
8fc5af62b8 Jean*0350
ede2cfe569 Chri*0351 nRetired = 0
c07cd3bfa8 Jean*0352 useConstantF = .FALSE.
0353 useBetaPlaneF = .FALSE.
0354 useSphereF = .TRUE.
7a4ec66481 Jean*0355 tempDiffusion = .TRUE.
0356 saltDiffusion = .TRUE.
0357 tracerAdvScheme = UNSET_I
0358 trac_EvPrRn = UNSET_RL
ede2cfe569 Chri*0359 zonal_filt_lat = UNSET_RL
36b12bb7ff Jean*0360 gravitySign = UNSET_RL
8f934af0f4 Jean*0361 viscAstrain = UNSET_RL
0362 viscAtension = UNSET_RL
742cf4499c Jean*0363 useAnisotropicViscAgridMax=.TRUE.
6d61b52b09 Jean*0364 usePickupBeforeC35 = .FALSE.
83513ae28b Jean*0365 saveDebugMode = debugMode
e0b3e1bdd8 Dimi*0366 allowInteriorFreezing = .FALSE.
e793395f17 Jean*0367 useOldFreezing = .FALSE.
427e24e121 Jean*0368 writeStatePrec = UNSET_I
7e00d7e8f9 Jean*0369 cg2dChkResFreq = UNSET_I
aecc8b0f47 Mart*0370 cg3dChkResFreq = UNSET_I
46979d29da Jean*0371 tauThetaClimRelax3Dim = UNSET_RL
0372 tauSaltClimRelax3Dim = UNSET_RL
742cf4499c Jean*0373 calendarDumps = .FALSE.
2ad79bdf32 Jean*0374 Ro_SeaLevel = UNSET_RL
742cf4499c Jean*0375 rkFac = UNSET_RL
0376 groundAtK1 = .FALSE.
9780090eaa Jean*0377 thetaMin = UNSET_RL
0378 phiMin = UNSET_RL
8194bc4a99 Mart*0379 shelfIceFile = ' '
275ad78b78 Jean*0380 dQdTFile = ' '
ede2cfe569 Chri*0381
924557e60a Chri*0382
b9306711eb Jean*0383 WRITE(msgBuf,'(A)')
aa8f58c33d Jean*0384 & ' INI_PARMS: opening model parameter file "data"'
924557e60a Chri*0385 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0386 & SQUEEZE_RIGHT, myThid )
924557e60a Chri*0387
aa8f58c33d Jean*0388 CALL OPEN_COPY_DATA_FILE( 'data', 'INI_PARMS',
0389 O iUnit, myThid )
924557e60a Chri*0390
aa8f58c33d Jean*0391
0392 errIO = 0
90aed06079 Jean*0393 errCount = 0
924557e60a Chri*0394
0395
6deb815953 Mart*0396 viscAhW = UNSET_RL
0b6cbae535 Mart*0397 viscA4W = UNSET_RL
915a82d1f5 Jean*0398 viscAhD = UNSET_RL
0399 viscAhZ = UNSET_RL
0400 viscA4D = UNSET_RL
0401 viscA4Z = UNSET_RL
809bdccbfc Jean*0402 viscAz = UNSET_RL
910f05e765 Chri*0403 viscAp = UNSET_RL
7cd7754949 Jean*0404 viscAr = UNSET_RL
910f05e765 Chri*0405 diffKzT = UNSET_RL
0406 diffKpT = UNSET_RL
0407 diffKrT = UNSET_RL
0408 diffKzS = UNSET_RL
0409 diffKpS = UNSET_RL
0410 diffKrS = UNSET_RL
aad87ebb4c Jean*0411 hFacMinDr = UNSET_RL
0412 hFacMinDz = UNSET_RL
0413 hFacMinDp = UNSET_RL
0414 tAlpha = UNSET_RL
0415 sBeta = UNSET_RL
0416 implicitNHPress = UNSET_RL
49efc6c1e0 Jean*0417 tempVertAdvScheme = 0
0418 saltVertAdvScheme = 0
337b46d524 Jean*0419 plotLevel = UNSET_I
49efc6c1e0 Jean*0420
aa8f58c33d Jean*0421 WRITE(msgBuf,'(A)') ' INI_PARMS ; starts to read PARM01'
6b6f69d6b0 Jean*0422 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0423 & SQUEEZE_RIGHT, myThid )
88830be691 Alis*0424 READ(UNIT=iUnit,NML=PARM01)
c206b07c1d Chri*0425 IF ( errIO .LT. 0 ) THEN
924557e60a Chri*0426 WRITE(msgBuf,'(A)')
aa8f58c33d Jean*0427 & 'S/R INI_PARMS: Error reading model parameter file "data"'
b9306711eb Jean*0428 CALL PRINT_ERROR( msgBuf, myThid )
aa8f58c33d Jean*0429 WRITE(msgBuf,'(A)') 'S/R INI_PARMS: Problem in namelist PARM01'
b9306711eb Jean*0430 CALL PRINT_ERROR( msgBuf, myThid )
924557e60a Chri*0431 STOP 'ABNORMAL END: S/R INI_PARMS'
41f1ac6de1 Jean*0432 ELSE
aa8f58c33d Jean*0433 WRITE(msgBuf,'(A)') ' INI_PARMS ; read PARM01 : OK'
41f1ac6de1 Jean*0434 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0435 & SQUEEZE_RIGHT, myThid )
c206b07c1d Chri*0436 ENDIF
463053c692 Jean*0437
599be48d9a Jean*0438
e99e7fe4e6 Jean*0439
0440 usingPCoords = .FALSE.
0441 usingZCoords = .FALSE.
0442 fluidIsAir = .FALSE.
0443 fluidIsWater = .FALSE.
0444 IF ( buoyancyRelation.EQ.'ATMOSPHERIC' ) THEN
0445 usingPCoords = .TRUE.
0446 fluidIsAir = .TRUE.
0447 ELSEIF ( buoyancyRelation.EQ.'OCEANICP') THEN
0448 usingPCoords = .TRUE.
0449 fluidIsWater = .TRUE.
0450 ELSEIF ( buoyancyRelation.EQ.'OCEANIC' ) THEN
0451 usingZCoords = .TRUE.
0452 fluidIsWater = .TRUE.
0453 ELSE
0454 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS:',
0455 & ' Bad value of buoyancyRelation '
b9306711eb Jean*0456 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0457 errCount = errCount + 1
e99e7fe4e6 Jean*0458 ENDIF
0459
f615684c22 Jean*0460 IF ( .NOT.rigidLid .AND.
0461 & .NOT.implicitFreeSurface ) THEN
0462
0463 WRITE(msgBuf,'(A)')
f76021331f Jean*0464 & 'S/R INI_PARMS: No request for barotropic solver'
f615684c22 Jean*0465 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0466 & SQUEEZE_RIGHT, myThid )
f615684c22 Jean*0467 WRITE(msgBuf,'(A)')
0468 & 'S/R INI_PARMS: => Use implicitFreeSurface as default'
0469 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0470 & SQUEEZE_RIGHT, myThid )
f615684c22 Jean*0471 implicitFreeSurface = .TRUE.
0472 ENDIF
8039e9b985 Jean*0473 IF ( implicitFreeSurface ) freeSurfFac = 1. _d 0
0474 IF ( rigidLid ) freeSurfFac = 0. _d 0
0127add478 Alis*0475 IF ( gBaro .EQ. UNSET_RL ) gBaro=gravity
0476 IF ( rhoConst .EQ. UNSET_RL ) rhoConst=rhoNil
01d019192b Jean*0477 IF ( rhoConstFresh .EQ. UNSET_RL ) rhoConstFresh=rhoConst
16f5093311 Jean*0478 IF ( implicitNHPress.EQ.UNSET_RL )
0479 & implicitNHPress = implicSurfPress
81a2602dac Jean*0480 IF ( omega .EQ. UNSET_RL ) THEN
f0bc3639a4 Jean*0481 omega = 0. _d 0
b9306711eb Jean*0482 IF ( rotationPeriod .NE. 0. _d 0 )
8039e9b985 Jean*0483 & omega = 2. _d 0 * PI / rotationPeriod
f0bc3639a4 Jean*0484 ELSEIF ( omega .EQ. 0. _d 0 ) THEN
0485 rotationPeriod = 0. _d 0
81a2602dac Jean*0486 ELSE
8039e9b985 Jean*0487 rotationPeriod = 2. _d 0 * PI / omega
81a2602dac Jean*0488 ENDIF
aad87ebb4c Jean*0489 IF ( atm_Rd .EQ. UNSET_RL ) THEN
463053c692 Jean*0490 atm_Rd = atm_Cp * atm_kappa
0491 ELSE
0492 atm_kappa = atm_Rd / atm_Cp
0493 ENDIF
775ad00e06 Alis*0494
0495 IF (nonHydrostatic.AND.quasiHydrostatic) THEN
0496 WRITE(msgBuf,'(A)')
0497 & 'Illegal: both nonHydrostatic = quasiHydrostatic = TRUE'
b9306711eb Jean*0498 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0499 errCount = errCount + 1
775ad00e06 Alis*0500 ENDIF
809bdccbfc Jean*0501
49efc6c1e0 Jean*0502 IF (tempVertAdvScheme.EQ.0) tempVertAdvScheme = tempAdvScheme
0503 IF (saltVertAdvScheme.EQ.0) saltVertAdvScheme = saltAdvScheme
915a82d1f5 Jean*0504
0505 IF ( viscAhD .EQ. UNSET_RL ) viscAhD = viscAh
0506 IF ( viscAhZ .EQ. UNSET_RL ) viscAhZ = viscAh
0507 IF ( viscA4D .EQ. UNSET_RL ) viscA4D = viscA4
0508 IF ( viscA4Z .EQ. UNSET_RL ) viscA4Z = viscA4
2d5bb917cc Jean*0509
92da82d27f Jean*0510 IF ( viscAhW .EQ. UNSET_RL ) viscAhW = viscAhD
0511 IF ( viscA4W .EQ. UNSET_RL ) viscA4W = viscA4D
910f05e765 Chri*0512
0513 IF ( viscAz .NE. UNSET_RL ) zCoordInputData = .TRUE.
0514 IF ( viscAp .NE. UNSET_RL ) pCoordInputData = .TRUE.
0515 IF ( viscAr .NE. UNSET_RL ) rCoordInputData = .TRUE.
0516 IF ( viscAr .EQ. UNSET_RL ) viscAr = viscAz
0517 IF ( viscAr .EQ. UNSET_RL ) viscAr = viscAp
7cd7754949 Jean*0518 vertSetCount = 0
0519 DO k=1,Nr
13b4d13c98 Jean*0520 IF ( viscArNr(k).NE.UNSET_RL ) vertSetCount = vertSetCount + 1
7cd7754949 Jean*0521 ENDDO
13b4d13c98 Jean*0522 IF ( vertSetCount.GT.0 .AND. vertSetCount.LT.Nr ) THEN
0523 WRITE(msgBuf,'(A,2(I5,A))') 'S/R INI_PARMS: Partial setting (',
0524 & vertSetCount, ' /', Nr, ') of viscArNr is not allowed'
0525 CALL PRINT_ERROR( msgBuf, myThid )
0526 errCount = errCount + 1
0527 ENDIF
0528 IF ( viscAr .EQ. UNSET_RL ) THEN
0529 viscAr = viscArDefault
0530 ELSEIF ( vertSetCount.GT.0 ) THEN
0531 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
0532 & 'viscArNr and viscAr (or Ap,Az) in param file data'
0533 CALL PRINT_ERROR( msgBuf, myThid )
0534 errCount = errCount + 1
0535 ENDIF
0536 IF ( vertSetCount.EQ.0 ) THEN
0537 DO k=1,Nr
0538 viscArNr(k) = viscAr
0539 ENDDO
7cd7754949 Jean*0540 ENDIF
f9ef55fa0c Jean*0541 #ifdef ALLOW_MOM_COMMON
0542
0543 IF ( selectBotDragQuadr.EQ.-1 .AND. bottomDragQuadratic.NE.0. )
0544 & selectBotDragQuadr = 0
ab47de63dc Mart*0545 IF ( selectBotDragQuadr.EQ.-1 .AND. zRoughBot.NE.0. )
0546 & selectBotDragQuadr = 0
f9ef55fa0c Jean*0547 #endif /* ALLOW_MOM_COMMON */
910f05e765 Chri*0548
2d5bb917cc Jean*0549 IF ( smag3D_diffCoeff.NE.zeroRL .AND. .NOT.useSmag3D ) THEN
0550 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: ',
0551 & 'will not use "smag3D_diffCoeff" without useSmag3D'
0552 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0553 & SQUEEZE_RIGHT, myThid )
0554 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: ',
0555 & '==> reset "smag3D_diffCoeff" to zero'
0556 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0557 & SQUEEZE_RIGHT, myThid )
0558 smag3D_diffCoeff = zeroRL
0559 ENDIF
910f05e765 Chri*0560 IF ( diffKzT .NE. UNSET_RL ) zCoordInputData = .TRUE.
0561 IF ( diffKpT .NE. UNSET_RL ) pCoordInputData = .TRUE.
0562 IF ( diffKrT .NE. UNSET_RL ) rCoordInputData = .TRUE.
0563 IF ( diffKrT .EQ. UNSET_RL ) diffKrT = diffKzT
0564 IF ( diffKrT .EQ. UNSET_RL ) diffKrT = diffKpT
7cd7754949 Jean*0565 vertSetCount = 0
8fc5af62b8 Jean*0566 DO k=1,Nr
13b4d13c98 Jean*0567 IF ( diffKrNrT(k).NE.UNSET_RL ) vertSetCount = vertSetCount + 1
8fc5af62b8 Jean*0568 ENDDO
13b4d13c98 Jean*0569 IF ( vertSetCount.GT.0 .AND. vertSetCount.LT.Nr ) THEN
0570 WRITE(msgBuf,'(A,2(I5,A))') 'S/R INI_PARMS: Partial setting (',
0571 & vertSetCount, ' /', Nr, ') of diffKrNrT is not allowed'
0572 CALL PRINT_ERROR( msgBuf, myThid )
0573 errCount = errCount + 1
0574 ENDIF
0575 specifiedDiffKrT = vertSetCount.EQ.Nr
0576 IF ( diffKrT .EQ. UNSET_RL ) THEN
0577 diffKrT = diffKrTDefault
0578 ELSEIF ( vertSetCount.GT.0 ) THEN
0579 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
0580 & 'diffKrNrT and diffKrT (or Kp,Kz) in param file data'
0581 CALL PRINT_ERROR( msgBuf, myThid )
0582 errCount = errCount + 1
0583 ELSE
0584 specifiedDiffKrT = .TRUE.
0585 ENDIF
0586 IF ( vertSetCount.EQ.0 ) THEN
0587 DO k=1,Nr
0588 diffKrNrT(k) = diffKrT
0589 ENDDO
8fc5af62b8 Jean*0590 ENDIF
910f05e765 Chri*0591
0592 IF ( diffKzS .NE. UNSET_RL ) zCoordInputData = .TRUE.
0593 IF ( diffKpS .NE. UNSET_RL ) pCoordInputData = .TRUE.
0594 IF ( diffKrS .NE. UNSET_RL ) rCoordInputData = .TRUE.
0595 IF ( diffKrS .EQ. UNSET_RL ) diffKrS = diffKzS
0596 IF ( diffKrS .EQ. UNSET_RL ) diffKrS = diffKpS
7cd7754949 Jean*0597 vertSetCount = 0
8fc5af62b8 Jean*0598 DO k=1,Nr
13b4d13c98 Jean*0599 IF ( diffKrNrS(k).NE.UNSET_RL ) vertSetCount = vertSetCount + 1
8fc5af62b8 Jean*0600 ENDDO
13b4d13c98 Jean*0601 IF ( vertSetCount.GT.0 .AND. vertSetCount.LT.Nr ) THEN
0602 WRITE(msgBuf,'(A,2(I5,A))') 'S/R INI_PARMS: Partial setting (',
0603 & vertSetCount, ' /', Nr, ') of diffKrNrS is not allowed'
0604 CALL PRINT_ERROR( msgBuf, myThid )
0605 errCount = errCount + 1
0606 ENDIF
a631d4754d Jean*0607 IF ( vertSetCount.EQ.Nr ) THEN
0608 specifiedDiffKrS = .TRUE.
0609 IF ( diffKrS.NE.UNSET_RL ) THEN
0610 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
13b4d13c98 Jean*0611 & 'diffKrNrS and diffKrS (or Kp,Kz) in param file data'
a631d4754d Jean*0612 CALL PRINT_ERROR( msgBuf, myThid )
0613 errCount = errCount + 1
0614 ENDIF
0615 ELSEIF ( diffKrS.NE.UNSET_RL ) THEN
13b4d13c98 Jean*0616 specifiedDiffKrS = .TRUE.
0617 DO k=1,Nr
0618 diffKrNrS(k) = diffKrS
0619 ENDDO
a631d4754d Jean*0620 ELSE
0621 specifiedDiffKrS = .FALSE.
0622 diffKrS = diffKrSDefault
0623
0624 DO k=1,Nr
0625 diffKrNrS(k) = diffKrNrT(k)
0626 ENDDO
8fc5af62b8 Jean*0627 ENDIF
910f05e765 Chri*0628
e40c34e398 Dimi*0629 IF (diffKrBLEQsurf .EQ. UNSET_RL) diffKrBLEQsurf = diffKrBL79surf
0630 IF (diffKrBLEQdeep .EQ. UNSET_RL) diffKrBLEQdeep = diffKrBL79deep
0631 IF (diffKrBLEQscl .EQ. UNSET_RL) diffKrBLEQscl = diffKrBL79scl
0632 IF (diffKrBLEQHo .EQ. UNSET_RL) diffKrBLEQHo = diffKrBL79Ho
0633
910f05e765 Chri*0634 IF ( hFacMinDz .NE. UNSET_RL ) zCoordInputData = .TRUE.
0635 IF ( hFacMinDp .NE. UNSET_RL ) pCoordInputData = .TRUE.
0636 IF ( hFacMinDr .NE. UNSET_RL ) rCoordInputData = .TRUE.
fe0a6d6615 Alis*0637 IF ( hFacMinDr .EQ. UNSET_RL ) hFacMinDr = hFacMinDz
0638 IF ( hFacMinDr .EQ. UNSET_RL ) hFacMinDr = hFacMinDp
910f05e765 Chri*0639 IF ( hFacMinDr .EQ. UNSET_RL ) hFacMinDr = hFacMinDrDefault
c0a4efc370 Chri*0640
745a0098ab Jean*0641 IF (convertFW2Salt.EQ.UNSET_RL) THEN
0642 convertFW2Salt = 35.
0643 IF (useRealFreshWaterFlux) convertFW2Salt=-1
d18df35fee Jean*0644 IF ( selectAddFluid.GE.1 ) convertFW2Salt=-1
745a0098ab Jean*0645 ENDIF
0646
7843dde2de jm-c 0647
0648 IF ( selectCoriScheme.EQ.UNSET_I ) THEN
0649 selectCoriScheme = 0
0650 IF ( useJamartWetPoints ) selectCoriScheme = 1
0651 IF ( useEnergyConservingCoriolis .AND.
0652 & .NOT.vectorInvariantMomentum )
0653 & selectCoriScheme = selectCoriScheme + 2
0654 ENDIF
0655 IF ( vectorInvariantMomentum ) THEN
0656 IF ( useJamartWetPoints .AND. selectCoriScheme.NE.1 ) THEN
0657 WRITE(msgBuf,'(A,I5,A)')
0658 & 'S/R INI_PARMS: selectCoriScheme=', selectCoriScheme,
0659 & ' conflicts with "useJamartWetPoints"'
0660 CALL PRINT_ERROR( msgBuf, myThid )
0661 errCount = errCount + 1
0662 ENDIF
0663 ELSE
0664 IF ( useEnergyConservingCoriolis
0665 & .AND. selectCoriScheme.LT.2 ) THEN
0666 WRITE(msgBuf,'(A,I5,A)')
0667 & 'S/R INI_PARMS: selectCoriScheme=', selectCoriScheme,
0668 & ' conflicts with "useEnergyConservingCoriolis"'
0669 CALL PRINT_ERROR( msgBuf, myThid )
0670 errCount = errCount + 1
0671 ENDIF
0672 IF ( useJamartWetPoints .AND. selectCoriScheme.NE.1
0673 & .AND. selectCoriScheme.NE.3 ) THEN
0674 WRITE(msgBuf,'(A,I5,A)')
0675 & 'S/R INI_PARMS: selectCoriScheme=', selectCoriScheme,
0676 & ' conflicts with "useJamartWetPoints"'
0677 CALL PRINT_ERROR( msgBuf, myThid )
0678 errCount = errCount + 1
0679 ENDIF
0680 ENDIF
e35a804907 Jean*0681 IF ( SadournyCoriolis ) THEN
0682
0683 IF ( selectVortScheme.EQ.UNSET_I ) selectVortScheme = 2
0684 IF ( selectVortScheme.NE.2 ) THEN
7fe6343684 Jean*0685 WRITE(msgBuf,'(A,I5,A)')
0686 & 'S/R INI_PARMS: selectVortScheme=', selectVortScheme,
0687 & ' conflicts with "SadournyCoriolis"'
e35a804907 Jean*0688 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0689 errCount = errCount + 1
e35a804907 Jean*0690 ENDIF
0691 ENDIF
427e24e121 Jean*0692 IF ( select3dCoriScheme.EQ.UNSET_I ) THEN
0693
0694 select3dCoriScheme = 0
0695 IF ( use3dCoriolis ) select3dCoriScheme = 1
0696 ELSEIF ( select3dCoriScheme.NE.0 .AND. .NOT.use3dCoriolis ) THEN
0697 WRITE(msgBuf,'(A,I5,A)')
0698 & 'S/R INI_PARMS: select3dCoriScheme=', select3dCoriScheme,
0699 & ' conflicts with "use3dCoriolis=F"'
0700 CALL PRINT_ERROR( msgBuf, myThid )
0701 errCount = errCount + 1
0702 ENDIF
0703 IF ( selectMetricTerms.EQ.UNSET_I ) THEN
0704
0705 selectMetricTerms = 0
0706 IF ( metricTerms ) selectMetricTerms = 1
0707 ELSEIF ( selectMetricTerms.NE.0 .AND. .NOT.metricTerms ) THEN
0708 WRITE(msgBuf,'(A,I5,A)')
0709 & 'S/R INI_PARMS: selectMetricTerms=', selectMetricTerms,
0710 & ' conflicts with "metricTerms=F"'
0711 CALL PRINT_ERROR( msgBuf, myThid )
0712 errCount = errCount + 1
0713 ENDIF
7e00d7e8f9 Jean*0714 IF ( selectBalanceEmPmR.EQ.UNSET_I ) THEN
0715 selectBalanceEmPmR = 0
0716 IF ( balanceEmPmR ) selectBalanceEmPmR = 1
0717 ELSEIF ( selectBalanceEmPmR.NE.1 .AND. balanceEmPmR ) THEN
0718 WRITE(msgBuf,'(A,I5,A)')
0719 & 'S/R INI_PARMS: selectBalanceEmPmR=', selectBalanceEmPmR,
0720 & ' conflicts with "balanceEmPmR"'
0721 CALL PRINT_ERROR( msgBuf, myThid )
0722 errCount = errCount + 1
0723 ENDIF
e35a804907 Jean*0724
aad87ebb4c Jean*0725 IF ( ivdc_kappa.NE.zeroRL .AND. .NOT.implicitDiffusion ) THEN
e1c6dcc4ea Jean*0726 WRITE(msgBuf,'(A,A)')
d4701cb6da Alis*0727 & 'S/R INI_PARMS: To use ivdc_kappa you must enable implicit',
0728 & ' vertical diffusion.'
b9306711eb Jean*0729 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0730 errCount = errCount + 1
d4701cb6da Alis*0731 ENDIF
0732
910f05e765 Chri*0733 coordsSet = 0
0734 IF ( zCoordInputData ) coordsSet = coordsSet + 1
0735 IF ( pCoordInputData ) coordsSet = coordsSet + 1
0736 IF ( rCoordInputData ) coordsSet = coordsSet + 1
0737 IF ( coordsSet .GT. 1 ) THEN
0738 WRITE(msgBuf,'(A)')
0739 & 'S/R INI_PARMS: Cannot mix z, p and r in the input data.'
b9306711eb Jean*0740 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0741 errCount = errCount + 1
c0a4efc370 Chri*0742 ENDIF
910f05e765 Chri*0743 IF ( rhoConst .LE. 0. ) THEN
0744 WRITE(msgBuf,'(A)')
0745 & 'S/R INI_PARMS: rhoConst must be greater than 0.'
b9306711eb Jean*0746 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0747 errCount = errCount + 1
0748 recip_rhoConst = 1. _d 0
910f05e765 Chri*0749 ELSE
8039e9b985 Jean*0750 recip_rhoConst = 1. _d 0 / rhoConst
910f05e765 Chri*0751 ENDIF
53a1bebe0a Jean*0752 IF ( eosType.EQ.'LINEAR' .AND. rhoNil.LE.0. ) THEN
9bef66796c Alis*0753 WRITE(msgBuf,'(A)')
0754 & 'S/R INI_PARMS: rhoNil must be greater than 0.'
b9306711eb Jean*0755 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0756 errCount = errCount + 1
9bef66796c Alis*0757 ENDIF
0127add478 Alis*0758 IF ( HeatCapacity_Cp .LE. 0. ) THEN
0759 WRITE(msgBuf,'(A)')
0760 & 'S/R INI_PARMS: HeatCapacity_Cp must be greater than 0.'
b9306711eb Jean*0761 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0762 errCount = errCount + 1
0127add478 Alis*0763 ENDIF
b0f9f620c0 Chri*0764 IF ( gravity .LE. 0. ) THEN
0765 WRITE(msgBuf,'(A)')
0766 & 'S/R INI_PARMS: gravity must be greater than 0.'
b9306711eb Jean*0767 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*0768 errCount = errCount + 1
0769 recip_gravity = 1. _d 0
b0f9f620c0 Chri*0770 ELSE
8039e9b985 Jean*0771 recip_gravity = 1. _d 0 / gravity
b0f9f620c0 Chri*0772 ENDIF
631fe75038 Dimi*0773
83513ae28b Jean*0774
e922d59b96 Jean*0775 printResidualFreq = -1
83513ae28b Jean*0776 IF ( debugLevel.GE.debLevE ) printResidualFreq = 1
337b46d524 Jean*0777 IF ( plotLevel.EQ.UNSET_I ) plotLevel = debugLevel
924557e60a Chri*0778
631fe75038 Dimi*0779
0780 IF ( useSingleCpuIO ) useSingleCpuInput=.TRUE.
0781
ede2cfe569 Chri*0782
0783 nRetired = 0
c07cd3bfa8 Jean*0784 IF ( useConstantF ) THEN
0785 nRetired = nRetired+1
0786 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "useConstantF" ',
0787 & 'is no longer allowed in file "data"'
0788 CALL PRINT_ERROR( msgBuf, myThid )
0789 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: set "selectCoriMap"',
0790 & ' [0,1,2,3] to impose a setting over grid default'
0791 CALL PRINT_ERROR( msgBuf, myThid )
0792 ENDIF
0793 IF ( useBetaPlaneF ) THEN
0794 nRetired = nRetired+1
0795 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "useBetaPlaneF" ',
0796 & 'is no longer allowed in file "data"'
0797 CALL PRINT_ERROR( msgBuf, myThid )
0798 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: set "selectCoriMap"',
0799 & ' [0,1,2,3] to impose a setting over grid default'
0800 CALL PRINT_ERROR( msgBuf, myThid )
0801 ENDIF
0802 IF ( .NOT. useSphereF ) THEN
0803 nRetired = nRetired+1
0804 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "useSphereF" ',
0805 & 'is no longer allowed in file "data"'
0806 CALL PRINT_ERROR( msgBuf, myThid )
0807 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: set "selectCoriMap"',
0808 & ' [0,1,2,3] to impose a setting over grid default'
0809 CALL PRINT_ERROR( msgBuf, myThid )
0810 ENDIF
ede2cfe569 Chri*0811 IF ( zonal_filt_lat .NE. UNSET_RL ) THEN
0812 nRetired = nRetired+1
0813 WRITE(msgBuf,'(A,A)')
0814 & 'S/R INI_PARMS: Paramater "zonal_filt_lat" is',
0815 & ' no longer allowed in file "data".'
b9306711eb Jean*0816 CALL PRINT_ERROR( msgBuf, myThid )
ede2cfe569 Chri*0817 WRITE(msgBuf,'(A,A)')
0818 & 'S/R INI_PARMS: Paramater "zonal_filt_lat" is',
0819 & ' now read from file "data.zonfilt".'
b9306711eb Jean*0820 CALL PRINT_ERROR( msgBuf, myThid )
ede2cfe569 Chri*0821 ENDIF
36b12bb7ff Jean*0822 IF ( gravitySign .NE. UNSET_RL ) THEN
0823 nRetired = nRetired+1
0824 WRITE(msgBuf,'(A,A)')
0825 & 'S/R INI_PARMS: "gravitySign" is set according to vertical ',
0826 & ' coordinate and is no longer allowed in file "data".'
b9306711eb Jean*0827 CALL PRINT_ERROR( msgBuf, myThid )
36b12bb7ff Jean*0828 ENDIF
7a4ec66481 Jean*0829 IF ( tracerAdvScheme .NE. UNSET_I ) THEN
0830 nRetired = nRetired+1
0831 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tracerAdvScheme" ',
0832 & '(old passive tracer code) is no longer allowed in file "data"'
b9306711eb Jean*0833 CALL PRINT_ERROR( msgBuf, myThid )
7a4ec66481 Jean*0834 ENDIF
0835 IF ( trac_EvPrRn .NE. UNSET_RL ) THEN
0836 nRetired = nRetired+1
0837 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "trac_EvPrRn" ',
0838 & '(old passive tracer code) is no longer allowed in file "data"'
b9306711eb Jean*0839 CALL PRINT_ERROR( msgBuf, myThid )
7a4ec66481 Jean*0840 ENDIF
0841 IF ( .NOT. tempDiffusion ) THEN
0842 nRetired = nRetired+1
0843 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tempDiffusion" ',
0844 & 'is no longer allowed in file "data"'
b9306711eb Jean*0845 CALL PRINT_ERROR( msgBuf, myThid )
7a4ec66481 Jean*0846 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to turn off diffusion',
0847 & ' => set diffusivity to zero'
b9306711eb Jean*0848 CALL PRINT_ERROR( msgBuf, myThid )
7a4ec66481 Jean*0849 ENDIF
0850 IF ( .NOT. saltDiffusion ) THEN
0851 nRetired = nRetired+1
0852 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "saltDiffusion" ',
0853 & 'is no longer allowed in file "data"'
b9306711eb Jean*0854 CALL PRINT_ERROR( msgBuf, myThid )
7a4ec66481 Jean*0855 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to turn off diffusion',
0856 & ' => set diffusivity to zero'
b9306711eb Jean*0857 CALL PRINT_ERROR( msgBuf, myThid )
7a4ec66481 Jean*0858 ENDIF
8f934af0f4 Jean*0859 IF ( viscAstrain .NE. UNSET_RL ) THEN
0860 nRetired = nRetired+1
0861 WRITE(msgBuf,'(A,A)')
0862 & 'S/R INI_PARMS: "viscAstrain" ',
0863 & 'is no longer allowed in file "data"'
b9306711eb Jean*0864 CALL PRINT_ERROR( msgBuf, myThid )
8f934af0f4 Jean*0865 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to use Strain & Tension',
0866 & ' formulation => set useStrainTensionVisc to TRUE'
b9306711eb Jean*0867 CALL PRINT_ERROR( msgBuf, myThid )
8f934af0f4 Jean*0868 ENDIF
0869 IF ( viscAtension .NE. UNSET_RL ) THEN
0870 nRetired = nRetired+1
0871 WRITE(msgBuf,'(A,A)')
0872 & 'S/R INI_PARMS: "viscAtension" ',
0873 & 'is no longer allowed in file "data"'
b9306711eb Jean*0874 CALL PRINT_ERROR( msgBuf, myThid )
8f934af0f4 Jean*0875 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to use Strain & Tension',
0876 & ' formulation => set useStrainTensionVisc to TRUE'
b9306711eb Jean*0877 CALL PRINT_ERROR( msgBuf, myThid )
8f934af0f4 Jean*0878 ENDIF
6d61b52b09 Jean*0879 IF ( .NOT.useAnisotropicViscAgridMax ) THEN
cef83a8f90 Bayl*0880 nRetired = nRetired+1
0881 WRITE(msgBuf,'(A,A)')
0882 & 'S/R INI_PARMS: "useAnisotropicViscAgridMax" ',
0883 & 'is not allowed in "data" substitute useAreaViscLength=true'
b9306711eb Jean*0884 CALL PRINT_ERROR( msgBuf, myThid )
cef83a8f90 Bayl*0885 ENDIF
6d61b52b09 Jean*0886 IF ( usePickupBeforeC35 ) THEN
0887 nRetired = nRetired+1
0888 WRITE(msgBuf,'(A,A)')
0889 & 'S/R INI_PARMS: "usePickupBeforeC35" ',
0890 & 'is no longer supported & not longer allowed in file "data"'
0891 CALL PRINT_ERROR( msgBuf, myThid )
0892 ENDIF
83513ae28b Jean*0893 IF ( debugMode.NEQV.saveDebugMode ) THEN
0894 nRetired = nRetired+1
0895 WRITE(msgBuf,'(A,A)')
0896 & 'S/R INI_PARMS: "debugMode" has been moved to "eedata"',
0897 & ' and is no longer allowed in file "data"'
0898 CALL PRINT_ERROR( msgBuf, myThid )
0899 ENDIF
e0b3e1bdd8 Dimi*0900 IF ( allowInteriorFreezing ) THEN
0901 nRetired = nRetired+1
0902 WRITE(msgBuf,'(A,A)')
0903 & 'S/R INI_PARMS: "allowInteriorFreezing" has been replaced',
0904 & ' by pkg/frazil and is no longer allowed in file "data"'
0905 CALL PRINT_ERROR( msgBuf, myThid )
0906 ENDIF
e793395f17 Jean*0907 IF ( useOldFreezing ) THEN
0908 nRetired = nRetired+1
0909 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "useOldFreezing" ',
0910 & 'is no longer supported & not longer allowed in file "data"'
0911 CALL PRINT_ERROR( msgBuf, myThid )
0912 ENDIF
427e24e121 Jean*0913 IF ( writeStatePrec .NE. UNSET_I ) THEN
0914 nRetired = nRetired+1
0915 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "writeStatePrec" ',
0916 & '(un-used) is no longer allowed in file "data"'
0917 CALL PRINT_ERROR( msgBuf, myThid )
0918 ENDIF
ede2cfe569 Chri*0919
924557e60a Chri*0920
aa8f58c33d Jean*0921 WRITE(msgBuf,'(A)') ' INI_PARMS ; starts to read PARM02'
6b6f69d6b0 Jean*0922 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0923 & SQUEEZE_RIGHT, myThid )
88830be691 Alis*0924 READ(UNIT=iUnit,NML=PARM02)
c206b07c1d Chri*0925 IF ( errIO .LT. 0 ) THEN
924557e60a Chri*0926 WRITE(msgBuf,'(A)')
aa8f58c33d Jean*0927 & 'S/R INI_PARMS: Error reading model parameter file "data"'
b9306711eb Jean*0928 CALL PRINT_ERROR( msgBuf, myThid )
aa8f58c33d Jean*0929 WRITE(msgBuf,'(A)') 'S/R INI_PARMS: Problem in namelist PARM02'
b9306711eb Jean*0930 CALL PRINT_ERROR( msgBuf, myThid )
924557e60a Chri*0931 STOP 'ABNORMAL END: S/R INI_PARMS'
41f1ac6de1 Jean*0932 ELSE
aa8f58c33d Jean*0933 WRITE(msgBuf,'(A)') ' INI_PARMS ; read PARM02 : OK'
41f1ac6de1 Jean*0934 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0935 & SQUEEZE_RIGHT, myThid )
809bdccbfc Jean*0936 ENDIF
aecc8b0f47 Mart*0937
0938 IF ( cg2dChkResFreq .NE. UNSET_I ) THEN
0939 nRetired = nRetired+1
0940 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: unused "cg2dChkResFreq"',
0941 & ' is no longer allowed in file "data"'
0942 CALL PRINT_ERROR( msgBuf, myThid )
0943 ENDIF
0944 IF ( cg3dChkResFreq .NE. UNSET_I ) THEN
0945 nRetired = nRetired+1
0946 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: unused "cg3dChkResFreq"',
0947 & ' is no longer allowed in file "data"'
0948 CALL PRINT_ERROR( msgBuf, myThid )
0949 ENDIF
924557e60a Chri*0950
0951
8039e9b985 Jean*0952 rCD = -1. _d 0
0953 epsAB_CD = UNSET_RL
36b12bb7ff Jean*0954 latBandClimRelax = UNSET_RL
062a876ce5 Jean*0955 deltaTtracer = 0. _d 0
c2b6ed6bfd Jean*0956 forcing_In_AB = .TRUE.
aa8f58c33d Jean*0957 WRITE(msgBuf,'(A)') ' INI_PARMS ; starts to read PARM03'
6b6f69d6b0 Jean*0958 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0959 & SQUEEZE_RIGHT, myThid )
88830be691 Alis*0960 READ(UNIT=iUnit,NML=PARM03)
c206b07c1d Chri*0961 IF ( errIO .LT. 0 ) THEN
924557e60a Chri*0962 WRITE(msgBuf,'(A)')
aa8f58c33d Jean*0963 & 'S/R INI_PARMS: Error reading model parameter file "data"'
b9306711eb Jean*0964 CALL PRINT_ERROR( msgBuf, myThid )
aa8f58c33d Jean*0965 WRITE(msgBuf,'(A)') 'S/R INI_PARMS: Problem in namelist PARM03'
b9306711eb Jean*0966 CALL PRINT_ERROR( msgBuf, myThid )
924557e60a Chri*0967 STOP 'ABNORMAL END: S/R INI_PARMS'
41f1ac6de1 Jean*0968 ELSE
aa8f58c33d Jean*0969 WRITE(msgBuf,'(A)') ' INI_PARMS ; read PARM03 : OK'
41f1ac6de1 Jean*0970 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*0971 & SQUEEZE_RIGHT, myThid )
809bdccbfc Jean*0972 ENDIF
46979d29da Jean*0973
0974 IF ( tauThetaClimRelax3Dim .NE. UNSET_RL ) THEN
0975 nRetired = nRetired+1
0976 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tauThetaClimRelax3Dim" ',
0977 & 'is no longer allowed in file "data"'
b9306711eb Jean*0978 CALL PRINT_ERROR( msgBuf, myThid )
46979d29da Jean*0979 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: 3-dim. relaxation code',
0980 & ' has moved to separate pkg/rbcs.'
b9306711eb Jean*0981 CALL PRINT_ERROR( msgBuf, myThid )
46979d29da Jean*0982 ENDIF
0983 IF ( tauSaltClimRelax3Dim .NE. UNSET_RL ) THEN
0984 nRetired = nRetired+1
0985 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tauSaltClimRelax3Dim" ',
0986 & 'is no longer allowed in file "data"'
b9306711eb Jean*0987 CALL PRINT_ERROR( msgBuf, myThid )
46979d29da Jean*0988 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: 3-dim. relaxation code',
0989 & ' has moved to separate pkg/rbcs.'
b9306711eb Jean*0990 CALL PRINT_ERROR( msgBuf, myThid )
46979d29da Jean*0991 ENDIF
742cf4499c Jean*0992 IF ( calendarDumps ) THEN
0993 nRetired = nRetired+1
0994 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "calendarDumps" ',
0995 & 'is no longer allowed in file "data"'
b9306711eb Jean*0996 CALL PRINT_ERROR( msgBuf, myThid )
742cf4499c Jean*0997 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: calendarDumps',
0998 & ' has moved to "data.cal"'
b9306711eb Jean*0999 CALL PRINT_ERROR( msgBuf, myThid )
742cf4499c Jean*1000 ENDIF
46979d29da Jean*1001
7a7a4899b4 Chri*1002
1003
062a876ce5 Jean*1004 IF ( deltaTtracer .NE. dTtracerLev(1) .AND.
1005 & deltaTtracer .NE. 0. .AND. dTtracerLev(1) .NE. 0. ) THEN
1006 WRITE(msgBuf,'(A)')
1007 & 'S/R INI_PARMS: deltaTtracer & dTtracerLev(1) not equal'
b9306711eb Jean*1008 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1009 errCount = errCount + 1
062a876ce5 Jean*1010 ELSEIF ( dTtracerLev(1) .NE. 0. ) THEN
1011 deltaTtracer = dTtracerLev(1)
1012 ENDIF
ad330e45ef Jean*1013 IF ( deltaT .EQ. 0. ) deltaT = deltaTClock
7a7a4899b4 Chri*1014 IF ( deltaT .EQ. 0. ) deltaT = deltaTtracer
db8d49beca Jean*1015 IF ( deltaT .EQ. 0. ) deltaT = deltaTMom
1016 IF ( deltaT .EQ. 0. ) deltaT = deltaTFreeSurf
90aed06079 Jean*1017 IF ( deltaT .EQ. 0. ) THEN
1018 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: ',
1019 & 'need to specify in file "data", namelist "PARM03"'
1020 CALL PRINT_ERROR( msgBuf, myThid )
1021 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: ',
1022 & ' a model timestep (in s) deltaT or deltaTClock= ?'
1023 CALL PRINT_ERROR( msgBuf, myThid )
1024 errCount = errCount + 1
1025 deltaT = 1.
1026 ENDIF
db8d49beca Jean*1027 IF ( deltaTMom .EQ. 0. ) deltaTMom = deltaT
7a7a4899b4 Chri*1028 IF ( deltaTtracer .EQ. 0. ) deltaTtracer = deltaT
66dc79a095 Chri*1029 IF ( deltaTClock .EQ. 0. ) deltaTClock = deltaT
062a876ce5 Jean*1030 DO k=1,Nr
1031 IF (dTtracerLev(k).EQ.0.) dTtracerLev(k)= deltaTtracer
1032 ENDDO
ad330e45ef Jean*1033
d48ed2b20a Alis*1034
1035
1036
1037
db8d49beca Jean*1038 IF ( deltaTFreeSurf .EQ. 0. ) deltaTFreeSurf = deltaTMom
4edf45584c Alis*1039 IF ( periodicExternalForcing ) THEN
1040 IF ( externForcingCycle*externForcingPeriod .EQ. 0. ) THEN
1041 WRITE(msgBuf,'(A)')
1042 & 'S/R INI_PARMS: externForcingCycle,externForcingPeriod =0'
b9306711eb Jean*1043 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1044 errCount = errCount + 1
1045 ELSEIF ( INT(externForcingCycle/externForcingPeriod) .NE.
1046 & externForcingCycle/externForcingPeriod ) THEN
4edf45584c Alis*1047 WRITE(msgBuf,'(A)')
1048 & 'S/R INI_PARMS: externForcingCycle <> N*externForcingPeriod'
b9306711eb Jean*1049 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1050 errCount = errCount + 1
1051 ELSEIF ( externForcingCycle.LT.externForcingPeriod ) THEN
4edf45584c Alis*1052 WRITE(msgBuf,'(A)')
1053 & 'S/R INI_PARMS: externForcingCycle < externForcingPeriod'
b9306711eb Jean*1054 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1055 errCount = errCount + 1
4edf45584c Alis*1056 ENDIF
db8d49beca Jean*1057 IF ( externForcingPeriod.LT.deltaTClock ) THEN
4edf45584c Alis*1058 WRITE(msgBuf,'(A)')
db8d49beca Jean*1059 & 'S/R INI_PARMS: externForcingPeriod < deltaTClock'
b9306711eb Jean*1060 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1061 errCount = errCount + 1
4edf45584c Alis*1062 ENDIF
1063 ENDIF
c2b6ed6bfd Jean*1064
b9306711eb Jean*1065 IF ( momForcingOutAB .EQ. UNSET_I ) THEN
c2b6ed6bfd Jean*1066 momForcingOutAB = 1
1067 IF ( forcing_In_AB ) momForcingOutAB = 0
1068 ENDIF
b9306711eb Jean*1069 IF ( tracForcingOutAB .EQ. UNSET_I ) THEN
c2b6ed6bfd Jean*1070 tracForcingOutAB = 1
1071 IF ( forcing_In_AB ) tracForcingOutAB = 0
1072 ENDIF
cf8488c0fd Chri*1073
1074 IF ( cAdjFreq .LT. 0. ) THEN
1075 cAdjFreq = deltaTClock
1076 ENDIF
d4701cb6da Alis*1077 IF ( ivdc_kappa .NE. 0. .AND. cAdjFreq .NE. 0. ) THEN
1078 WRITE(msgBuf,'(A,A)')
1079 & 'S/R INI_PARMS: You have enabled both ivdc_kappa and',
1080 & ' convective adjustment.'
b9306711eb Jean*1081 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1082 errCount = errCount + 1
d4701cb6da Alis*1083 ENDIF
a97467b673 Jean*1084 IF (useCDscheme) THEN
1085
db8d49beca Jean*1086 IF ( tauCD .EQ. 0. _d 0 ) tauCD = deltaTMom
a97467b673 Jean*1087 IF ( rCD .LT. 0. ) rCD = 1. _d 0 - deltaTMom/tauCD
8039e9b985 Jean*1088 IF ( epsAB_CD .EQ. UNSET_RL ) epsAB_CD = abEps
b05b067368 Chri*1089 ENDIF
88830be691 Alis*1090
19eda8b250 Jean*1091 IF ( startTime.EQ.UNSET_RL .AND. nIter0.EQ.-1 ) THEN
1092
1093 startTime = baseTime
1094 nIter0 = 0
1095 ELSEIF ( startTime.EQ.UNSET_RL ) THEN
1096
d987e9fc35 Jean*1097 startTime = baseTime + deltaTClock*DFLOAT(nIter0)
19eda8b250 Jean*1098 ELSEIF ( nIter0.EQ.-1 ) THEN
1099
1100 nIter0 = NINT( (startTime-baseTime)/deltaTClock )
1101 ELSEIF ( baseTime.EQ.0. ) THEN
1102
d987e9fc35 Jean*1103 baseTime = startTime - deltaTClock*DFLOAT(nIter0)
19eda8b250 Jean*1104 ENDIF
d4701cb6da Alis*1105
6e6f314aa7 Patr*1106 nTimeSteps_l2 = 4
d4701cb6da Alis*1107
1108 IF ( nTimeSteps .EQ. 0 .AND. nEndIter .NE. 0 )
1109 & nTimeSteps = nEndIter-nIter0
1110
88830be691 Alis*1111 IF ( nTimeSteps .EQ. 0 .AND. endTime .NE. 0. )
db8d49beca Jean*1112 & nTimeSteps = NINT((endTime-startTime)/deltaTClock)
d4701cb6da Alis*1113
1114 IF ( nEndIter .EQ. 0 .AND. nTimeSteps .NE. 0 )
1115 & nEndIter = nIter0+nTimeSteps
1116
1117 IF ( nEndIter .EQ. 0 .AND. endTime .NE. 0. )
db8d49beca Jean*1118 & nEndIter = NINT((endTime-baseTime)/deltaTClock)
d4701cb6da Alis*1119
1120 IF ( endTime .EQ. 0. .AND. nTimeSteps .NE. 0 )
d987e9fc35 Jean*1121 & endTime = startTime + deltaTClock*DFLOAT(nTimeSteps)
d4701cb6da Alis*1122
1123 IF ( endTime .EQ. 0. .AND. nEndIter .NE. 0 )
d987e9fc35 Jean*1124 & endTime = baseTime + deltaTClock*DFLOAT(nEndIter)
d4701cb6da Alis*1125
88830be691 Alis*1126
d987e9fc35 Jean*1127 IF ( startTime .NE. baseTime+deltaTClock*DFLOAT(nIter0) ) THEN
16c445e700 Jean*1128 WRITE(msgBuf,'(A)')
1129 & 'S/R INI_PARMS: startTime, baseTime and nIter0 are inconsistent'
b9306711eb Jean*1130 CALL PRINT_ERROR( msgBuf, myThid )
16c445e700 Jean*1131 WRITE(msgBuf,'(A)')
1132 & 'S/R INI_PARMS: Perhaps more than two were set at once'
b9306711eb Jean*1133 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1134 errCount = errCount + 1
16c445e700 Jean*1135 ENDIF
d4701cb6da Alis*1136 IF ( nEndIter .NE. nIter0+nTimeSteps ) THEN
1137 WRITE(msgBuf,'(A)')
1138 & 'S/R INI_PARMS: nIter0, nTimeSteps and nEndIter are inconsistent'
b9306711eb Jean*1139 CALL PRINT_ERROR( msgBuf, myThid )
d4701cb6da Alis*1140 WRITE(msgBuf,'(A)')
1141 & 'S/R INI_PARMS: Perhaps more than two were set at once'
b9306711eb Jean*1142 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1143 errCount = errCount + 1
d4701cb6da Alis*1144 ENDIF
b9306711eb Jean*1145 IF ( nTimeSteps .NE. NINT((endTime-startTime)/deltaTClock)
1146 & ) THEN
1147 WRITE(msgBuf,'(A)')
1148 & 'S/R INI_PARMS: both endTime and nTimeSteps have been set'
1149 CALL PRINT_ERROR( msgBuf, myThid )
1150 WRITE(msgBuf,'(A)')
1151 & 'S/R INI_PARMS: but are inconsistent'
1152 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1153 errCount = errCount + 1
7a7a4899b4 Chri*1154 ENDIF
ea212a0263 Alis*1155
dc684458c1 Alis*1156
1157 IF (monitorFreq.LT.0.) THEN
1158 monitorFreq=0.
7abc7f9caf Alis*1159 IF (dumpFreq.NE.0.) monitorFreq=dumpFreq
3a279374db Alis*1160 IF (diagFreq.NE.0..AND.diagFreq.LT.monitorFreq)
1161 & monitorFreq=diagFreq
7abc7f9caf Alis*1162 IF (taveFreq.NE.0..AND.taveFreq.LT.monitorFreq)
1163 & monitorFreq=taveFreq
1164 IF (chkPtFreq.NE.0..AND.chkPtFreq.LT.monitorFreq)
1165 & monitorFreq=chkPtFreq
1166 IF (pChkPtFreq.NE.0..AND.pChkPtFreq.LT.monitorFreq)
1167 & monitorFreq=pChkPtFreq
db8d49beca Jean*1168 IF (monitorFreq.EQ.0.) monitorFreq=deltaTClock
dc684458c1 Alis*1169 ENDIF
f804abbd25 Jean*1170 IF ( monitorSelect.EQ.UNSET_I ) THEN
1171 monitorSelect = 2
1172 IF ( fluidIsWater ) monitorSelect = 3
1173 ENDIF
dc684458c1 Alis*1174
924557e60a Chri*1175
1176
7cd7754949 Jean*1177 DO k =1,Nr
1178 delZ(k) = UNSET_RL
1179 delP(k) = UNSET_RL
1180 delR(k) = UNSET_RL
924557e60a Chri*1181 ENDDO
1182
0127add478 Alis*1183 dxSpacing = UNSET_RL
1184 dySpacing = UNSET_RL
bb2fd3f1ad Jean*1185
1186 interViscAr_pCell = .FALSE.
1187 interDiffKr_pCell = .FALSE.
1188 pCellMix_select = 0
1189 pCellMix_maxFac = 1. _d 4
1190 pCellMix_delR = 0.
1191 DO k=1,Nr
1192 pCellMix_viscAr(k) = viscArNr(k)
1193 pCellMix_diffKr(k) = diffKrNrT(k)
1194 ENDDO
1195
aa8f58c33d Jean*1196 WRITE(msgBuf,'(A)') ' INI_PARMS ; starts to read PARM04'
6b6f69d6b0 Jean*1197 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*1198 & SQUEEZE_RIGHT, myThid )
b6e98c1b91 Jean*1199 READ(UNIT=iUnit,NML=PARM04)
c206b07c1d Chri*1200 IF ( errIO .LT. 0 ) THEN
924557e60a Chri*1201 WRITE(msgBuf,'(A)')
aa8f58c33d Jean*1202 & 'S/R INI_PARMS: Error reading model parameter file "data"'
b9306711eb Jean*1203 CALL PRINT_ERROR( msgBuf, myThid )
aa8f58c33d Jean*1204 WRITE(msgBuf,'(A)') 'S/R INI_PARMS: Problem in namelist PARM04'
b9306711eb Jean*1205 CALL PRINT_ERROR( msgBuf, myThid )
924557e60a Chri*1206 STOP 'ABNORMAL END: S/R INI_PARMS'
41f1ac6de1 Jean*1207 ELSE
aa8f58c33d Jean*1208 WRITE(msgBuf,'(A)') ' INI_PARMS ; read PARM04 : OK'
41f1ac6de1 Jean*1209 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*1210 & SQUEEZE_RIGHT, myThid )
809bdccbfc Jean*1211 ENDIF
9bec0e0933 Alis*1212
da40681a8e Jean*1213
2ad79bdf32 Jean*1214 IF ( Ro_SeaLevel .NE. UNSET_RL ) THEN
1215
1216 IF ( usingPCoords ) THEN
1217 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: ',
1218 & '"Ro_SeaLevel" (P @ bottom) depreciated (backward compat'
1219 ELSEIF ( usingZCoords ) THEN
1220 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: ',
1221 & '"Ro_SeaLevel" (Z @ top) depreciated (backward compat'
1222 ENDIF
1223 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1224 & SQUEEZE_RIGHT, myThid )
1225 IF ( usingPCoords ) THEN
1226 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: ',
1227 & ' only). To set vert. axis, use instead "top_Pres".'
1228 ELSEIF ( usingZCoords ) THEN
1229 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: ',
1230 & ' only). To set vert. axis, use instead "seaLev_Z".'
1231 ENDIF
1232 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1233 & SQUEEZE_RIGHT, myThid )
1234 ENDIF
da40681a8e Jean*1235 IF ( rkFac .NE. UNSET_RL ) THEN
1236 nRetired = nRetired+1
1237 WRITE(msgBuf,'(A,A)')
1238 & 'S/R INI_PARMS: "rkFac" has been replaced by -rkSign ',
1239 & ' and is no longer allowed in file "data".'
b9306711eb Jean*1240 CALL PRINT_ERROR( msgBuf, myThid )
da40681a8e Jean*1241 ENDIF
1242 IF ( groundAtK1 ) THEN
1243
1244 WRITE(msgBuf,'(A,A)')
1245 & 'S/R INI_PARMS: "groundAtK1" is set according to vertical ',
1246 & ' coordinate and is no longer allowed in file "data".'
b9306711eb Jean*1247 CALL PRINT_ERROR( msgBuf, myThid )
da40681a8e Jean*1248 ENDIF
9780090eaa Jean*1249 IF ( thetaMin .NE. UNSET_RL ) THEN
1250 nRetired = nRetired+1
1251 WRITE(msgBuf,'(A,A)')
1252 & 'S/R INI_PARMS: "thetaMin" no longer allowed,',
1253 & ' has been replaced by "xgOrigin"'
1254 CALL PRINT_ERROR( msgBuf, myThid )
1255 ENDIF
1256 IF ( phiMin .NE. UNSET_RL ) THEN
1257 nRetired = nRetired+1
1258 WRITE(msgBuf,'(A,A)')
1259 & 'S/R INI_PARMS: "phiMin" no longer allowed,',
1260 & ' has been replaced by "ygOrigin"'
1261 CALL PRINT_ERROR( msgBuf, myThid )
1262 ENDIF
da40681a8e Jean*1263
f76021331f Jean*1264
1265 goptCount = 0
1266 IF ( delX(1) .NE. UNSET_RL ) goptCount = goptCount + 1
1267 IF ( dxSpacing .NE. UNSET_RL ) goptCount = goptCount + 1
1268 IF ( delXFile .NE. ' ' ) goptCount = goptCount + 1
1269 IF ( goptCount.GT.1 ) THEN
b9306711eb Jean*1270 WRITE(msgBuf,'(A,A)') 'Too many specifications for delX:',
9bec0e0933 Alis*1271 & 'Specify only one of delX, dxSpacing or delXfile'
b9306711eb Jean*1272 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1273 errCount = errCount + 1
9bec0e0933 Alis*1274 ENDIF
0127add478 Alis*1275 IF ( dxSpacing .NE. UNSET_RL ) THEN
b9b591469d Jean*1276 DO i=1,gridNx
0127add478 Alis*1277 delX(i) = dxSpacing
1278 ENDDO
1279 ENDIF
f76021331f Jean*1280
1281 goptCount = 0
1282 IF ( delY(1) .NE. UNSET_RL ) goptCount = goptCount + 1
1283 IF ( dySpacing .NE. UNSET_RL ) goptCount = goptCount + 1
1284 IF ( delYFile .NE. ' ' ) goptCount = goptCount + 1
1285 IF ( goptCount.GT.1 ) THEN
b9306711eb Jean*1286 WRITE(msgBuf,'(A,A)') 'Too many specifications for delY:',
9bec0e0933 Alis*1287 & 'Specify only one of delY, dySpacing or delYfile'
b9306711eb Jean*1288 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1289 errCount = errCount + 1
9bec0e0933 Alis*1290 ENDIF
0127add478 Alis*1291 IF ( dySpacing .NE. UNSET_RL ) THEN
b9b591469d Jean*1292 DO j=1,gridNy
f76021331f Jean*1293 delY(j) = dySpacing
0127add478 Alis*1294 ENDDO
1295 ENDIF
2c7e43108f Jean*1296
910f05e765 Chri*1297
924557e60a Chri*1298 goptCount = 0
1299 IF ( usingCartesianGrid ) goptCount = goptCount+1
1300 IF ( usingSphericalPolarGrid ) goptCount = goptCount+1
aea29c8517 Alis*1301 IF ( usingCurvilinearGrid ) goptCount = goptCount+1
0ac260a803 Andr*1302 IF ( usingCylindricalGrid ) goptCount = goptCount+1
aea29c8517 Alis*1303 IF ( goptCount .GT. 1 ) THEN
924557e60a Chri*1304 WRITE(msgBuf,'(A)')
1305 & 'S/R INI_PARMS: More than one coordinate system requested'
b9306711eb Jean*1306 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1307 errCount = errCount + 1
924557e60a Chri*1308 ENDIF
aea29c8517 Alis*1309 IF ( goptCount .LT. 1 ) THEN
f2459ca318 Jean*1310
aea29c8517 Alis*1311 WRITE(msgBuf,'(A)')
f2459ca318 Jean*1312 & 'S/R INI_PARMS: No horizontal grid requested'
1313 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
b9306711eb Jean*1314 & SQUEEZE_RIGHT, myThid )
f2459ca318 Jean*1315 WRITE(msgBuf,'(A)')
1316 & 'S/R INI_PARMS: => Use Cartesian Grid as default'
1317 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
b9306711eb Jean*1318 & SQUEEZE_RIGHT, myThid )
f2459ca318 Jean*1319 usingCartesianGrid = .TRUE.
aea29c8517 Alis*1320 ENDIF
9744e36521 Jean*1321
1322 IF ( rSphere.EQ.UNSET_RL ) THEN
1323 IF ( usingCurvilinearGrid .AND.
1324 & radius_fromHorizGrid.NE.UNSET_RL ) THEN
1325 rSphere = radius_fromHorizGrid
1326 ELSE
1327 rSphere = 6370. _d 3
1328 ENDIF
1329 ENDIF
1330 IF ( radius_fromHorizGrid.EQ.UNSET_RL ) THEN
1331 radius_fromHorizGrid = rSphere
1332 ENDIF
1333 IF ( rSphere .NE. 0. ) THEN
1334 recip_rSphere = 1. _d 0/rSphere
1335 ELSE
1336 recip_rSphere = 0.
1337 ENDIF
427e24e121 Jean*1338
1339 IF ( phiEuler .NE. 0. _d 0 .OR. thetaEuler .NE. 0. _d 0
1340 & .OR. psiEuler .NE. 0. _d 0 ) rotateGrid = .TRUE.
1341
2ad79bdf32 Jean*1342
1343 IF ( Ro_SeaLevel .NE. UNSET_RL ) THEN
1344 IF ( usingPCoords .AND. top_Pres.NE.UNSET_RL ) THEN
ef7fa20135 Jean*1345 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: ',
1346 & 'Cannot set both "Ro_SeaLevel" and "top_Pres"'
1347 CALL PRINT_ERROR( msgBuf, myThid )
1348 errCount = errCount + 1
2ad79bdf32 Jean*1349 ENDIF
1350 IF ( usingZCoords .AND. seaLev_Z.NE.UNSET_RL ) THEN
ef7fa20135 Jean*1351 WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: ',
1352 & 'Cannot set both "Ro_SeaLevel" and "seaLev_Z"'
1353 CALL PRINT_ERROR( msgBuf, myThid )
1354 errCount = errCount + 1
2ad79bdf32 Jean*1355 ENDIF
1356 rF(1) = Ro_SeaLevel
1357 ELSE
1358 rF(1) = UNSET_RS
1359 ENDIF
1360 IF ( top_Pres.EQ.UNSET_RL ) top_Pres = 0.
1361 IF ( seaLev_Z.EQ.UNSET_RL ) seaLev_Z = 0.
9780090eaa Jean*1362
1363 IF ( xgOrigin .EQ. UNSET_RL ) xgOrigin = 0.
1364 IF ( ygOrigin .EQ. UNSET_RL ) THEN
1365 IF ( usingSphericalPolarGrid ) THEN
1366 ygOrigin = 0.
1367 ELSEIF ( usingCartesianGrid ) THEN
1368 ygOrigin = 0.
1369 ELSEIF ( usingCylindricalGrid ) THEN
1370 ygOrigin = 0.
1371 ELSEIF ( usingCurvilinearGrid ) THEN
1372 ygOrigin = 0.
1373 ELSE
1374 WRITE(msgBuf,'(A)')
1375 & 'S/R INI_PARMS: found no coordinate system to set ygOrigin'
1376 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1377 errCount = errCount + 1
9780090eaa Jean*1378 ENDIF
1379 ENDIF
7fbd8d8c1c Jean*1380
c28ce1627a Jean*1381
1382 setCenterDr = .FALSE.
7cd7754949 Jean*1383 DO k=1,Nr+1
1384 IF ( delRc(k).EQ.UNSET_RL ) THEN
b9306711eb Jean*1385 IF ( setCenterDr ) THEN
1386 WRITE(msgBuf,'(A,I4)')
7cd7754949 Jean*1387 & 'S/R INI_PARMS: No value for delRc at k =', k
b9306711eb Jean*1388 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1389 errCount = errCount + 1
b9306711eb Jean*1390 ENDIF
1391 ELSE
1392 IF ( k.EQ.1 ) setCenterDr = .TRUE.
1393 IF ( .NOT.setCenterDr ) THEN
1394 WRITE(msgBuf,'(A,I4)')
7cd7754949 Jean*1395 & 'S/R INI_PARMS: No value for delRc at k <', k
b9306711eb Jean*1396 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1397 errCount = errCount + 1
b9306711eb Jean*1398 ENDIF
1399 ENDIF
c28ce1627a Jean*1400 ENDDO
b9306711eb Jean*1401 IF ( setCenterDr ) rCoordInputData = .TRUE.
910f05e765 Chri*1402
b9306711eb Jean*1403 setInterFDr = .FALSE.
7cd7754949 Jean*1404 DO k = 1, Nr
1405 IF ( delZ(k) .NE. UNSET_RL ) zCoordInputData = .TRUE.
1406 IF ( delP(k) .NE. UNSET_RL ) pCoordInputData = .TRUE.
1407 IF ( delR(k) .NE. UNSET_RL ) rCoordInputData = .TRUE.
1408 IF ( delR(k) .EQ. UNSET_RL ) delR(k) = delZ(k)
1409 IF ( delR(k) .EQ. UNSET_RL ) delR(k) = delP(k)
1410 IF ( delR(k) .EQ. UNSET_RL ) THEN
b9306711eb Jean*1411 IF ( setInterFDr ) THEN
88830be691 Alis*1412 WRITE(msgBuf,'(A,I4)')
7cd7754949 Jean*1413 & 'S/R INI_PARMS: No value for delZ/delP/delR at k =', k
b9306711eb Jean*1414 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1415 errCount = errCount + 1
b9306711eb Jean*1416 ENDIF
1417 ELSE
1418 IF ( k.EQ.1 ) setInterFDr = .TRUE.
1419 IF ( .NOT.setInterFDr ) THEN
1420 WRITE(msgBuf,'(A,I4)')
7cd7754949 Jean*1421 & 'S/R INI_PARMS: No value for delZ/delP/delR at k <', k
b9306711eb Jean*1422 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1423 errCount = errCount + 1
b9306711eb Jean*1424 ENDIF
88830be691 Alis*1425 ENDIF
910f05e765 Chri*1426 ENDDO
1427
b9306711eb Jean*1428 coordsSet = 0
910f05e765 Chri*1429 IF ( zCoordInputData ) coordsSet = coordsSet + 1
1430 IF ( pCoordInputData ) coordsSet = coordsSet + 1
1431 IF ( rCoordInputData ) coordsSet = coordsSet + 1
1432 IF ( coordsSet .GT. 1 ) THEN
1433 WRITE(msgBuf,'(A)')
1434 & 'S/R INI_PARMS: Cannot mix z, p and r in the input data.'
b9306711eb Jean*1435 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1436 errCount = errCount + 1
910f05e765 Chri*1437 ENDIF
b9306711eb Jean*1438
1439 IF ( delRcFile.NE.' ' ) THEN
1440 IF ( setCenterDr ) THEN
1441 WRITE(msgBuf,'(A)')
1442 & 'S/R INI_PARMS: Cannot set both delRc and delRcFile'
1443 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1444 errCount = errCount + 1
b9306711eb Jean*1445 ENDIF
1446 setCenterDr = .TRUE.
1447 ENDIF
1448 IF ( delRFile.NE.' ' ) THEN
1449 IF ( setInterFDr ) THEN
1450 WRITE(msgBuf,'(A)')
1451 & 'S/R INI_PARMS: Cannot set both delR and delRFile'
1452 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1453 errCount = errCount + 1
b9306711eb Jean*1454 ENDIF
1455 setInterFDr = .TRUE.
1456 ENDIF
b05b067368 Chri*1457
81bc00c2f0 Chri*1458
aa8f58c33d Jean*1459 WRITE(msgBuf,'(A)') ' INI_PARMS ; starts to read PARM05'
6b6f69d6b0 Jean*1460 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*1461 & SQUEEZE_RIGHT, myThid )
88830be691 Alis*1462 READ(UNIT=iUnit,NML=PARM05)
809bdccbfc Jean*1463 IF ( errIO .LT. 0 ) THEN
81bc00c2f0 Chri*1464 WRITE(msgBuf,'(A)')
aa8f58c33d Jean*1465 & 'S/R INI_PARMS: Error reading model parameter file "data"'
b9306711eb Jean*1466 CALL PRINT_ERROR( msgBuf, myThid )
aa8f58c33d Jean*1467 WRITE(msgBuf,'(A)') 'S/R INI_PARMS: Problem in namelist PARM05'
b9306711eb Jean*1468 CALL PRINT_ERROR( msgBuf, myThid )
81bc00c2f0 Chri*1469 STOP 'ABNORMAL END: S/R INI_PARMS'
41f1ac6de1 Jean*1470 ELSE
aa8f58c33d Jean*1471 WRITE(msgBuf,'(A)') ' INI_PARMS ; read PARM05 : OK'
41f1ac6de1 Jean*1472 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
b9306711eb Jean*1473 & SQUEEZE_RIGHT, myThid )
809bdccbfc Jean*1474 ENDIF
8194bc4a99 Mart*1475
1476 IF ( shelfIceFile .NE. ' ' ) THEN
1477 nRetired = nRetired+1
1478 WRITE(msgBuf,'(A,A)')
1479 & 'S/R INI_PARMS: "shelfIceFile" is not allowed in "data", ',
1480 & 'substitute "SHELFICEtopoFile" in data.shelfice'
1481 CALL PRINT_ERROR( msgBuf, myThid )
1482 ENDIF
275ad78b78 Jean*1483 IF ( dQdTFile .NE. ' ' ) THEN
1484 nRetired = nRetired+1
1485 WRITE(msgBuf,'(A,A)')
1486 & 'S/R INI_PARMS: "dQdTFile" has been retired from file "data"'
1487 CALL PRINT_ERROR( msgBuf, myThid )
1488 ENDIF
cbc417d429 Mart*1489
1490 IF (mdsioLocalDir .NE. ' ' .AND. adTapeDir .NE. ' ') THEN
1491 WRITE(msgBuf,'(A)')
1492 & 'S/R INI_PARMS: mdsioLocalDir and adTapeDir cannot be'
1493 CALL PRINT_ERROR( msgBuf, myThid )
1494 WRITE(msgBuf,'(A)')
1495 & 'S/R INI_PARMS: specified at the same time'
1496 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1497 errCount = errCount + 1
cbc417d429 Mart*1498 ENDIF
81bc00c2f0 Chri*1499
7b50f71112 Gael*1500
1501 IF ( (tauThetaClimRelax.GT.0.).AND.
1502 & (thetaClimFile.EQ.' ') ) THEN
1503 WRITE(msgBuf,'(A)')
1504 & 'S/R INI_PARMS: tauThetaClimRelax > 0 but'
1505 CALL PRINT_ERROR( msgBuf, myThid )
1506 WRITE(msgBuf,'(A)')
1507 & 'S/R INI_PARMS: thetaClimFile is undefined'
1508 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1509 errCount = errCount + 1
7b50f71112 Gael*1510 ENDIF
1511 IF ( (tauSaltClimRelax.GT.0.).AND.
1512 & (saltClimFile.EQ.' ') ) THEN
1513 WRITE(msgBuf,'(A)')
1514 & 'S/R INI_PARMS: tauSaltClimRelax > 0 but'
1515 CALL PRINT_ERROR( msgBuf, myThid )
1516 WRITE(msgBuf,'(A)')
1517 & 'S/R INI_PARMS: saltClimFile is undefined'
1518 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1519 errCount = errCount + 1
7b50f71112 Gael*1520 ENDIF
13b4d13c98 Jean*1521
1522 #ifdef ALLOW_3D_DIFFKR
1523 IF ( specifiedDiffKrT ) THEN
3fcdbd6e66 Jean*1524 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: Ignores diffKr',
1525 & 'T (or Kp,Kz) setting in file "data" with ALLOW_3D_DIFFKR'
1526 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1527 & SQUEEZE_RIGHT, myThid )
13b4d13c98 Jean*1528 ENDIF
1529 IF ( specifiedDiffKrS .AND. diffKrFile.NE.' ' ) THEN
3fcdbd6e66 Jean*1530 WRITE(msgBuf,'(2A)') '** WARNING ** INI_PARMS: Ignores diffKr',
1531 & 'S (or Kp,Kz) setting in file "data" and uses diffKrFile'
1532 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1533 & SQUEEZE_RIGHT, myThid )
13b4d13c98 Jean*1534 ENDIF
1535 #endif
7b50f71112 Gael*1536
599be48d9a Jean*1537
1538
427e24e121 Jean*1539
1540
e99e7fe4e6 Jean*1541 IF ( usingPCoords ) THEN
599be48d9a Jean*1542 mass2rUnit = gravity
1543 rUnit2mass = recip_gravity
1544 ELSE
1545 mass2rUnit = recip_rhoConst
1546 rUnit2mass = rhoConst
9800a0be87 Jean*1547 ENDIF
688d11fba8 Alis*1548
80d98e0151 Dimi*1549
b46f9da188 Jean*1550
80d98e0151 Dimi*1551 IF (temp_addMass .EQ. UNSET_RL) temp_addMass = temp_EvPrRn
1552 IF (salt_addMass .EQ. UNSET_RL) salt_addMass = salt_EvPrRn
1553
b46f9da188 Jean*1554
1555
1556
1557 IF ( cg2dUseMinResSol.EQ.UNSET_I ) THEN
1558 cg2dUseMinResSol = 0
1559 IF ( topoFile.EQ.' ' .AND. bathyFile.EQ.' '
1560 & .AND. usingCartesianGrid ) cg2dUseMinResSol = 1
1561 ENDIF
1562
aa8f58c33d Jean*1563
a6485b3244 Mart*1564 #ifdef SINGLE_DISK_IO
9ba4d7e4bd Chri*1565 CLOSE(iUnit)
a6485b3244 Mart*1566 #else
1567 CLOSE(iUnit,STATUS='DELETE')
1568 #endif /* SINGLE_DISK_IO */
9ba4d7e4bd Chri*1569
aa8f58c33d Jean*1570 WRITE(msgBuf,'(A)') ' INI_PARMS: finished reading file "data"'
1571 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1572 & SQUEEZE_RIGHT , myThid )
1573
ede2cfe569 Chri*1574
46979d29da Jean*1575 IF ( nRetired .GT. 0 ) THEN
ede2cfe569 Chri*1576 WRITE(msgBuf,'(A)')
90aed06079 Jean*1577 & 'S/R INI_PARMS: Error reading parameter file "data":'
b9306711eb Jean*1578 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1579 WRITE(msgBuf,'(I4,A)') nRetired,
1580 & ' out of date parameters were found in the namelist'
b9306711eb Jean*1581 CALL PRINT_ERROR( msgBuf, myThid )
90aed06079 Jean*1582 errCount = errCount + 1
1583 ENDIF
1584
1585 IF ( errCount .GE. 1 ) THEN
1586 WRITE(msgBuf,'(A,I3,A)')
1587 & 'S/R INI_PARMS: detected', errCount,' fatal error(s)'
1588 CALL PRINT_ERROR( msgBuf, myThid )
1589 CALL ALL_PROC_DIE( 0 )
1590 STOP 'ABNORMAL END: S/R INI_PARMS'
ede2cfe569 Chri*1591 ENDIF
1592
924557e60a Chri*1593 _END_MASTER(myThid)
1594
1595
1596 _BARRIER
2c7e43108f Jean*1597
924557e60a Chri*1598 RETURN
1599 END