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,bUseCylindricalGrid, |
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 |
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 |
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 |
|
|