| 88 |
C :: used. coordsSet counts how many vertical coordinate systems have been |
C :: used. coordsSet counts how many vertical coordinate systems have been |
| 89 |
C used to specify variables. coordsSet > 1 is an error. |
C used to specify variables. coordsSet > 1 is an error. |
| 90 |
C |
C |
| 91 |
|
|
| 92 |
LOGICAL zCoordInputData |
LOGICAL zCoordInputData |
| 93 |
LOGICAL pCoordInputData |
LOGICAL pCoordInputData |
| 94 |
LOGICAL rCoordInputData |
LOGICAL rCoordInputData |
| 95 |
INTEGER coordsSet |
INTEGER coordsSet |
| 96 |
|
|
| 97 |
|
C Variables which have vertical coordinate system dependency. |
| 98 |
|
C delZ :: Vertical grid spacing ( m ). |
| 99 |
|
C delP :: Vertical grid spacing ( Pa ). |
| 100 |
|
C viscAz :: Eddy viscosity coeff. for mixing of |
| 101 |
|
C momentum vertically ( m^2/s ) |
| 102 |
|
C viscAp :: Eddy viscosity coeff. for mixing of |
| 103 |
|
C momentum vertically ( Pa^2/s ) |
| 104 |
|
C diffKzT :: Laplacian diffusion coeff. for mixing of |
| 105 |
|
C heat vertically ( m^2/s ) |
| 106 |
|
C diffKpT :: Laplacian diffusion coeff. for mixing of |
| 107 |
|
C heat vertically ( Pa^2/s ) |
| 108 |
|
C diffKzS :: Laplacian diffusion coeff. for mixing of |
| 109 |
|
C salt vertically ( m^2/s ) |
| 110 |
|
C diffKpS :: Laplacian diffusion coeff. for mixing of |
| 111 |
|
C salt vertically ( Pa^2/s ) |
| 112 |
|
_RL delZ(Nr) |
| 113 |
|
_RL delP(Nr) |
| 114 |
|
_RL viscAz |
| 115 |
|
_RL viscAp |
| 116 |
|
_RL diffKzT |
| 117 |
|
_RL diffKpT |
| 118 |
|
_RL diffKzS |
| 119 |
|
_RL diffKpS |
| 120 |
|
|
| 121 |
C Retired main data file parameters. Kept here to trap use of old data files. |
C Retired main data file parameters. Kept here to trap use of old data files. |
| 122 |
C zonal_filt_lat - Moved to package "zonal_filt" |
C zonal_filt_lat - Moved to package "zonal_filt" |
| 123 |
C nRetired :: Counter used to trap gracefully namelists containing "retired" |
C nRetired :: Counter used to trap gracefully namelists containing "retired" |
| 130 |
C-- Continuous equation parameters |
C-- Continuous equation parameters |
| 131 |
NAMELIST /PARM01/ |
NAMELIST /PARM01/ |
| 132 |
& gravitySign, |
& gravitySign, |
| 133 |
& gravity, gBaro, rhonil, tAlpha, sBeta, f0, beta, omega, |
& gravity, gBaro, rhonil, tAlpha, sBeta, |
| 134 |
& viscAh, viscAz, viscA4, cosPower, viscAstrain, viscAtension, |
& f0, beta, omega, rotationPeriod, |
| 135 |
|
& viscAh, viscAhMax, viscAhGrid, viscC2leith, |
| 136 |
|
& viscA4, viscA4Max, viscA4Grid, viscC4leith, |
| 137 |
|
& viscAz, cosPower, viscAstrain, viscAtension, |
| 138 |
& diffKhT, diffKzT, diffK4T, |
& diffKhT, diffKzT, diffK4T, |
| 139 |
& diffKhS, diffKzS, diffK4S, |
& diffKhS, diffKzS, diffK4S, |
| 140 |
& tRef, sRef, eosType, integr_GeoPot, selectFindRoSurf, |
& tRef, sRef, eosType, integr_GeoPot, selectFindRoSurf, |
| 141 |
& atm_Cp, atm_Rd, |
& atm_Cp, atm_Rd, atm_Rq, |
| 142 |
& no_slip_sides,no_slip_bottom, |
& no_slip_sides,no_slip_bottom, |
| 143 |
& momViscosity, momAdvection, momForcing, useCoriolis, |
& momViscosity, momAdvection, momForcing, useCoriolis, |
| 144 |
& momPressureForcing, metricTerms, vectorInvariantMomentum, |
& momPressureForcing, metricTerms, vectorInvariantMomentum, |
| 147 |
& implicSurfPress, implicDiv2DFlow, |
& implicSurfPress, implicDiv2DFlow, |
| 148 |
& implicitFreeSurface, rigidLid, freeSurfFac, hFacMin, hFacMinDz, |
& implicitFreeSurface, rigidLid, freeSurfFac, hFacMin, hFacMinDz, |
| 149 |
& exactConserv,uniformLin_PhiSurf,nonlinFreeSurf,hFacInf,hFacSup, |
& exactConserv,uniformLin_PhiSurf,nonlinFreeSurf,hFacInf,hFacSup, |
| 150 |
|
& select_rStar, |
| 151 |
& staggerTimeStep, |
& staggerTimeStep, |
| 152 |
& tempStepping, saltStepping, momStepping, tr1Stepping, |
& tempStepping, saltStepping, momStepping, tr1Stepping, |
| 153 |
& implicitDiffusion, implicitViscosity, |
& implicitDiffusion, implicitViscosity, |
| 154 |
|
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv, |
| 155 |
& viscAr, diffKrT, diffKrS, hFacMinDr, |
& viscAr, diffKrT, diffKrS, hFacMinDr, |
| 156 |
& viscAp, diffKpT, diffKpS, hFacMinDp, |
& viscAp, diffKpT, diffKpS, hFacMinDp, |
| 157 |
|
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho, |
| 158 |
& rhoConst, rhoConstFresh, buoyancyRelation, HeatCapacity_Cp, |
& rhoConst, rhoConstFresh, buoyancyRelation, HeatCapacity_Cp, |
| 159 |
& writeBinaryPrec, readBinaryPrec, writeStatePrec, |
& writeBinaryPrec, readBinaryPrec, writeStatePrec, |
| 160 |
& nonHydrostatic, quasiHydrostatic, globalFiles, |
& nonHydrostatic, quasiHydrostatic, globalFiles, useSingleCpuIO, |
| 161 |
& allowFreezing, ivdc_kappa, |
& allowFreezing, useOldFreezing, ivdc_kappa, |
| 162 |
& bottomDragLinear,bottomDragQuadratic, |
& bottomDragLinear,bottomDragQuadratic, |
| 163 |
& usePickupBeforeC35, debugMode, |
& usePickupBeforeC35, debugMode, debugLevel, |
| 164 |
& readPickupWithTracer, writePickupWithTracer, |
& readPickupWithTracer, writePickupWithTracer, |
| 165 |
& tempAdvScheme, saltAdvScheme, tracerAdvScheme, |
& tempAdvScheme, saltAdvScheme, tracerAdvScheme, |
| 166 |
& multiDimAdvection, useEnergyConservingCoriolis, |
& multiDimAdvection, useEnergyConservingCoriolis, |
| 167 |
& useJamartWetPoints, useNHMTerms, |
& useCDscheme, useJamartWetPoints, useJamartMomAdv, useNHMTerms, |
| 168 |
|
& SadournyCoriolis, upwindVorticity, highOrderVorticity, |
| 169 |
|
& useAbsVorticity, |
| 170 |
& useRealFreshWaterFlux, convertFW2Salt, |
& useRealFreshWaterFlux, convertFW2Salt, |
| 171 |
& temp_EvPrRn, salt_EvPrRn, trac_EvPrRn, |
& temp_EvPrRn, salt_EvPrRn, trac_EvPrRn, |
| 172 |
& zonal_filt_lat |
& zonal_filt_lat |
| 179 |
|
|
| 180 |
C-- Time stepping parammeters |
C-- Time stepping parammeters |
| 181 |
NAMELIST /PARM03/ |
NAMELIST /PARM03/ |
| 182 |
& nIter0, nTimeSteps, nEndIter, |
& nIter0, nTimeSteps, nEndIter, pickupSuff, |
| 183 |
& deltaT, deltaTmom, deltaTtracer, deltaTfreesurf, |
& deltaT, deltaTmom, deltaTtracer, deltaTfreesurf, |
| 184 |
& forcing_In_AB, abEps, tauCD, rCD, |
& forcing_In_AB, abEps, tauCD, rCD, |
| 185 |
& startTime, endTime, chkPtFreq, |
& startTime, endTime, chkPtFreq, |
| 186 |
& dumpFreq, taveFreq, tave_lastIter, deltaTClock, diagFreq, |
& dumpFreq, adjDumpFreq, taveFreq, tave_lastIter, deltaTClock, |
| 187 |
& monitorFreq, pChkPtFreq, cAdjFreq, |
& diagFreq, monitorFreq, pChkPtFreq, cAdjFreq, |
| 188 |
& tauThetaClimRelax, tauSaltClimRelax, tauTr1ClimRelax, |
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax, |
| 189 |
|
& tauTr1ClimRelax, |
| 190 |
& periodicExternalForcing, externForcingPeriod, externForcingCycle |
& periodicExternalForcing, externForcingPeriod, externForcingCycle |
| 191 |
|
|
| 192 |
C-- Gridding parameters |
C-- Gridding parameters |
| 193 |
NAMELIST /PARM04/ |
NAMELIST /PARM04/ |
| 194 |
& usingCartesianGrid, dxSpacing, dySpacing, delX, delY, delZ, |
& usingCartesianGrid, dxSpacing, dySpacing, delX, delY, delZ, |
| 195 |
& usingSphericalPolarGrid, phiMin, thetaMin, rSphere, |
& usingSphericalPolarGrid, phiMin, thetaMin, rSphere, |
| 196 |
& usingCurvilinearGrid, bUseCylindricalGrid, |
& usingCurvilinearGrid,usingCylindricalGrid, |
| 197 |
& delP, delR, rkFac, Ro_SeaLevel, groundAtK1, delRc, |
& delP, delR, rkFac, Ro_SeaLevel, groundAtK1, delRc, |
| 198 |
& delXfile, delYfile |
& delXfile, delYfile |
| 199 |
|
|
| 204 |
& thetaClimFile, saltClimFile, |
& thetaClimFile, saltClimFile, |
| 205 |
& surfQfile, EmPmRfile, surfQswfile, |
& surfQfile, EmPmRfile, surfQswfile, |
| 206 |
& uVelInitFile, vVelInitFile, pSurfInitFile, |
& uVelInitFile, vVelInitFile, pSurfInitFile, |
| 207 |
& dQdTFile, ploadFile, tCyl |
& dQdTFile, ploadFile,tCyl, |
| 208 |
|
& mdsioLocalDir |
| 209 |
|
|
| 210 |
C |
C |
| 211 |
_BEGIN_MASTER(myThid) |
_BEGIN_MASTER(myThid) |
| 227 |
C-- Iniialise retired parameters to unlikely value |
C-- Iniialise retired parameters to unlikely value |
| 228 |
nRetired = 0 |
nRetired = 0 |
| 229 |
zonal_filt_lat = UNSET_RL |
zonal_filt_lat = UNSET_RL |
| 230 |
|
gravitySign = UNSET_RL |
| 231 |
|
|
| 232 |
C-- Open the parameter file |
C-- Open the parameter file |
| 233 |
OPEN(UNIT=scrUnit1,STATUS='SCRATCH') |
OPEN(UNIT=scrUnit1,STATUS='SCRATCH') |
| 251 |
DO WHILE ( .TRUE. ) |
DO WHILE ( .TRUE. ) |
| 252 |
READ(modelDataUnit,FMT='(A)',END=1001) RECORD |
READ(modelDataUnit,FMT='(A)',END=1001) RECORD |
| 253 |
IL = MAX(ILNBLNK(RECORD),1) |
IL = MAX(ILNBLNK(RECORD),1) |
| 254 |
IF ( RECORD(1:1) .NE. commentCharacter ) |
IF ( RECORD(1:1) .NE. commentCharacter ) THEN |
| 255 |
& WRITE(UNIT=scrUnit1,FMT='(A)') RECORD(:IL) |
CALL NML_SET_TERMINATOR( RECORD ) |
| 256 |
WRITE(UNIT=scrUnit2,FMT='(A)') RECORD(:IL) |
WRITE(UNIT=scrUnit1,FMT='(A)') RECORD(:IL) |
| 257 |
|
ENDIF |
| 258 |
|
WRITE(UNIT=scrUnit2,FMT='(A)') RECORD(:IL) |
| 259 |
ENDDO |
ENDDO |
| 260 |
1001 CONTINUE |
1001 CONTINUE |
| 261 |
CLOSE(modelDataUnit) |
CLOSE(modelDataUnit) |
| 304 |
diffKrS = UNSET_RL |
diffKrS = UNSET_RL |
| 305 |
gBaro = UNSET_RL |
gBaro = UNSET_RL |
| 306 |
rhoConst = UNSET_RL |
rhoConst = UNSET_RL |
| 307 |
|
omega = UNSET_RL |
| 308 |
hFacMinDr = UNSET_RL |
hFacMinDr = UNSET_RL |
| 309 |
hFacMinDz = UNSET_RL |
hFacMinDz = UNSET_RL |
| 310 |
hFacMinDp = UNSET_RL |
hFacMinDp = UNSET_RL |
| 311 |
|
rhoConstFresh = UNSET_RL |
| 312 |
convertFW2Salt = UNSET_RL |
convertFW2Salt = UNSET_RL |
| 313 |
tAlpha = UNSET_RL |
tAlpha = UNSET_RL |
| 314 |
sBeta = UNSET_RL |
sBeta = UNSET_RL |
| 338 |
IF ( rigidLid ) freeSurfFac = 0.D0 |
IF ( rigidLid ) freeSurfFac = 0.D0 |
| 339 |
IF ( gBaro .EQ. UNSET_RL ) gBaro=gravity |
IF ( gBaro .EQ. UNSET_RL ) gBaro=gravity |
| 340 |
IF ( rhoConst .EQ. UNSET_RL ) rhoConst=rhoNil |
IF ( rhoConst .EQ. UNSET_RL ) rhoConst=rhoNil |
| 341 |
|
IF ( rhoConstFresh .EQ. UNSET_RL ) rhoConstFresh=rhoConst |
| 342 |
|
IF ( omega .EQ. UNSET_RL ) THEN |
| 343 |
|
omega = 0. _d 0 |
| 344 |
|
IF ( rotationPeriod .NE. 0. _d 0 ) |
| 345 |
|
& omega = 2.D0 * PI / rotationPeriod |
| 346 |
|
ELSEIF ( omega .EQ. 0. _d 0 ) THEN |
| 347 |
|
rotationPeriod = 0. _d 0 |
| 348 |
|
ELSE |
| 349 |
|
rotationPeriod = 2.D0 * PI / omega |
| 350 |
|
ENDIF |
| 351 |
IF (atm_Rd .EQ. UNSET_RL) THEN |
IF (atm_Rd .EQ. UNSET_RL) THEN |
| 352 |
atm_Rd = atm_Cp * atm_kappa |
atm_Rd = atm_Cp * atm_kappa |
| 353 |
ELSE |
ELSE |
| 354 |
atm_kappa = atm_Rd / atm_Cp |
atm_kappa = atm_Rd / atm_Cp |
| 355 |
ENDIF |
ENDIF |
| 356 |
|
C-- On/Off flags for each terms of the momentum equation |
| 357 |
|
nonHydrostatic = momStepping .AND. nonHydrostatic |
| 358 |
|
quasiHydrostatic = momStepping .AND. quasiHydrostatic |
| 359 |
|
momAdvection = momStepping .AND. momAdvection |
| 360 |
|
momViscosity = momStepping .AND. momViscosity |
| 361 |
|
momForcing = momStepping .AND. momForcing |
| 362 |
|
useCoriolis = momStepping .AND. useCoriolis |
| 363 |
|
useCDscheme = momStepping .AND. useCDscheme |
| 364 |
|
momPressureForcing= momStepping .AND. momPressureForcing |
| 365 |
|
momImplVertAdv = momAdvection .AND. momImplVertAdv |
| 366 |
|
implicitViscosity= momViscosity .AND. implicitViscosity |
| 367 |
C-- Momentum viscosity on/off flag. |
C-- Momentum viscosity on/off flag. |
| 368 |
IF ( momViscosity ) THEN |
IF ( momViscosity ) THEN |
| 369 |
vfFacMom = 1.D0 |
vfFacMom = 1.D0 |
| 412 |
tempForcing = tempStepping .AND. tempForcing |
tempForcing = tempStepping .AND. tempForcing |
| 413 |
saltAdvection = saltStepping .AND. saltAdvection |
saltAdvection = saltStepping .AND. saltAdvection |
| 414 |
saltForcing = saltStepping .AND. saltForcing |
saltForcing = saltStepping .AND. saltForcing |
| 415 |
|
tempImplVertAdv = tempAdvection .AND. tempImplVertAdv |
| 416 |
|
saltImplVertAdv = saltAdvection .AND. saltImplVertAdv |
| 417 |
C-- z,p,r coord input switching. |
C-- z,p,r coord input switching. |
| 418 |
IF ( viscAz .NE. UNSET_RL ) zCoordInputData = .TRUE. |
IF ( viscAz .NE. UNSET_RL ) zCoordInputData = .TRUE. |
| 419 |
IF ( viscAp .NE. UNSET_RL ) pCoordInputData = .TRUE. |
IF ( viscAp .NE. UNSET_RL ) pCoordInputData = .TRUE. |
| 498 |
ELSE |
ELSE |
| 499 |
recip_gravity = 1.D0 / gravity |
recip_gravity = 1.D0 / gravity |
| 500 |
ENDIF |
ENDIF |
| 501 |
|
C This flags are now passed to RW and MDSIO packages in ini_model_io.F |
| 502 |
C Set globalFiles flag for READ_WRITE_FLD package |
C Set globalFiles flag for READ_WRITE_FLD package |
| 503 |
CALL SET_WRITE_GLOBAL_FLD( globalFiles ) |
c CALL SET_WRITE_GLOBAL_FLD( globalFiles ) |
| 504 |
C Set globalFiles flag for READ_WRITE_REC package |
C Set globalFiles flag for READ_WRITE_REC package |
| 505 |
CALL SET_WRITE_GLOBAL_REC( globalFiles ) |
c CALL SET_WRITE_GLOBAL_REC( globalFiles ) |
| 506 |
C Set globalFiles flag for READ_WRITE_REC package |
C Set globalFiles flag for READ_WRITE_REC package |
| 507 |
CALL SET_WRITE_GLOBAL_PICKUP( globalFiles ) |
c CALL SET_WRITE_GLOBAL_PICKUP( globalFiles ) |
| 508 |
|
|
| 509 |
C Check for retired parameters still being used |
C Check for retired parameters still being used |
| 510 |
nRetired = 0 |
nRetired = 0 |
| 519 |
& ' now read from file "data.zonfilt".' |
& ' now read from file "data.zonfilt".' |
| 520 |
CALL PRINT_ERROR( msgBuf , myThid) |
CALL PRINT_ERROR( msgBuf , myThid) |
| 521 |
ENDIF |
ENDIF |
| 522 |
|
IF ( gravitySign .NE. UNSET_RL ) THEN |
| 523 |
|
nRetired = nRetired+1 |
| 524 |
|
WRITE(msgBuf,'(A,A)') |
| 525 |
|
& 'S/R INI_PARMS: "gravitySign" is set according to vertical ', |
| 526 |
|
& ' coordinate and is no longer allowed in file "data".' |
| 527 |
|
CALL PRINT_ERROR( msgBuf , myThid) |
| 528 |
|
ENDIF |
| 529 |
|
|
| 530 |
C-- Elliptic solver parameters |
C-- Elliptic solver parameters |
| 531 |
READ(UNIT=iUnit,NML=PARM02) !,IOSTAT=errIO) |
READ(UNIT=iUnit,NML=PARM02) !,IOSTAT=errIO) |
| 552 |
|
|
| 553 |
C-- Time stepping parameters |
C-- Time stepping parameters |
| 554 |
rCD = -1.D0 |
rCD = -1.D0 |
| 555 |
|
latBandClimRelax = UNSET_RL |
| 556 |
READ(UNIT=iUnit,NML=PARM03) !,IOSTAT=errIO) |
READ(UNIT=iUnit,NML=PARM03) !,IOSTAT=errIO) |
| 557 |
IF ( errIO .LT. 0 ) THEN |
IF ( errIO .LT. 0 ) THEN |
| 558 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
| 625 |
CALL PRINT_ERROR( msgBuf , myThid) |
CALL PRINT_ERROR( msgBuf , myThid) |
| 626 |
STOP 'ABNORMAL END: S/R INI_PARMS' |
STOP 'ABNORMAL END: S/R INI_PARMS' |
| 627 |
ENDIF |
ENDIF |
| 628 |
C o CD coupling |
IF (useCDscheme) THEN |
| 629 |
IF ( tauCD .EQ. 0.D0 ) THEN |
C o CD coupling (CD scheme): |
| 630 |
tauCD = deltaTmom |
IF ( tauCD .EQ. 0.D0 ) tauCD = deltaTmom |
| 631 |
ENDIF |
IF ( rCD .LT. 0. ) rCD = 1. _d 0 - deltaTMom/tauCD |
|
IF ( rCD .LT. 0. ) THEN |
|
|
rCD = 1. - deltaTMom/tauCD |
|
| 632 |
ENDIF |
ENDIF |
| 633 |
C o Temperature climatology relaxation time scale |
C o Temperature climatology relaxation time scale |
| 634 |
IF ( tauThetaClimRelax .EQ. 0.D0 ) THEN |
IF ( tauThetaClimRelax .EQ. 0.D0 ) THEN |
| 844 |
IF ( usingCartesianGrid ) goptCount = goptCount+1 |
IF ( usingCartesianGrid ) goptCount = goptCount+1 |
| 845 |
IF ( usingSphericalPolarGrid ) goptCount = goptCount+1 |
IF ( usingSphericalPolarGrid ) goptCount = goptCount+1 |
| 846 |
IF ( usingCurvilinearGrid ) goptCount = goptCount+1 |
IF ( usingCurvilinearGrid ) goptCount = goptCount+1 |
| 847 |
IF ( buseCylindricalGrid ) goptCount = goptCount+1 |
IF ( usingCylindricalGrid ) goptCount = goptCount+1 |
| 848 |
IF ( goptCount .GT. 1 ) THEN |
IF ( goptCount .GT. 1 ) THEN |
| 849 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
| 850 |
& 'S/R INI_PARMS: More than one coordinate system requested' |
& 'S/R INI_PARMS: More than one coordinate system requested' |
| 852 |
STOP 'ABNORMAL END: S/R INI_PARMS' |
STOP 'ABNORMAL END: S/R INI_PARMS' |
| 853 |
ENDIF |
ENDIF |
| 854 |
IF ( goptCount .LT. 1 ) THEN |
IF ( goptCount .LT. 1 ) THEN |
| 855 |
|
C- No horizontal grid is specified => use Cartesian grid as default: |
| 856 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
| 857 |
& 'S/R INI_PARMS: No coordinate system requested' |
& 'S/R INI_PARMS: No horizontal grid requested' |
| 858 |
CALL PRINT_ERROR( msgBuf , myThid) |
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit, |
| 859 |
STOP 'ABNORMAL END: S/R INI_PARMS' |
& SQUEEZE_RIGHT , myThid) |
| 860 |
|
WRITE(msgBuf,'(A)') |
| 861 |
|
& 'S/R INI_PARMS: => Use Cartesian Grid as default' |
| 862 |
|
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit, |
| 863 |
|
& SQUEEZE_RIGHT , myThid) |
| 864 |
|
usingCartesianGrid = .TRUE. |
| 865 |
ENDIF |
ENDIF |
| 866 |
C-- Make metric term settings consistent with underlying grid. |
C-- Make metric term settings consistent with underlying grid. |
| 867 |
IF ( usingCartesianGrid ) THEN |
IF ( usingCartesianGrid ) THEN |
| 872 |
useBetaPlaneF = .TRUE. |
useBetaPlaneF = .TRUE. |
| 873 |
ENDIF |
ENDIF |
| 874 |
C-- Make metric term settings consistent with underlying grid. |
C-- Make metric term settings consistent with underlying grid. |
| 875 |
IF ( bUseCylindricalGrid) THEN |
IF ( usingCylindricalGrid) THEN |
| 876 |
usingSphericalPolarMterms = .FALSE. |
usingSphericalPolarMterms = .FALSE. |
| 877 |
metricTerms = .FALSE. |
metricTerms = .FALSE. |
| 878 |
useNHMTerms = .FALSE. |
useNHMTerms = .FALSE. |
| 880 |
useBetaPlaneF = .TRUE. |
useBetaPlaneF = .TRUE. |
| 881 |
WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; Cylinder OK' |
WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; Cylinder OK' |
| 882 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
| 883 |
& SQUEEZE_RIGHT , 1) |
& SQUEEZE_RIGHT , 1) |
| 884 |
|
|
| 885 |
ENDIF |
ENDIF |
| 886 |
|
|
| 887 |
IF ( usingSphericalPolarGrid ) THEN |
IF ( usingSphericalPolarGrid ) THEN |
| 888 |
useConstantF = .FALSE. |
useConstantF = .FALSE. |
| 889 |
useBetaPlaneF = .FALSE. |
useBetaPlaneF = .FALSE. |
| 895 |
metricTerms = .FALSE. |
metricTerms = .FALSE. |
| 896 |
useNHMTerms = .FALSE. |
useNHMTerms = .FALSE. |
| 897 |
ENDIF |
ENDIF |
| 898 |
|
C-- Set default for latitude-band where relaxation to climatology applies |
| 899 |
|
IF ( latBandClimRelax .EQ. UNSET_RL) THEN |
| 900 |
|
IF ( usingCartesianGrid ) latBandClimRelax = delY(1)*Ny*Ny |
| 901 |
|
IF ( usingSphericalPolarGrid ) latBandClimRelax= 180. _d 0 |
| 902 |
|
IF ( usingCurvilinearGrid ) latBandClimRelax= 180. _d 0 |
| 903 |
|
ENDIF |
| 904 |
C-- set cell Center depth and put Interface at the middle between 2 C |
C-- set cell Center depth and put Interface at the middle between 2 C |
| 905 |
setCenterDr = .FALSE. |
setCenterDr = .FALSE. |
| 906 |
IF (delRc(1).NE.UNSET_RL) setCenterDr=.TRUE. |
IF (delRc(1).NE.UNSET_RL) setCenterDr=.TRUE. |
| 916 |
IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delP(K) |
IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delP(K) |
| 917 |
IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delRDefault(K) |
IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delRDefault(K) |
| 918 |
IF (.NOT.setCenterDr .AND. delR(K).EQ.delRDefault(K) ) THEN |
IF (.NOT.setCenterDr .AND. delR(K).EQ.delRDefault(K) ) THEN |
| 919 |
WRITE(msgBuf,'(A,I4,I4.2)') |
WRITE(msgBuf,'(A,I4)') |
| 920 |
& 'S/R INI_PARMS: No value for delZ/delP/delR at K = ',K, |
& 'S/R INI_PARMS: No value for delZ/delP/delR at K = ',K |
|
& dXspacing |
|
| 921 |
CALL PRINT_ERROR( msgBuf , 1) |
CALL PRINT_ERROR( msgBuf , 1) |
| 922 |
STOP 'ABNORMAL END: S/R INI_PARMS' |
STOP 'ABNORMAL END: S/R INI_PARMS' |
| 923 |
ELSEIF ( setCenterDr .AND. delR(K).NE.delRDefault(K) ) THEN |
ELSEIF ( setCenterDr .AND. delR(K).NE.delRDefault(K) ) THEN |
| 939 |
STOP 'ABNORMAL END: S/R INI_PARMS' |
STOP 'ABNORMAL END: S/R INI_PARMS' |
| 940 |
ENDIF |
ENDIF |
| 941 |
|
|
| 942 |
|
C-- When using the dynamical pressure in EOS (with Z-coord.), |
| 943 |
|
C needs to activate specific part of the code (restart & exchange) |
| 944 |
|
c useDynP_inEos_Zc = .FALSE. |
| 945 |
|
useDynP_inEos_Zc = ( buoyancyRelation .EQ. 'OCEANIC' |
| 946 |
|
& .AND. ( eosType .EQ. 'JMD95P' .OR. |
| 947 |
|
& eosType .EQ. 'UNESCO' .OR. |
| 948 |
|
& eosType .EQ. 'MDJWF' ) ) |
| 949 |
|
|
| 950 |
C-- Input files |
C-- Input files |
| 951 |
READ(UNIT=iUnit,NML=PARM05) !,IOSTAT=errIO) |
READ(UNIT=iUnit,NML=PARM05) !,IOSTAT=errIO) |
| 952 |
IF ( errIO .LT. 0 ) THEN |
IF ( errIO .LT. 0 ) THEN |
| 988 |
rkFac = 1.D0 |
rkFac = 1.D0 |
| 989 |
horiVertRatio = 1.D0 |
horiVertRatio = 1.D0 |
| 990 |
ENDIF |
ENDIF |
| 991 |
convertEmP2rUnit = 1. _d 0 |
gravitySign = -1. _d 0 |
| 992 |
IF (buoyancyRelation.EQ.'ATMOSPHERIC') |
IF (buoyancyRelation.EQ.'ATMOSPHERIC') THEN |
| 993 |
& horiVertRatio = Gravity * rhoConst |
gravitySign = 1. _d 0 |
| 994 |
|
horiVertRatio = Gravity * rhoConst |
| 995 |
|
ENDIF |
| 996 |
IF (buoyancyRelation.EQ.'OCEANICP') THEN |
IF (buoyancyRelation.EQ.'OCEANICP') THEN |
| 997 |
|
gravitySign = 1. _d 0 |
| 998 |
horiVertRatio = Gravity * rhoConst |
horiVertRatio = Gravity * rhoConst |
|
convertEmP2rUnit = Gravity * rhoConstFresh |
|
| 999 |
ENDIF |
ENDIF |
| 1000 |
|
convertEmP2rUnit = rhoConstFresh*recip_rhoConst*horiVertRatio |
| 1001 |
IF ( rkFac .EQ. UNSET_RS ) rkFac=rkFacDefault |
IF ( rkFac .EQ. UNSET_RS ) rkFac=rkFacDefault |
| 1002 |
recip_rkFac = 1.D0 / rkFac |
recip_rkFac = 1.D0 / rkFac |
| 1003 |
recip_horiVertRatio = 1./horiVertRatio |
recip_horiVertRatio = 1./horiVertRatio |
| 1004 |
IF ( zCoordInputData ) usingZCoords = .TRUE. |
IF ( zCoordInputData ) usingZCoords = .TRUE. |
| 1005 |
IF ( pCoordInputData ) usingPCoords = .TRUE. |
IF ( pCoordInputData ) usingPCoords = .TRUE. |
| 1006 |
|
|
| 1007 |
|
c-- gradually replacing debugMode by debugLevel |
| 1008 |
|
IF ( debugMode ) debugLevel = debLevB |
| 1009 |
C |
C |
| 1010 |
CLOSE(iUnit) |
CLOSE(iUnit) |
| 1011 |
|
|