/[MITgcm]/MITgcm/model/src/ini_parms.F
ViewVC logotype

Annotation of /MITgcm/model/src/ini_parms.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.216 - (hide annotations) (download)
Sun Aug 24 21:32:17 2008 UTC (15 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint61c
Changes since 1.215: +4 -3 lines
initialisation and option setting for mass source/sink of fluid

1 jmc 1.216 C $Header: /u/gcmpack/MITgcm/model/src/ini_parms.F,v 1.215 2008/07/18 16:49:52 jmc Exp $
2 heimbach 1.58 C $Name: $
3 cnh 1.1
4 jmc 1.181 c #include "PACKAGES_CONFIG.h"
5 adcroft 1.22 #include "CPP_OPTIONS.h"
6 cnh 1.1
7 edhill 1.121 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 cnh 1.70 CBOP
9     C !ROUTINE: INI_PARMS
10     C !INTERFACE:
11 cnh 1.1 SUBROUTINE INI_PARMS( myThid )
12 cnh 1.70
13 edhill 1.121 C !DESCRIPTION:
14 jmc 1.181 C Routine to load model "parameters" from parameter file "data"
15    
16 cnh 1.70 C !USES:
17 adcroft 1.38 IMPLICIT NONE
18 cnh 1.1 #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21 jmc 1.188 c#include "GRID.h"
22 mlosch 1.82 #include "EOS.h"
23 cnh 1.1
24 cnh 1.70 C !INPUT/OUTPUT PARAMETERS:
25 jmc 1.188 C myThid :: Number of this instance of INI_PARMS
26 cnh 1.1 INTEGER myThid
27    
28 cnh 1.70 C !LOCAL VARIABLES:
29 jmc 1.188 C dxSpacing, dySpacing :: Default spacing in X and Y.
30     C :: Units are that of coordinate system
31     C :: i.e. cartesian => metres
32     C :: s. polar => degrees
33 jmc 1.207 C SadournyCoriolis :: for backward compatibility
34 jmc 1.188 C deltaTtracer :: Timestep for tracer equations ( s )
35     C forcing_In_AB :: flag to put all forcings (Temp,Salt,Tracers,Momentum)
36     C :: contribution in (or out of) Adams-Bashforth time stepping.
37     C goptCount :: Used to count the nuber of grid options (only one is allowed!)
38     C msgBuf :: Informational/error meesage buffer
39     C errIO :: IO error flag
40     C iUnit :: Work variable for IO unit number
41     C record :: Work variable for IO buffer
42     C K, I, J :: Loop counters
43     C xxxDefault :: Default value for variable xxx
44 cnh 1.28 _RL dxSpacing
45     _RL dySpacing
46 jmc 1.139 _RL deltaTtracer
47 cnh 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
48     CHARACTER*(MAX_LEN_PREC) record
49 jmc 1.207 LOGICAL SadournyCoriolis
50 jmc 1.180 LOGICAL forcing_In_AB
51 cnh 1.1 INTEGER goptCount
52 jmc 1.202 INTEGER K, i, j, IL, iUnit
53 cnh 1.1 INTEGER errIO
54     INTEGER IFNBLNK
55     EXTERNAL IFNBLNK
56     INTEGER ILNBLNK
57     EXTERNAL ILNBLNK
58 cnh 1.28 C Default values for variables which have vertical coordinate system
59     C dependency.
60     _RL viscArDefault
61     _RL diffKrTDefault
62     _RL diffKrSDefault
63     _RL hFacMinDrDefault
64 adcroft 1.39 _RL delRDefault(Nr)
65 adcroft 1.41 _RS rkFacDefault
66 cnh 1.75 C zCoordInputData :: Variables used to select between different coordinate systems.
67 jmc 1.188 C pCoordInputData :: The vertical coordinate system in the rest of the model is
68     C rCoordInputData :: written in terms of r. In the model "data" file input data
69     C coordsSet :: can be interms of z, p or r.
70 cnh 1.75 C :: e.g. delZ or delP or delR for the vertical grid spacing.
71     C :: The following rules apply:
72     C :: All parameters must use the same vertical coordinate system.
73     C :: e.g. delZ and viscAz is legal but
74     C :: delZ and viscAr is an error.
75 jmc 1.188 C :: Similarly specifying delZ and delP is an error.
76     C :: zCoord..., pCoord..., rCoord... are used to flag when
77     C :: z, p or r are used.
78     C :: coordsSet counts how many vertical coordinate systems have
79     C :: been used to specify variables. coordsSet > 1 is an error.
80 cnh 1.28 C
81 jmc 1.100
82 cnh 1.28 LOGICAL zCoordInputData
83     LOGICAL pCoordInputData
84     LOGICAL rCoordInputData
85     INTEGER coordsSet
86 jmc 1.131 LOGICAL diffKrSet
87 jmc 1.100
88     C Variables which have vertical coordinate system dependency.
89 jmc 1.188 C delZ :: Vertical grid spacing ( m ).
90     C delP :: Vertical grid spacing ( Pa ).
91     C viscAz :: Eddy viscosity coeff. for mixing of momentum vertically ( m^2/s )
92     C viscAp :: Eddy viscosity coeff. for mixing of momentum vertically ( Pa^2/s )
93     C diffKzT :: Laplacian diffusion coeff. for mixing of heat vertically ( m^2/s )
94     C diffKpT :: Laplacian diffusion coeff. for mixing of heat vertically ( Pa^2/s )
95     C diffKzS :: Laplacian diffusion coeff. for mixing of salt vertically ( m^2/s )
96     C diffKpS :: Laplacian diffusion coeff. for mixing of salt vertically ( Pa^2/s )
97 jmc 1.100 _RL delZ(Nr)
98     _RL delP(Nr)
99     _RL viscAz
100     _RL viscAp
101     _RL diffKzT
102     _RL diffKpT
103 jmc 1.131 _RL diffKrT
104 jmc 1.100 _RL diffKzS
105     _RL diffKpS
106 jmc 1.131 _RL diffKrS
107 cnh 1.75
108     C Retired main data file parameters. Kept here to trap use of old data files.
109 jmc 1.184 C Namelist PARM01:
110 jmc 1.136 C tracerAdvScheme :: tracer advection scheme (old passive tracer code)
111     C trac_EvPrRn :: tracer conc. in Rain & Evap (old passive tracer code)
112     C saltDiffusion :: diffusion of salinity on/off (flag not used)
113     C tempDiffusion :: diffusion of temperature on/off (flag not used)
114     C zonal_filt_lat :: Moved to package "zonal_filt"
115 jmc 1.188 C gravitySign :: direction of gravity relative to R direction
116     C :: (removed from namelist and set according to z/p coordinate)
117 jmc 1.167 C viscAstrain :: replaced by standard viscosity coeff & useStrainTensionVisc
118     C viscAtension :: replaced by standard viscosity coeff & useStrainTensionVisc
119 jmc 1.179 C useAnisotropicViscAgridMax :: Changed to be default behavior. Can
120     C use old method by setting useAreaViscLength=.true.
121 jmc 1.191 C usePickupBeforeC35 :: to restart from old-pickup files (generated with code
122     C from before checkpoint-35, Feb 08, 2001): disabled (Jan 2007)
123 jmc 1.184 C Namelist PARM03:
124 jmc 1.179 C tauThetaClimRelax3Dim :: replaced by pkg/rbcs (3.D Relaxation B.Cs)
125     C tauSaltClimRelax3Dim :: replaced by pkg/rbcs (3.D Relaxation B.Cs)
126 jmc 1.184 C calendarDumps :: moved to package "cal" (calendar)
127     C Namelist PARM04:
128     C groundAtK1 :: put the surface(k=1) at the ground (replaced by usingPCoords)
129     C rkFac :: removed from namelist ; replaced by -rkSign
130 jmc 1.179 C nRetired :: Counter used to trap gracefully namelists containing "retired"
131 cnh 1.75 C :: parameters. These are parameters that are either no-longer used
132     C or that have moved to a different input file and/or namelist.
133 jmc 1.136 LOGICAL tempDiffusion, saltDiffusion
134     INTEGER tracerAdvScheme
135     _RL trac_EvPrRn
136 jmc 1.188 _RL zonal_filt_lat, gravitySign
137 jmc 1.167 _RL viscAstrain, viscAtension
138 jmc 1.191 LOGICAL useAnisotropicViscAgridMax
139     LOGICAL usePickupBeforeC35
140 jmc 1.184 C-
141 jmc 1.179 _RL tauThetaClimRelax3Dim, tauSaltClimRelax3Dim
142 jmc 1.184 LOGICAL calendarDumps
143     C-
144     LOGICAL groundAtK1
145     _RL rkFac
146 cnh 1.75 INTEGER nRetired
147 cnh 1.1
148     C-- Continuous equation parameters
149     NAMELIST /PARM01/
150 adcroft 1.156 & gravitySign, nh_Am2,
151 jmc 1.188 & gravity, gBaro, rhonil, tAlpha, sBeta,
152 jmc 1.93 & f0, beta, omega, rotationPeriod,
153 baylor 1.149 & viscAh, viscAhW, viscAhMax,
154     & viscAhGrid, viscAhGridMax, viscAhGridMin,
155     & viscC2leith, viscC4leith,
156 jmc 1.191 & useFullLeith, useAnisotropicViscAgridMax, useStrainTensionVisc,
157 baylor 1.169 & useAreaViscLength,
158 jmc 1.207 & viscC2leithD, viscC4leithD, viscC2smag, viscC4smag,
159 jmc 1.134 & viscAhD, viscAhZ, viscA4D, viscA4Z,
160 mlosch 1.140 & viscA4, viscA4W,
161     & viscA4Max, viscA4Grid, viscA4GridMax, viscA4GridMin,
162 baylor 1.168 & viscA4ReMax, viscAhReMax,
163 jmc 1.167 & viscAz, cosPower, viscAstrain, viscAtension,
164 dimitri 1.135 & diffKhT, diffKzT, diffK4T,
165 adcroft 1.51 & diffKhS, diffKzS, diffK4S,
166 jmc 1.188 & tRef, sRef, tRefFile, sRefFile, rhoRefFile,
167     & eosType, integr_GeoPot, selectFindRoSurf,
168 jmc 1.215 & atm_Cp, atm_Rd, atm_Rq, atm_Po,
169 jmc 1.172 & no_slip_sides, sideDragFactor,
170     & no_slip_bottom, bottomDragLinear, bottomDragQuadratic,
171 cnh 1.1 & momViscosity, momAdvection, momForcing, useCoriolis,
172 jmc 1.187 & useConstantF, useBetaPlaneF, useSphereF, use3dCoriolis,
173 adcroft 1.66 & momPressureForcing, metricTerms, vectorInvariantMomentum,
174 cnh 1.1 & tempDiffusion, tempAdvection, tempForcing,
175 cnh 1.8 & saltDiffusion, saltAdvection, saltForcing,
176 jmc 1.216 & implicSurfPress, implicDiv2Dflow,
177 adcroft 1.24 & implicitFreeSurface, rigidLid, freeSurfFac, hFacMin, hFacMinDz,
178 dfer 1.190 & exactConserv, linFSConserveTr, uniformLin_PhiSurf,
179     & nonlinFreeSurf, hFacInf, hFacSup, select_rStar,
180 jmc 1.174 & implicitIntGravWave, staggerTimeStep,
181 heimbach 1.123 & tempStepping, saltStepping, momStepping,
182 adcroft 1.45 & implicitDiffusion, implicitViscosity,
183 jmc 1.104 & tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
184 jmc 1.131 & viscAr, diffKrT, diffKrS, diffKrNrT, diffKrNrS, hFacMinDr,
185 cnh 1.29 & viscAp, diffKpT, diffKpS, hFacMinDp,
186 adcroft 1.112 & diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
187 dimitri 1.195 & BL79LatVary,
188 dimitri 1.194 & diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
189 mlosch 1.84 & rhoConst, rhoConstFresh, buoyancyRelation, HeatCapacity_Cp,
190 adcroft 1.40 & writeBinaryPrec, readBinaryPrec, writeStatePrec,
191 dimitri 1.91 & nonHydrostatic, quasiHydrostatic, globalFiles, useSingleCpuIO,
192 jmc 1.197 & allowFreezing, useOldFreezing, ivdc_kappa, hMixCriteria,
193 jmc 1.116 & usePickupBeforeC35, usePickupBeforeC54, debugMode, debugLevel,
194 jmc 1.187 & tempAdvScheme, tempVertAdvScheme,
195 jmc 1.115 & saltAdvScheme, saltVertAdvScheme, tracerAdvScheme,
196 adcroft 1.73 & multiDimAdvection, useEnergyConservingCoriolis,
197 adcroft 1.113 & useCDscheme, useJamartWetPoints, useJamartMomAdv, useNHMTerms,
198 jmc 1.207 & selectVortScheme, upwindVorticity, highOrderVorticity,
199 jmc 1.208 & SadournyCoriolis, useAbsVorticity, upwindShear, selectKEscheme,
200 jmc 1.216 & selectAddFluid, useRealFreshWaterFlux, convertFW2Salt,
201 jmc 1.76 & temp_EvPrRn, salt_EvPrRn, trac_EvPrRn,
202 heimbach 1.146 & zonal_filt_lat,
203 jmc 1.188 & inAdExact, smoothAbsFuncRange,
204 mlosch 1.177 & balanceEmPmR, balanceQnet, balancePrintMean
205 cnh 1.1
206     C-- Elliptic solver parameters
207     NAMELIST /PARM02/
208 jmc 1.188 & cg2dMaxIters, cg2dChkResFreq, cg2dTargetResidual,
209 jmc 1.117 & cg2dTargetResWunit, cg2dpcOffDFac, cg2dPreCondFreq,
210 cnh 1.34 & cg3dMaxIters, cg3dChkResFreq, cg3dTargetResidual
211 cnh 1.1
212     C-- Time stepping parammeters
213     NAMELIST /PARM03/
214 jmc 1.203 & nIter0, nTimeSteps, nEndIter,
215 jmc 1.204 & baseTime, startTime, endTime,
216 jmc 1.188 & deltaT, deltaTClock, deltaTmom,
217 jmc 1.165 & deltaTtracer, dTtracerLev, deltaTfreesurf,
218 jmc 1.188 & forcing_In_AB, momForcingOutAB, tracForcingOutAB,
219 jmc 1.180 & momDissip_In_AB, doAB_onGtGs,
220 jmc 1.188 & abEps, alph_AB, beta_AB, startFromPickupAB2,
221 jmc 1.204 & tauCD, rCD, cAdjFreq,
222     & chkPtFreq, pChkPtFreq, pickupSuff, pickupStrictlyMatch,
223 mlosch 1.206 & writePickupAtEnd,
224 jmc 1.165 & dumpFreq, dumpInitAndLast, adjDumpFreq, taveFreq, tave_lastIter,
225 jmc 1.204 & diagFreq, monitorFreq, adjMonitorFreq, monitorSelect,
226 jmc 1.188 & outputTypesInclusive,
227     & tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
228 jmc 1.210 & tauThetaClimRelax3Dim, tauSaltClimRelax3Dim,
229 dimitri 1.147 & periodicExternalForcing, externForcingPeriod, externForcingCycle,
230 jmc 1.165 & calendarDumps
231 cnh 1.1
232     C-- Gridding parameters
233     NAMELIST /PARM04/
234 jmc 1.188 & usingCartesianGrid, usingCylindricalGrid,
235     & dxSpacing, dySpacing, delX, delY, delXFile, delYFile,
236 cnh 1.1 & usingSphericalPolarGrid, phiMin, thetaMin, rSphere,
237 jmc 1.189 & usingCurvilinearGrid, horizGridFile, deepAtmosphere,
238 jmc 1.188 & Ro_SeaLevel, delZ, delP, delR, delRc, delRFile, delRcFile,
239 mlosch 1.205 & rkFac, groundAtK1,
240     & phiEuler, thetaEuler, psiEuler
241 cnh 1.1
242 cnh 1.15 C-- Input files
243     NAMELIST /PARM05/
244 jmc 1.188 & bathyFile, topoFile, shelfIceFile,
245 dimitri 1.193 & hydrogThetaFile, hydrogSaltFile, diffKrFile,
246 adcroft 1.41 & zonalWindFile, meridWindFile,
247     & thetaClimFile, saltClimFile,
248 jmc 1.143 & surfQfile, surfQnetFile, surfQswFile, EmPmRfile, saltFluxFile,
249 heimbach 1.152 & lambdaThetaFile, lambdaSaltFile,
250 heimbach 1.57 & uVelInitFile, vVelInitFile, pSurfInitFile,
251 afe 1.144 & dQdTFile, ploadFile,tCylIn,tCylOut,
252 cnh 1.214 & eddyPsiXFile, eddyPsiYFile,
253 edhill 1.119 & mdsioLocalDir,
254     & the_run_name
255 edhill 1.121 CEOP
256 cnh 1.15
257 cnh 1.1 C
258     _BEGIN_MASTER(myThid)
259    
260 adcroft 1.39 C Defaults values for input parameters
261     CALL SET_DEFAULTS(
262     O viscArDefault, diffKrTDefault, diffKrSDefault,
263 jmc 1.188 O hFacMinDrDefault, delRDefault, rkFacDefault,
264 adcroft 1.39 I myThid )
265 jmc 1.207 SadournyCoriolis = .FALSE.
266 adcroft 1.39
267 cnh 1.28 C-- Initialise "which vertical coordinate system used" flags.
268     zCoordInputData = .FALSE.
269     pCoordInputData = .FALSE.
270     rCoordInputData = .FALSE.
271     coordsSet = 0
272    
273 jmc 1.131 C-- Initialise retired parameters to unlikely value
274 cnh 1.75 nRetired = 0
275 jmc 1.136 tempDiffusion = .TRUE.
276     saltDiffusion = .TRUE.
277     tracerAdvScheme = UNSET_I
278     trac_EvPrRn = UNSET_RL
279 cnh 1.75 zonal_filt_lat = UNSET_RL
280 jmc 1.99 gravitySign = UNSET_RL
281 jmc 1.167 viscAstrain = UNSET_RL
282     viscAtension = UNSET_RL
283 jmc 1.184 useAnisotropicViscAgridMax=.TRUE.
284 jmc 1.191 usePickupBeforeC35 = .FALSE.
285 jmc 1.179 tauThetaClimRelax3Dim = UNSET_RL
286     tauSaltClimRelax3Dim = UNSET_RL
287 jmc 1.184 calendarDumps = .FALSE.
288     rkFac = UNSET_RL
289     groundAtK1 = .FALSE.
290 cnh 1.75
291 cnh 1.1 C-- Open the parameter file
292 heimbach 1.211 #if defined (TARGET_BGL) || defined (TARGET_CRAYXT)
293 ce107 1.163 OPEN(UNIT=scrUnit1,FILE='scratch1',STATUS='UNKNOWN')
294     OPEN(UNIT=scrUnit2,FILE='scratch2',STATUS='UNKNOWN')
295     #else
296 cnh 1.1 OPEN(UNIT=scrUnit1,STATUS='SCRATCH')
297     OPEN(UNIT=scrUnit2,STATUS='SCRATCH')
298 ce107 1.163 #endif
299 cnh 1.34 OPEN(UNIT=modelDataUnit,FILE='data',STATUS='OLD',
300 cnh 1.35 & IOSTAT=errIO)
301     IF ( errIO .LT. 0 ) THEN
302 cnh 1.1 WRITE(msgBuf,'(A)')
303     & 'S/R INI_PARMS'
304 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
305 cnh 1.1 WRITE(msgBuf,'(A)')
306     & 'Unable to open model parameter'
307 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
308 cnh 1.1 WRITE(msgBuf,'(A)')
309     & 'file "data"'
310 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
311 cnh 1.1 CALL MODELDATA_EXAMPLE( myThid )
312     STOP 'ABNORMAL END: S/R INI_PARMS'
313 jmc 1.181 ENDIF
314 cnh 1.1
315 cnh 1.35 DO WHILE ( .TRUE. )
316     READ(modelDataUnit,FMT='(A)',END=1001) RECORD
317     IL = MAX(ILNBLNK(RECORD),1)
318 cnh 1.107 IF ( RECORD(1:1) .NE. commentCharacter ) THEN
319     CALL NML_SET_TERMINATOR( RECORD )
320     WRITE(UNIT=scrUnit1,FMT='(A)') RECORD(:IL)
321     ENDIF
322     WRITE(UNIT=scrUnit2,FMT='(A)') RECORD(:IL)
323 cnh 1.35 ENDDO
324 cnh 1.1 1001 CONTINUE
325     CLOSE(modelDataUnit)
326    
327     C-- Report contents of model parameter file
328 jmc 1.188 WRITE(msgBuf,'(A)')
329 cnh 1.1 &'// ======================================================='
330 jmc 1.188 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
331     & SQUEEZE_RIGHT, myThid )
332 cnh 1.1 WRITE(msgBuf,'(A)') '// Model parameter file "data"'
333 jmc 1.188 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
334     & SQUEEZE_RIGHT, myThid )
335     WRITE(msgBuf,'(A)')
336 cnh 1.1 &'// ======================================================='
337     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
338 jmc 1.188 & SQUEEZE_RIGHT, myThid )
339 cnh 1.1 iUnit = scrUnit2
340     REWIND(iUnit)
341 cnh 1.35 DO WHILE ( .TRUE. )
342 cnh 1.1 READ(UNIT=iUnit,FMT='(A)',END=2001) RECORD
343     IL = MAX(ILNBLNK(RECORD),1)
344     WRITE(msgBuf,'(A,A)') '>',RECORD(:IL)
345 jmc 1.188 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
346     & SQUEEZE_RIGHT, myThid )
347 cnh 1.35 ENDDO
348 cnh 1.1 2001 CONTINUE
349     CLOSE(iUnit)
350     WRITE(msgBuf,'(A)') ' '
351     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
352 jmc 1.188 & SQUEEZE_RIGHT, myThid )
353 cnh 1.1
354    
355     C-- Read settings from model parameter file "data".
356     iUnit = scrUnit1
357     REWIND(iUnit)
358    
359     C-- Set default "physical" parameters
360 mlosch 1.126 viscAhW = UNSET_RL
361 mlosch 1.140 viscA4W = UNSET_RL
362 jmc 1.134 viscAhD = UNSET_RL
363     viscAhZ = UNSET_RL
364     viscA4D = UNSET_RL
365     viscA4Z = UNSET_RL
366 jmc 1.181 viscAz = UNSET_RL
367 cnh 1.28 viscAr = UNSET_RL
368     viscAp = UNSET_RL
369     diffKzT = UNSET_RL
370     diffKpT = UNSET_RL
371     diffKrT = UNSET_RL
372     diffKzS = UNSET_RL
373     diffKpS = UNSET_RL
374     diffKrS = UNSET_RL
375 jmc 1.131 DO k=1,Nr
376     diffKrNrT(k) = UNSET_RL
377     diffKrNrS(k) = UNSET_RL
378 jmc 1.171 tRef(k) = UNSET_RL
379     sRef(k) = UNSET_RL
380 jmc 1.131 ENDDO
381 adcroft 1.39 gBaro = UNSET_RL
382     rhoConst = UNSET_RL
383 jmc 1.93 omega = UNSET_RL
384 cnh 1.28 hFacMinDr = UNSET_RL
385     hFacMinDz = UNSET_RL
386     hFacMinDp = UNSET_RL
387 jmc 1.102 rhoConstFresh = UNSET_RL
388 jmc 1.76 convertFW2Salt = UNSET_RL
389 mlosch 1.82 tAlpha = UNSET_RL
390     sBeta = UNSET_RL
391 jmc 1.115 tempVertAdvScheme = 0
392     saltVertAdvScheme = 0
393     C-- z,p,r coord input switching.
394 jmc 1.124 WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; starts to read PARM01'
395     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
396 jmc 1.188 & SQUEEZE_RIGHT, myThid )
397 adcroft 1.41 READ(UNIT=iUnit,NML=PARM01) !,IOSTAT=errIO)
398 cnh 1.35 IF ( errIO .LT. 0 ) THEN
399 cnh 1.1 WRITE(msgBuf,'(A)')
400     & 'S/R INI_PARMS'
401 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
402 cnh 1.1 WRITE(msgBuf,'(A)')
403     & 'Error reading numerical model '
404 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
405 cnh 1.1 WRITE(msgBuf,'(A)')
406     & 'parameter file "data"'
407 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
408 cnh 1.1 WRITE(msgBuf,'(A)')
409     & 'Problem in namelist PARM01'
410 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
411 cnh 1.1 CALL MODELDATA_EXAMPLE( myThid )
412     STOP 'ABNORMAL END: S/R INI_PARMS'
413 jmc 1.72 ELSE
414     WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; read PARM01 : OK'
415     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
416 jmc 1.188 & SQUEEZE_RIGHT, myThid )
417 cnh 1.35 ENDIF
418 jmc 1.89
419 jmc 1.198 C- set the type of vertical coordinate and type of fluid
420 jmc 1.133 C according to buoyancyRelation
421     usingPCoords = .FALSE.
422     usingZCoords = .FALSE.
423     fluidIsAir = .FALSE.
424     fluidIsWater = .FALSE.
425     IF ( buoyancyRelation.EQ.'ATMOSPHERIC' ) THEN
426     usingPCoords = .TRUE.
427     fluidIsAir = .TRUE.
428     ELSEIF ( buoyancyRelation.EQ.'OCEANICP') THEN
429     usingPCoords = .TRUE.
430     fluidIsWater = .TRUE.
431     ELSEIF ( buoyancyRelation.EQ.'OCEANIC' ) THEN
432     usingZCoords = .TRUE.
433     fluidIsWater = .TRUE.
434     ELSE
435     WRITE(msgBuf,'(2A)') 'S/R INI_PARMS:',
436     & ' Bad value of buoyancyRelation '
437 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
438 jmc 1.133 STOP 'ABNORMAL END: S/R INI_PARMS'
439     ENDIF
440    
441 jmc 1.161 IF ( .NOT.rigidLid .AND.
442     & .NOT.implicitFreeSurface ) THEN
443     C- No barotropic solver selected => use implicitFreeSurface as default
444     WRITE(msgBuf,'(A)')
445 jmc 1.162 & 'S/R INI_PARMS: No request for barotropic solver'
446 jmc 1.161 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
447 jmc 1.188 & SQUEEZE_RIGHT, myThid )
448 jmc 1.161 WRITE(msgBuf,'(A)')
449     & 'S/R INI_PARMS: => Use implicitFreeSurface as default'
450     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
451 jmc 1.188 & SQUEEZE_RIGHT, myThid )
452 jmc 1.161 implicitFreeSurface = .TRUE.
453     ENDIF
454 cnh 1.28 IF ( implicitFreeSurface ) freeSurfFac = 1.D0
455     IF ( rigidLid ) freeSurfFac = 0.D0
456 adcroft 1.39 IF ( gBaro .EQ. UNSET_RL ) gBaro=gravity
457     IF ( rhoConst .EQ. UNSET_RL ) rhoConst=rhoNil
458 jmc 1.102 IF ( rhoConstFresh .EQ. UNSET_RL ) rhoConstFresh=rhoConst
459 jmc 1.93 IF ( omega .EQ. UNSET_RL ) THEN
460 jmc 1.94 omega = 0. _d 0
461 jmc 1.188 IF ( rotationPeriod .NE. 0. _d 0 )
462 jmc 1.94 & omega = 2.D0 * PI / rotationPeriod
463     ELSEIF ( omega .EQ. 0. _d 0 ) THEN
464     rotationPeriod = 0. _d 0
465 jmc 1.93 ELSE
466     rotationPeriod = 2.D0 * PI / omega
467     ENDIF
468 jmc 1.89 IF (atm_Rd .EQ. UNSET_RL) THEN
469     atm_Rd = atm_Cp * atm_kappa
470     ELSE
471     atm_kappa = atm_Rd / atm_Cp
472     ENDIF
473 adcroft 1.88 C-- Non-hydrostatic/quasi-hydrostatic
474     IF (nonHydrostatic.AND.quasiHydrostatic) THEN
475     WRITE(msgBuf,'(A)')
476     & 'Illegal: both nonHydrostatic = quasiHydrostatic = TRUE'
477 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
478 adcroft 1.88 STOP 'ABNORMAL END: S/R INI_PARMS'
479 cnh 1.14 ENDIF
480 jmc 1.181 C-- Advection and Forcing for Temp and salt
481 jmc 1.115 IF (tempVertAdvScheme.EQ.0) tempVertAdvScheme = tempAdvScheme
482     IF (saltVertAdvScheme.EQ.0) saltVertAdvScheme = saltAdvScheme
483 mlosch 1.126 C-- horizontal viscosity for vertical moments
484     IF ( viscAhW .EQ. UNSET_RL ) viscAhW = viscAh
485 mlosch 1.140 IF ( viscA4W .EQ. UNSET_RL ) viscA4W = viscA4
486 jmc 1.134 C-- horizontal viscosity (acting on Divergence or Vorticity)
487     IF ( viscAhD .EQ. UNSET_RL ) viscAhD = viscAh
488     IF ( viscAhZ .EQ. UNSET_RL ) viscAhZ = viscAh
489     IF ( viscA4D .EQ. UNSET_RL ) viscA4D = viscA4
490     IF ( viscA4Z .EQ. UNSET_RL ) viscA4Z = viscA4
491 cnh 1.28 C-- z,p,r coord input switching.
492     IF ( viscAz .NE. UNSET_RL ) zCoordInputData = .TRUE.
493     IF ( viscAp .NE. UNSET_RL ) pCoordInputData = .TRUE.
494     IF ( viscAr .NE. UNSET_RL ) rCoordInputData = .TRUE.
495     IF ( viscAr .EQ. UNSET_RL ) viscAr = viscAz
496     IF ( viscAr .EQ. UNSET_RL ) viscAr = viscAp
497     IF ( viscAr .EQ. UNSET_RL ) viscAr = viscArDefault
498    
499     IF ( diffKzT .NE. UNSET_RL ) zCoordInputData = .TRUE.
500     IF ( diffKpT .NE. UNSET_RL ) pCoordInputData = .TRUE.
501     IF ( diffKrT .NE. UNSET_RL ) rCoordInputData = .TRUE.
502     IF ( diffKrT .EQ. UNSET_RL ) diffKrT = diffKzT
503     IF ( diffKrT .EQ. UNSET_RL ) diffKrT = diffKpT
504     IF ( diffKrT .EQ. UNSET_RL ) diffKrT = diffKrTDefault
505 jmc 1.131 diffKrSet = .TRUE.
506     DO k=1,Nr
507     IF ( diffKrNrT(k).EQ. UNSET_RL ) diffKrSet = .FALSE.
508     ENDDO
509     IF ( .NOT.diffKrSet ) THEN
510     DO k=1,Nr
511     diffKrNrT(k) = diffKrT
512     ENDDO
513     ELSEIF ( diffKrT.NE.diffKrTDefault ) THEN
514     WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
515     & 'diffKrNrT and diffKrT (or Kp,Kz) in input file data'
516 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
517 jmc 1.131 STOP 'ABNORMAL END: S/R INI_PARMS'
518     ENDIF
519 cnh 1.28
520     IF ( diffKzS .NE. UNSET_RL ) zCoordInputData = .TRUE.
521     IF ( diffKpS .NE. UNSET_RL ) pCoordInputData = .TRUE.
522     IF ( diffKrS .NE. UNSET_RL ) rCoordInputData = .TRUE.
523     IF ( diffKrS .EQ. UNSET_RL ) diffKrS = diffKzS
524     IF ( diffKrS .EQ. UNSET_RL ) diffKrS = diffKpS
525     IF ( diffKrS .EQ. UNSET_RL ) diffKrS = diffKrSDefault
526 jmc 1.131 diffKrSet = .TRUE.
527     DO k=1,Nr
528     IF ( diffKrNrS(k).EQ. UNSET_RL ) diffKrSet = .FALSE.
529     ENDDO
530     IF ( .NOT.diffKrSet ) THEN
531     DO k=1,Nr
532     diffKrNrS(k) = diffKrS
533     ENDDO
534     ELSEIF ( diffKrS.NE.diffKrSDefault ) THEN
535     WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
536     & 'diffKrNrS and diffKrS (or Kp,Kz) in input file data'
537 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
538 jmc 1.131 STOP 'ABNORMAL END: S/R INI_PARMS'
539     ENDIF
540 cnh 1.28
541 dimitri 1.195 IF (diffKrBLEQsurf .EQ. UNSET_RL) diffKrBLEQsurf = diffKrBL79surf
542     IF (diffKrBLEQdeep .EQ. UNSET_RL) diffKrBLEQdeep = diffKrBL79deep
543     IF (diffKrBLEQscl .EQ. UNSET_RL) diffKrBLEQscl = diffKrBL79scl
544     IF (diffKrBLEQHo .EQ. UNSET_RL) diffKrBLEQHo = diffKrBL79Ho
545    
546 cnh 1.28 IF ( hFacMinDz .NE. UNSET_RL ) zCoordInputData = .TRUE.
547     IF ( hFacMinDp .NE. UNSET_RL ) pCoordInputData = .TRUE.
548     IF ( hFacMinDr .NE. UNSET_RL ) rCoordInputData = .TRUE.
549 adcroft 1.50 IF ( hFacMinDr .EQ. UNSET_RL ) hFacMinDr = hFacMinDz
550     IF ( hFacMinDr .EQ. UNSET_RL ) hFacMinDr = hFacMinDp
551 cnh 1.28 IF ( hFacMinDr .EQ. UNSET_RL ) hFacMinDr = hFacMinDrDefault
552 cnh 1.8
553 jmc 1.76 IF (convertFW2Salt.EQ.UNSET_RL) THEN
554     convertFW2Salt = 35.
555     IF (useRealFreshWaterFlux) convertFW2Salt=-1
556 jmc 1.216 IF ( selectAddFluid.GE.1 ) convertFW2Salt=-1
557 jmc 1.76 ENDIF
558    
559 jmc 1.207 IF ( SadournyCoriolis ) THEN
560     C-- for backward compatibility :
561     IF ( selectVortScheme.EQ.UNSET_I ) selectVortScheme = 2
562     IF ( selectVortScheme.NE.2 ) THEN
563 jmc 1.209 WRITE(msgBuf,'(A,I5,A)')
564     & 'S/R INI_PARMS: selectVortScheme=', selectVortScheme,
565     & ' conflicts with "SadournyCoriolis"'
566 jmc 1.207 CALL PRINT_ERROR( msgBuf, myThid )
567     STOP 'ABNORMAL END: S/R INI_PARMS'
568     ENDIF
569     ENDIF
570    
571 adcroft 1.46 IF ( ivdc_kappa .NE. 0. .AND. .NOT. implicitDiffusion ) THEN
572 jmc 1.79 WRITE(msgBuf,'(A,A)')
573 adcroft 1.46 & 'S/R INI_PARMS: To use ivdc_kappa you must enable implicit',
574     & ' vertical diffusion.'
575 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
576 jmc 1.55 STOP 'ABNORMAL END: S/R INI_PARMS'
577     ENDIF
578    
579 cnh 1.28 coordsSet = 0
580     IF ( zCoordInputData ) coordsSet = coordsSet + 1
581     IF ( pCoordInputData ) coordsSet = coordsSet + 1
582     IF ( rCoordInputData ) coordsSet = coordsSet + 1
583     IF ( coordsSet .GT. 1 ) THEN
584     WRITE(msgBuf,'(A)')
585     & 'S/R INI_PARMS: Cannot mix z, p and r in the input data.'
586 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
587 cnh 1.8 STOP 'ABNORMAL END: S/R INI_PARMS'
588     ENDIF
589 cnh 1.28 IF ( rhoConst .LE. 0. ) THEN
590     WRITE(msgBuf,'(A)')
591     & 'S/R INI_PARMS: rhoConst must be greater than 0.'
592 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
593 cnh 1.28 STOP 'ABNORMAL END: S/R INI_PARMS'
594     ELSE
595     recip_rhoConst = 1.D0 / rhoConst
596 adcroft 1.38 ENDIF
597     IF ( rhoNil .LE. 0. ) THEN
598     WRITE(msgBuf,'(A)')
599     & 'S/R INI_PARMS: rhoNil must be greater than 0.'
600 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
601 adcroft 1.38 STOP 'ABNORMAL END: S/R INI_PARMS'
602     ELSE
603     recip_rhoNil = 1.D0 / rhoNil
604 cnh 1.33 ENDIF
605 adcroft 1.39 IF ( HeatCapacity_Cp .LE. 0. ) THEN
606     WRITE(msgBuf,'(A)')
607     & 'S/R INI_PARMS: HeatCapacity_Cp must be greater than 0.'
608 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
609 adcroft 1.39 STOP 'ABNORMAL END: S/R INI_PARMS'
610     ELSE
611     recip_Cp = 1.D0 / HeatCapacity_Cp
612     ENDIF
613 cnh 1.33 IF ( gravity .LE. 0. ) THEN
614     WRITE(msgBuf,'(A)')
615     & 'S/R INI_PARMS: gravity must be greater than 0.'
616 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
617 cnh 1.33 STOP 'ABNORMAL END: S/R INI_PARMS'
618     ELSE
619     recip_gravity = 1.D0 / gravity
620 cnh 1.28 ENDIF
621 adcroft 1.109 C This flags are now passed to RW and MDSIO packages in ini_model_io.F
622 adcroft 1.42 C Set globalFiles flag for READ_WRITE_FLD package
623 adcroft 1.109 c CALL SET_WRITE_GLOBAL_FLD( globalFiles )
624 adcroft 1.42 C Set globalFiles flag for READ_WRITE_REC package
625 adcroft 1.109 c CALL SET_WRITE_GLOBAL_REC( globalFiles )
626 adcroft 1.42 C Set globalFiles flag for READ_WRITE_REC package
627 adcroft 1.109 c CALL SET_WRITE_GLOBAL_PICKUP( globalFiles )
628 cnh 1.1
629 cnh 1.75 C Check for retired parameters still being used
630     nRetired = 0
631     IF ( zonal_filt_lat .NE. UNSET_RL ) THEN
632     nRetired = nRetired+1
633     WRITE(msgBuf,'(A,A)')
634     & 'S/R INI_PARMS: Paramater "zonal_filt_lat" is',
635     & ' no longer allowed in file "data".'
636 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
637 cnh 1.75 WRITE(msgBuf,'(A,A)')
638     & 'S/R INI_PARMS: Paramater "zonal_filt_lat" is',
639     & ' now read from file "data.zonfilt".'
640 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
641 cnh 1.75 ENDIF
642 jmc 1.99 IF ( gravitySign .NE. UNSET_RL ) THEN
643     nRetired = nRetired+1
644     WRITE(msgBuf,'(A,A)')
645     & 'S/R INI_PARMS: "gravitySign" is set according to vertical ',
646     & ' coordinate and is no longer allowed in file "data".'
647 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
648 jmc 1.99 ENDIF
649 jmc 1.136 IF ( tracerAdvScheme .NE. UNSET_I ) THEN
650     nRetired = nRetired+1
651     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tracerAdvScheme" ',
652     & '(old passive tracer code) is no longer allowed in file "data"'
653 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
654 jmc 1.136 ENDIF
655     IF ( trac_EvPrRn .NE. UNSET_RL ) THEN
656     nRetired = nRetired+1
657     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "trac_EvPrRn" ',
658     & '(old passive tracer code) is no longer allowed in file "data"'
659 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
660 jmc 1.136 ENDIF
661     IF ( .NOT. tempDiffusion ) THEN
662     nRetired = nRetired+1
663     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tempDiffusion" ',
664     & 'is no longer allowed in file "data"'
665 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
666 jmc 1.136 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to turn off diffusion',
667     & ' => set diffusivity to zero'
668 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
669 jmc 1.136 ENDIF
670     IF ( .NOT. saltDiffusion ) THEN
671     nRetired = nRetired+1
672     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "saltDiffusion" ',
673     & 'is no longer allowed in file "data"'
674 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
675 jmc 1.136 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to turn off diffusion',
676     & ' => set diffusivity to zero'
677 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
678 jmc 1.136 ENDIF
679 jmc 1.167 IF ( viscAstrain .NE. UNSET_RL ) THEN
680     nRetired = nRetired+1
681     WRITE(msgBuf,'(A,A)')
682     & 'S/R INI_PARMS: "viscAstrain" ',
683     & 'is no longer allowed in file "data"'
684 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
685 jmc 1.167 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to use Strain & Tension',
686     & ' formulation => set useStrainTensionVisc to TRUE'
687 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
688 jmc 1.167 ENDIF
689     IF ( viscAtension .NE. UNSET_RL ) THEN
690     nRetired = nRetired+1
691     WRITE(msgBuf,'(A,A)')
692     & 'S/R INI_PARMS: "viscAtension" ',
693     & 'is no longer allowed in file "data"'
694 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
695 jmc 1.167 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: to use Strain & Tension',
696     & ' formulation => set useStrainTensionVisc to TRUE'
697 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
698 jmc 1.167 ENDIF
699 jmc 1.191 IF ( .NOT.useAnisotropicViscAgridMax ) THEN
700 baylor 1.169 nRetired = nRetired+1
701     WRITE(msgBuf,'(A,A)')
702     & 'S/R INI_PARMS: "useAnisotropicViscAgridMax" ',
703     & 'is not allowed in "data" substitute useAreaViscLength=true'
704 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
705 baylor 1.169 ENDIF
706 jmc 1.191 IF ( usePickupBeforeC35 ) THEN
707     nRetired = nRetired+1
708     WRITE(msgBuf,'(A,A)')
709     & 'S/R INI_PARMS: "usePickupBeforeC35" ',
710     & 'is no longer supported & not longer allowed in file "data"'
711     CALL PRINT_ERROR( msgBuf, myThid )
712     ENDIF
713 cnh 1.75
714 cnh 1.1 C-- Elliptic solver parameters
715 jmc 1.124 WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; starts to read PARM02'
716     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
717 jmc 1.188 & SQUEEZE_RIGHT, myThid )
718 adcroft 1.41 READ(UNIT=iUnit,NML=PARM02) !,IOSTAT=errIO)
719 cnh 1.35 IF ( errIO .LT. 0 ) THEN
720 cnh 1.1 WRITE(msgBuf,'(A)')
721     & 'S/R INI_PARMS'
722 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
723 cnh 1.1 WRITE(msgBuf,'(A)')
724     & 'Error reading numerical model '
725 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
726 cnh 1.1 WRITE(msgBuf,'(A)')
727     & 'parameter file "data".'
728 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
729 cnh 1.1 WRITE(msgBuf,'(A)')
730     & 'Problem in namelist PARM02'
731 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
732 cnh 1.1 CALL MODELDATA_EXAMPLE( myThid )
733     STOP 'ABNORMAL END: S/R INI_PARMS'
734 jmc 1.72 ELSE
735     WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; read PARM02 : OK'
736     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
737 jmc 1.188 & SQUEEZE_RIGHT, myThid )
738 jmc 1.181 ENDIF
739 cnh 1.1
740     C-- Time stepping parameters
741 cnh 1.28 rCD = -1.D0
742 jmc 1.99 latBandClimRelax = UNSET_RL
743 jmc 1.139 deltaTtracer = 0. _d 0
744 jmc 1.180 forcing_In_AB = .TRUE.
745 jmc 1.124 WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; starts to read PARM03'
746     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
747 jmc 1.188 & SQUEEZE_RIGHT, myThid )
748 adcroft 1.41 READ(UNIT=iUnit,NML=PARM03) !,IOSTAT=errIO)
749 cnh 1.35 IF ( errIO .LT. 0 ) THEN
750 cnh 1.1 WRITE(msgBuf,'(A)')
751     & 'S/R INI_PARMS'
752 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
753 cnh 1.1 WRITE(msgBuf,'(A)')
754     & 'Error reading numerical model '
755 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
756 cnh 1.1 WRITE(msgBuf,'(A)')
757     & 'parameter file "data"'
758 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
759 cnh 1.1 WRITE(msgBuf,'(A)')
760     & 'Problem in namelist PARM03'
761 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
762 cnh 1.1 CALL MODELDATA_EXAMPLE( myThid )
763     STOP 'ABNORMAL END: S/R INI_PARMS'
764 jmc 1.72 ELSE
765     WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; read PARM03 : OK'
766     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
767 jmc 1.188 & SQUEEZE_RIGHT, myThid )
768 jmc 1.181 ENDIF
769 jmc 1.179 C Check for retired parameters still being used
770     IF ( tauThetaClimRelax3Dim .NE. UNSET_RL ) THEN
771     nRetired = nRetired+1
772     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tauThetaClimRelax3Dim" ',
773     & 'is no longer allowed in file "data"'
774 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
775 jmc 1.179 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: 3-dim. relaxation code',
776     & ' has moved to separate pkg/rbcs.'
777 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
778 jmc 1.179 ENDIF
779     IF ( tauSaltClimRelax3Dim .NE. UNSET_RL ) THEN
780     nRetired = nRetired+1
781     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "tauSaltClimRelax3Dim" ',
782     & 'is no longer allowed in file "data"'
783 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
784 jmc 1.179 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: 3-dim. relaxation code',
785     & ' has moved to separate pkg/rbcs.'
786 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
787 jmc 1.179 ENDIF
788 jmc 1.184 IF ( calendarDumps ) THEN
789     nRetired = nRetired+1
790     WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: "calendarDumps" ',
791     & 'is no longer allowed in file "data"'
792 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
793 jmc 1.184 WRITE(msgBuf,'(A,A)') 'S/R INI_PARMS: calendarDumps',
794     & ' has moved to "data.cal"'
795 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
796 jmc 1.184 ENDIF
797 jmc 1.179
798 cnh 1.4 C Process "timestepping" params
799     C o Time step size
800 jmc 1.139 IF ( deltaTtracer .NE. dTtracerLev(1) .AND.
801     & deltaTtracer .NE. 0. .AND. dTtracerLev(1) .NE. 0. ) THEN
802     WRITE(msgBuf,'(A)')
803     & 'S/R INI_PARMS: deltaTtracer & dTtracerLev(1) not equal'
804 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
805 jmc 1.139 STOP 'ABNORMAL END: S/R INI_PARMS'
806     ELSEIF ( dTtracerLev(1) .NE. 0. ) THEN
807     deltaTtracer = dTtracerLev(1)
808     ENDIF
809 jmc 1.186 IF ( deltaT .EQ. 0. ) deltaT = deltaTClock
810     IF ( deltaT .EQ. 0. ) deltaT = deltaTtracer
811 cnh 1.4 IF ( deltaT .EQ. 0. ) deltaT = deltaTmom
812 jmc 1.186 IF ( deltaT .EQ. 0. ) deltaT = deltaTfreesurf
813 cnh 1.4 IF ( deltaTmom .EQ. 0. ) deltaTmom = deltaT
814     IF ( deltaTtracer .EQ. 0. ) deltaTtracer = deltaT
815 cnh 1.7 IF ( deltaTClock .EQ. 0. ) deltaTClock = deltaT
816 jmc 1.139 DO k=1,Nr
817     IF (dTtracerLev(k).EQ.0.) dTtracerLev(k)= deltaTtracer
818     ENDDO
819 jmc 1.186 C Note that this line should set deltaFreesurf=deltaTtracer
820 adcroft 1.80 C but this would change a lot of existing set-ups so we are
821     C obliged to set the default inappropriately.
822     C Be advised that when using asynchronous time stepping
823     C it is better to set deltaTreesurf=deltaTtracer
824     IF ( deltaTfreesurf .EQ. 0. ) deltaTfreesurf = deltaTmom
825 adcroft 1.19 IF ( periodicExternalForcing ) THEN
826     IF ( externForcingCycle*externForcingPeriod .EQ. 0. ) THEN
827     WRITE(msgBuf,'(A)')
828     & 'S/R INI_PARMS: externForcingCycle,externForcingPeriod =0'
829 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
830 adcroft 1.19 STOP 'ABNORMAL END: S/R INI_PARMS'
831     ENDIF
832     IF ( INT(externForcingCycle/externForcingPeriod) .NE.
833     & externForcingCycle/externForcingPeriod ) THEN
834     WRITE(msgBuf,'(A)')
835     & 'S/R INI_PARMS: externForcingCycle <> N*externForcingPeriod'
836 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
837 adcroft 1.19 STOP 'ABNORMAL END: S/R INI_PARMS'
838     ENDIF
839 heimbach 1.137 IF ( externForcingCycle.lt.externForcingPeriod ) THEN
840 adcroft 1.19 WRITE(msgBuf,'(A)')
841     & 'S/R INI_PARMS: externForcingCycle < externForcingPeriod'
842 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
843 adcroft 1.19 STOP 'ABNORMAL END: S/R INI_PARMS'
844     ENDIF
845     IF ( externForcingPeriod.lt.deltaTclock ) THEN
846     WRITE(msgBuf,'(A)')
847     & 'S/R INI_PARMS: externForcingPeriod < deltaTclock'
848 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
849 adcroft 1.19 STOP 'ABNORMAL END: S/R INI_PARMS'
850     ENDIF
851     ENDIF
852 jmc 1.180 C o Adams-Bashforth time stepping:
853 jmc 1.188 IF ( momForcingOutAB .EQ. UNSET_I ) THEN
854 jmc 1.180 momForcingOutAB = 1
855     IF ( forcing_In_AB ) momForcingOutAB = 0
856     ENDIF
857 jmc 1.188 IF ( tracForcingOutAB .EQ. UNSET_I ) THEN
858 jmc 1.180 tracForcingOutAB = 1
859     IF ( forcing_In_AB ) tracForcingOutAB = 0
860     ENDIF
861 cnh 1.9 C o Convection frequency
862     IF ( cAdjFreq .LT. 0. ) THEN
863     cAdjFreq = deltaTClock
864     ENDIF
865 adcroft 1.46 IF ( ivdc_kappa .NE. 0. .AND. cAdjFreq .NE. 0. ) THEN
866     WRITE(msgBuf,'(A,A)')
867     & 'S/R INI_PARMS: You have enabled both ivdc_kappa and',
868     & ' convective adjustment.'
869 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
870 adcroft 1.46 STOP 'ABNORMAL END: S/R INI_PARMS'
871     ENDIF
872 jmc 1.95 IF (useCDscheme) THEN
873     C o CD coupling (CD scheme):
874     IF ( tauCD .EQ. 0.D0 ) tauCD = deltaTmom
875     IF ( rCD .LT. 0. ) rCD = 1. _d 0 - deltaTMom/tauCD
876 cnh 1.14 ENDIF
877 cnh 1.18 C o Temperature climatology relaxation time scale
878 cnh 1.28 IF ( tauThetaClimRelax .EQ. 0.D0 ) THEN
879 cnh 1.18 doThetaClimRelax = .FALSE.
880     ELSE
881     doThetaClimRelax = .TRUE.
882     ENDIF
883     C o Salinity climatology relaxation time scale
884 cnh 1.28 IF ( tauSaltClimRelax .EQ. 0.D0 ) THEN
885 cnh 1.18 doSaltClimRelax = .FALSE.
886     ELSE
887     doSaltClimRelax = .TRUE.
888 heimbach 1.64 ENDIF
889 adcroft 1.41
890 jmc 1.151 C o Base time
891     IF ( nIter0.NE.0 .AND. startTime.NE.0. .AND. baseTime.EQ.0. )
892     & baseTime = startTime - deltaTClock*float(nIter0)
893 adcroft 1.41 C o Start time
894     IF ( nIter0 .NE. 0 .AND. startTime .EQ. 0. )
895 jmc 1.151 & startTime = baseTime + deltaTClock*float(nIter0)
896 adcroft 1.41 C o nIter0
897 jmc 1.151 IF ( nIter0 .EQ. 0 .AND. startTime .NE. baseTime )
898     & nIter0 = NINT( (startTime-baseTime)/deltaTClock )
899 adcroft 1.46
900     C o nTimeSteps 1
901     IF ( nTimeSteps .EQ. 0 .AND. nEndIter .NE. 0 )
902     & nTimeSteps = nEndIter-nIter0
903     C o nTimeSteps 2
904 adcroft 1.41 IF ( nTimeSteps .EQ. 0 .AND. endTime .NE. 0. )
905 jmc 1.151 & nTimeSteps = NINT((endTime-startTime)/deltaTclock)
906 adcroft 1.46 C o nEndIter 1
907     IF ( nEndIter .EQ. 0 .AND. nTimeSteps .NE. 0 )
908     & nEndIter = nIter0+nTimeSteps
909     C o nEndIter 2
910     IF ( nEndIter .EQ. 0 .AND. endTime .NE. 0. )
911 jmc 1.151 & nEndIter = NINT((endTime-baseTime)/deltaTclock)
912 adcroft 1.46 C o End Time 1
913     IF ( endTime .EQ. 0. .AND. nTimeSteps .NE. 0 )
914     & endTime = startTime + deltaTClock*float(nTimeSteps)
915     C o End Time 2
916     IF ( endTime .EQ. 0. .AND. nEndIter .NE. 0 )
917 jmc 1.151 & endTime = baseTime + deltaTClock*float(nEndIter)
918 adcroft 1.46
919 adcroft 1.41 C o Consistent?
920 jmc 1.151 IF ( startTime .NE. baseTime+deltaTClock*float(nIter0) ) THEN
921     WRITE(msgBuf,'(A)')
922     & 'S/R INI_PARMS: startTime, baseTime and nIter0 are inconsistent'
923 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
924 jmc 1.151 WRITE(msgBuf,'(A)')
925     & 'S/R INI_PARMS: Perhaps more than two were set at once'
926 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
927 jmc 1.151 STOP 'ABNORMAL END: S/R INI_PARMS'
928     ENDIF
929 adcroft 1.46 IF ( nEndIter .NE. nIter0+nTimeSteps ) THEN
930     WRITE(msgBuf,'(A)')
931     & 'S/R INI_PARMS: nIter0, nTimeSteps and nEndIter are inconsistent'
932 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
933 adcroft 1.46 WRITE(msgBuf,'(A)')
934     & 'S/R INI_PARMS: Perhaps more than two were set at once'
935 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
936 adcroft 1.46 STOP 'ABNORMAL END: S/R INI_PARMS'
937     ENDIF
938 jmc 1.188 IF ( nTimeSteps .NE. NINT((endTime-startTime)/deltaTClock)
939     & ) THEN
940     WRITE(msgBuf,'(A)')
941     & 'S/R INI_PARMS: both endTime and nTimeSteps have been set'
942     CALL PRINT_ERROR( msgBuf, myThid )
943     WRITE(msgBuf,'(A)')
944     & 'S/R INI_PARMS: but are inconsistent'
945     CALL PRINT_ERROR( msgBuf, myThid )
946     STOP 'ABNORMAL END: S/R INI_PARMS'
947 adcroft 1.60 ENDIF
948    
949     C o Monitor (should also add CPP flag for monitor?)
950     IF (monitorFreq.LT.0.) THEN
951     monitorFreq=0.
952 adcroft 1.62 IF (dumpFreq.NE.0.) monitorFreq=dumpFreq
953 adcroft 1.67 IF (diagFreq.NE.0..AND.diagFreq.LT.monitorFreq)
954     & monitorFreq=diagFreq
955 adcroft 1.62 IF (taveFreq.NE.0..AND.taveFreq.LT.monitorFreq)
956     & monitorFreq=taveFreq
957     IF (chkPtFreq.NE.0..AND.chkPtFreq.LT.monitorFreq)
958     & monitorFreq=chkPtFreq
959     IF (pChkPtFreq.NE.0..AND.pChkPtFreq.LT.monitorFreq)
960     & monitorFreq=pChkPtFreq
961 adcroft 1.60 IF (monitorFreq.EQ.0.) monitorFreq=deltaTclock
962 cnh 1.4 ENDIF
963 jmc 1.204 IF ( monitorSelect.EQ.UNSET_I ) THEN
964     monitorSelect = 2
965     IF ( fluidIsWater ) monitorSelect = 3
966     ENDIF
967 adcroft 1.21
968 cnh 1.1 C-- Grid parameters
969     C In cartesian coords distances are in metres
970 cnh 1.26 DO K =1,Nr
971 cnh 1.28 delZ(K) = UNSET_RL
972     delP(K) = UNSET_RL
973     delR(K) = UNSET_RL
974 cnh 1.1 ENDDO
975     C In spherical polar distances are in degrees
976 adcroft 1.39 dxSpacing = UNSET_RL
977     dySpacing = UNSET_RL
978 jmc 1.124 WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; starts to read PARM04'
979     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
980 jmc 1.188 & SQUEEZE_RIGHT, myThid )
981 mlosch 1.82 READ(UNIT=iUnit,NML=PARM04,IOSTAT=errIO)
982 cnh 1.35 IF ( errIO .LT. 0 ) THEN
983 cnh 1.1 WRITE(msgBuf,'(A)')
984     & 'S/R INI_PARMS'
985 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
986 cnh 1.1 WRITE(msgBuf,'(A)')
987     & 'Error reading numerical model '
988 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
989 cnh 1.1 WRITE(msgBuf,'(A)')
990     & 'parameter file "data"'
991 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
992 cnh 1.1 WRITE(msgBuf,'(A)')
993     & 'Problem in namelist PARM04'
994 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
995 cnh 1.1 CALL MODELDATA_EXAMPLE( myThid )
996     STOP 'ABNORMAL END: S/R INI_PARMS'
997 jmc 1.72 ELSE
998     WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; read PARM04 : OK'
999     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1000 jmc 1.188 & SQUEEZE_RIGHT, myThid )
1001 jmc 1.181 ENDIF
1002 adcroft 1.48
1003 jmc 1.158 C Check for retired parameters still being used
1004     IF ( rkFac .NE. UNSET_RL ) THEN
1005     nRetired = nRetired+1
1006     WRITE(msgBuf,'(A,A)')
1007     & 'S/R INI_PARMS: "rkFac" has been replaced by -rkSign ',
1008     & ' and is no longer allowed in file "data".'
1009 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1010 jmc 1.158 ENDIF
1011     IF ( groundAtK1 ) THEN
1012     c nRetired = nRetired+1
1013     WRITE(msgBuf,'(A,A)')
1014     & 'S/R INI_PARMS: "groundAtK1" is set according to vertical ',
1015     & ' coordinate and is no longer allowed in file "data".'
1016 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1017 jmc 1.158 ENDIF
1018    
1019 jmc 1.162 C X coordinate : Check for multiple definitions
1020     goptCount = 0
1021     IF ( delX(1) .NE. UNSET_RL ) goptCount = goptCount + 1
1022     IF ( dxSpacing .NE. UNSET_RL ) goptCount = goptCount + 1
1023     IF ( delXFile .NE. ' ' ) goptCount = goptCount + 1
1024     IF ( goptCount.GT.1 ) THEN
1025 jmc 1.188 WRITE(msgBuf,'(A,A)') 'Too many specifications for delX:',
1026 adcroft 1.48 & 'Specify only one of delX, dxSpacing or delXfile'
1027 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1028     STOP 'ABNORMAL END: S/R INI_PARMS'
1029 adcroft 1.48 ENDIF
1030 adcroft 1.39 IF ( dxSpacing .NE. UNSET_RL ) THEN
1031     DO i=1,Nx
1032     delX(i) = dxSpacing
1033     ENDDO
1034     ENDIF
1035 jmc 1.162 C Y coordinate : Check for multiple definitions
1036     goptCount = 0
1037     IF ( delY(1) .NE. UNSET_RL ) goptCount = goptCount + 1
1038     IF ( dySpacing .NE. UNSET_RL ) goptCount = goptCount + 1
1039     IF ( delYFile .NE. ' ' ) goptCount = goptCount + 1
1040     IF ( goptCount.GT.1 ) THEN
1041 jmc 1.188 WRITE(msgBuf,'(A,A)') 'Too many specifications for delY:',
1042 adcroft 1.48 & 'Specify only one of delY, dySpacing or delYfile'
1043 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1044     STOP 'ABNORMAL END: S/R INI_PARMS'
1045 adcroft 1.48 ENDIF
1046 adcroft 1.39 IF ( dySpacing .NE. UNSET_RL ) THEN
1047 jmc 1.162 DO j=1,Ny
1048     delY(j) = dySpacing
1049 adcroft 1.39 ENDDO
1050     ENDIF
1051 adcroft 1.48 C
1052 jmc 1.188 IF ( rSphere .NE. 0. ) THEN
1053     recip_rSphere = 1. _d 0/rSphere
1054 cnh 1.14 ELSE
1055 cnh 1.26 recip_rSphere = 0.
1056 adcroft 1.11 ENDIF
1057 cnh 1.28 C-- Check for conflicting grid definitions.
1058 cnh 1.1 goptCount = 0
1059     IF ( usingCartesianGrid ) goptCount = goptCount+1
1060     IF ( usingSphericalPolarGrid ) goptCount = goptCount+1
1061 adcroft 1.59 IF ( usingCurvilinearGrid ) goptCount = goptCount+1
1062 afe 1.114 IF ( usingCylindricalGrid ) goptCount = goptCount+1
1063 adcroft 1.59 IF ( goptCount .GT. 1 ) THEN
1064 cnh 1.1 WRITE(msgBuf,'(A)')
1065     & 'S/R INI_PARMS: More than one coordinate system requested'
1066 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1067 cnh 1.1 STOP 'ABNORMAL END: S/R INI_PARMS'
1068 cnh 1.14 ENDIF
1069 adcroft 1.59 IF ( goptCount .LT. 1 ) THEN
1070 jmc 1.103 C- No horizontal grid is specified => use Cartesian grid as default:
1071 adcroft 1.59 WRITE(msgBuf,'(A)')
1072 jmc 1.103 & 'S/R INI_PARMS: No horizontal grid requested'
1073     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1074 jmc 1.188 & SQUEEZE_RIGHT, myThid )
1075 jmc 1.103 WRITE(msgBuf,'(A)')
1076     & 'S/R INI_PARMS: => Use Cartesian Grid as default'
1077     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1078 jmc 1.188 & SQUEEZE_RIGHT, myThid )
1079 jmc 1.103 usingCartesianGrid = .TRUE.
1080 adcroft 1.59 ENDIF
1081 jmc 1.187 C-- Make metric term & Coriolis settings consistent with underlying grid.
1082 cnh 1.14 IF ( usingCartesianGrid ) THEN
1083 jmc 1.187 metricTerms = .FALSE.
1084     useNHMTerms = .FALSE.
1085 cnh 1.18 useBetaPlaneF = .TRUE.
1086 cnh 1.14 ENDIF
1087 jmc 1.187 IF ( usingCylindricalGrid ) THEN
1088     useNHMTerms = .FALSE.
1089 afe 1.114 useBetaPlaneF = .TRUE.
1090     WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; Cylinder OK'
1091     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1092 jmc 1.188 & SQUEEZE_RIGHT, myThid )
1093 afe 1.114 ENDIF
1094 adcroft 1.59 IF ( usingCurvilinearGrid ) THEN
1095 jmc 1.187 metricTerms = .FALSE.
1096 cnh 1.1 ENDIF
1097 jmc 1.187 IF ( useConstantF ) useBetaPlaneF = .FALSE.
1098     IF ( useConstantF ) useSphereF = .FALSE.
1099     IF ( useBetaPlaneF ) useSphereF = .FALSE.
1100     IF ( usingCartesianGrid .OR. usingCylindricalGrid
1101     & .OR. .NOT.(nonHydrostatic.OR.quasiHydrostatic) )
1102     & use3dCoriolis = .FALSE.
1103 jmc 1.183
1104 mlosch 1.205 C-- Grid rotation
1105     IF ( phiEuler .NE. 0. _d 0 .OR. thetaEuler .NE. 0. _d 0
1106     & .OR. psiEuler .NE. 0. _d 0 ) rotateGrid = .TRUE.
1107    
1108 jmc 1.99 C-- Set default for latitude-band where relaxation to climatology applies
1109 jmc 1.162 C note: done later (once domain size is known) if using CartesianGrid
1110 jmc 1.99 IF ( latBandClimRelax .EQ. UNSET_RL) THEN
1111     IF ( usingSphericalPolarGrid ) latBandClimRelax= 180. _d 0
1112     IF ( usingCurvilinearGrid ) latBandClimRelax= 180. _d 0
1113     ENDIF
1114 jmc 1.78 C-- set cell Center depth and put Interface at the middle between 2 C
1115     setCenterDr = .FALSE.
1116     DO K=1,Nr+1
1117 jmc 1.188 IF ( delRc(K).EQ.UNSET_RL ) THEN
1118     IF ( setCenterDr ) THEN
1119     WRITE(msgBuf,'(A,I4)')
1120     & 'S/R INI_PARMS: No value for delRc at K =', K
1121     CALL PRINT_ERROR( msgBuf, myThid )
1122     STOP 'ABNORMAL END: S/R INI_PARMS'
1123     ENDIF
1124     ELSE
1125     IF ( k.EQ.1 ) setCenterDr = .TRUE.
1126     IF ( .NOT.setCenterDr ) THEN
1127     WRITE(msgBuf,'(A,I4)')
1128     & 'S/R INI_PARMS: No value for delRc at K <', K
1129     CALL PRINT_ERROR( msgBuf, myThid )
1130     STOP 'ABNORMAL END: S/R INI_PARMS'
1131     ENDIF
1132     ENDIF
1133 jmc 1.78 ENDDO
1134 jmc 1.188 IF ( setCenterDr ) rCoordInputData = .TRUE.
1135 cnh 1.28 C-- p, z, r coord parameters
1136 jmc 1.188 setInterFDr = .FALSE.
1137 cnh 1.28 DO K = 1, Nr
1138     IF ( delZ(K) .NE. UNSET_RL ) zCoordInputData = .TRUE.
1139     IF ( delP(K) .NE. UNSET_RL ) pCoordInputData = .TRUE.
1140     IF ( delR(K) .NE. UNSET_RL ) rCoordInputData = .TRUE.
1141     IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delZ(K)
1142     IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delP(K)
1143 jmc 1.188 IF ( delR(K) .EQ. UNSET_RL ) THEN
1144     IF ( setInterFDr ) THEN
1145 adcroft 1.41 WRITE(msgBuf,'(A,I4)')
1146 jmc 1.188 & 'S/R INI_PARMS: No value for delZ/delP/delR at K =', K
1147     CALL PRINT_ERROR( msgBuf, myThid )
1148 jmc 1.78 STOP 'ABNORMAL END: S/R INI_PARMS'
1149 jmc 1.188 ENDIF
1150     ELSE
1151     IF ( k.EQ.1 ) setInterFDr = .TRUE.
1152     IF ( .NOT.setInterFDr ) THEN
1153     WRITE(msgBuf,'(A,I4)')
1154     & 'S/R INI_PARMS: No value for delZ/delP/delR at K <', K
1155     CALL PRINT_ERROR( msgBuf, myThid )
1156 adcroft 1.41 STOP 'ABNORMAL END: S/R INI_PARMS'
1157 jmc 1.188 ENDIF
1158 adcroft 1.41 ENDIF
1159 cnh 1.28 ENDDO
1160     C Check for multiple coordinate systems
1161 jmc 1.188 coordsSet = 0
1162 cnh 1.28 IF ( zCoordInputData ) coordsSet = coordsSet + 1
1163     IF ( pCoordInputData ) coordsSet = coordsSet + 1
1164     IF ( rCoordInputData ) coordsSet = coordsSet + 1
1165     IF ( coordsSet .GT. 1 ) THEN
1166     WRITE(msgBuf,'(A)')
1167     & 'S/R INI_PARMS: Cannot mix z, p and r in the input data.'
1168 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1169 cnh 1.28 STOP 'ABNORMAL END: S/R INI_PARMS'
1170     ENDIF
1171 jmc 1.188 C- Check for double definition (file & namelist)
1172     IF ( delRcFile.NE.' ' ) THEN
1173     IF ( setCenterDr ) THEN
1174     WRITE(msgBuf,'(A)')
1175     & 'S/R INI_PARMS: Cannot set both delRc and delRcFile'
1176     CALL PRINT_ERROR( msgBuf, myThid )
1177     STOP 'ABNORMAL END: S/R INI_PARMS'
1178     ENDIF
1179     setCenterDr = .TRUE.
1180     ENDIF
1181     IF ( delRFile.NE.' ' ) THEN
1182     IF ( setInterFDr ) THEN
1183     WRITE(msgBuf,'(A)')
1184     & 'S/R INI_PARMS: Cannot set both delR and delRFile'
1185     CALL PRINT_ERROR( msgBuf, myThid )
1186     STOP 'ABNORMAL END: S/R INI_PARMS'
1187     ENDIF
1188     setInterFDr = .TRUE.
1189     ENDIF
1190     c IF ( setInterFDr .AND. setCenterDr ) THEN
1191     c WRITE(msgBuf,'(2A)') 'S/R INI_PARMS:',
1192     c & ' Cannot specify both delRc and delZ/delP/delR'
1193     c CALL PRINT_ERROR( msgBuf, myThid )
1194     c STOP 'ABNORMAL END: S/R INI_PARMS'
1195     c ENDIF
1196 jmc 1.92
1197 cnh 1.15 C-- Input files
1198 jmc 1.124 WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; starts to read PARM05'
1199     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1200 jmc 1.188 & SQUEEZE_RIGHT, myThid )
1201 adcroft 1.41 READ(UNIT=iUnit,NML=PARM05) !,IOSTAT=errIO)
1202 jmc 1.181 IF ( errIO .LT. 0 ) THEN
1203 cnh 1.15 WRITE(msgBuf,'(A)')
1204     & 'Error reading numerical model '
1205 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1206 cnh 1.15 WRITE(msgBuf,'(A)')
1207     & 'parameter file "data"'
1208 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1209 cnh 1.15 WRITE(msgBuf,'(A)')
1210     & 'Problem in namelist PARM05'
1211 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1212 cnh 1.15 CALL MODELDATA_EXAMPLE( myThid )
1213     STOP 'ABNORMAL END: S/R INI_PARMS'
1214 jmc 1.72 ELSE
1215     WRITE(msgBuf,'(A)') 'S/R INI_PARMS ; read PARM05 : OK'
1216     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1217 jmc 1.188 & SQUEEZE_RIGHT, myThid )
1218 jmc 1.181 ENDIF
1219 cnh 1.25
1220 jmc 1.198 C-- Set Units conversion factor required to incorporate
1221     C surface forcing into z-p isomorphic equations:
1222     C mass2rUnit: from mass per unit area [kg/m2] to r-coordinate (z:=1/rho;p:=g)
1223     C rUnit2mass: from r-coordinate to mass per unit area [kg/m2] (z:=rho;p:=1/g)
1224 jmc 1.133 IF ( usingPCoords ) THEN
1225 jmc 1.198 mass2rUnit = gravity
1226     rUnit2mass = recip_gravity
1227     ELSE
1228     mass2rUnit = recip_rhoConst
1229     rUnit2mass = rhoConst
1230 jmc 1.85 ENDIF
1231 adcroft 1.37
1232 heimbach 1.97 c-- gradually replacing debugMode by debugLevel
1233 jmc 1.142 IF ( debugMode ) debugLevel = debLevB
1234 dimitri 1.201 IF ( debugLevel .GE. debLevB ) debugMode = .TRUE.
1235 jmc 1.142
1236 heimbach 1.146 c-- flag for approximate adjoint
1237     IF ( inAdExact ) THEN
1238     inAdTrue = .FALSE.
1239     inAdFALSE = .FALSE.
1240     ELSE
1241     inAdTrue = .TRUE.
1242     inAdFALSE = .FALSE.
1243     ENDIF
1244     C
1245 cnh 1.25 CLOSE(iUnit)
1246 cnh 1.75
1247     C-- Check whether any retired parameters were found.
1248     C-- Stop if they were
1249 jmc 1.179 IF ( nRetired .GT. 0 ) THEN
1250 cnh 1.75 WRITE(msgBuf,'(A)')
1251 jmc 1.167 & 'Error reading parameter file "data"'
1252 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1253 cnh 1.75 WRITE(msgBuf,'(A)')
1254     & 'some out of date parameters were found in the namelist'
1255 jmc 1.188 CALL PRINT_ERROR( msgBuf, myThid )
1256 cnh 1.75 STOP 'ABNORMAL END: S/R INI_PARMS'
1257     ENDIF
1258 cnh 1.1
1259     _END_MASTER(myThid)
1260    
1261     C-- Everyone else must wait for the parameters to be loaded
1262     _BARRIER
1263     C
1264     RETURN
1265     END

  ViewVC Help
Powered by ViewVC 1.1.22