| 1 | C $Header: /u/gcmpack/MITgcm_contrib/osse/codemod/PARAMS.h,v 1.2 2004/06/23 18:42:58 afe Exp $ | 
| 2 | C $Name:  $ | 
| 3 | C | 
| 4 | CBOP | 
| 5 | C    !ROUTINE: PARAMS.h | 
| 6 | C    !INTERFACE: | 
| 7 | C    include PARAMS.h | 
| 8 | C    !DESCRIPTION: \bv | 
| 9 | C     *==========================================================* | 
| 10 | C     | PARAMS.h | 
| 11 | C     | o Header file defining model "parameters". | 
| 12 | C     *==========================================================* | 
| 13 | C     | The values from the model standard input file are | 
| 14 | C     | stored into the variables held here. Notes describing | 
| 15 | C     | the parameters can also be found here. | 
| 16 | C     *==========================================================* | 
| 17 | C     \ev | 
| 18 | CEOP | 
| 19 |  | 
| 20 | C     Macros for special grid options | 
| 21 | #include "PARAMS_MACROS.h" | 
| 22 |  | 
| 23 | C--   Contants | 
| 24 | C     Useful physical values | 
| 25 | Real*8 PI | 
| 26 | PARAMETER ( PI    = 3.14159265358979323844D0   ) | 
| 27 | Real*8 deg2rad | 
| 28 | PARAMETER ( deg2rad = 2.D0*PI/360.D0           ) | 
| 29 |  | 
| 30 | C     Symbolic values | 
| 31 | C     precXXXX :: Used to indicate what precision to use for | 
| 32 | C                dumping model state. | 
| 33 | INTEGER precFloat32 | 
| 34 | PARAMETER ( precFloat32 = 32 ) | 
| 35 | INTEGER precFloat64 | 
| 36 | PARAMETER ( precFloat64 = 64 ) | 
| 37 | C     UNSET_xxx :: Used to indicate variables that have not been given a value | 
| 38 | Real*8 UNSET_FLOAT8 | 
| 39 | PARAMETER ( UNSET_FLOAT8 = 1.234567D5 ) | 
| 40 | Real*4 UNSET_FLOAT4 | 
| 41 | PARAMETER ( UNSET_FLOAT4 = 1.234567E5 ) | 
| 42 | _RL    UNSET_RL | 
| 43 | PARAMETER ( UNSET_RL     = 1.234567D5 ) | 
| 44 | _RS    UNSET_RS | 
| 45 | PARAMETER ( UNSET_RS     = 1.234567E5 ) | 
| 46 | INTEGER UNSET_I | 
| 47 | PARAMETER ( UNSET_I      = 123456789  ) | 
| 48 |  | 
| 49 | C     Checkpoint data | 
| 50 | INTEGER maxNoChkptLev | 
| 51 | PARAMETER ( maxNoChkptLev = 2 ) | 
| 52 |  | 
| 53 | C--   COMMON /PARM_C/ Character valued parameters used by the model. | 
| 54 | C     checkPtSuff :: List of checkpoint file suffices | 
| 55 | C     bathyFile   :: File containing bathymetry. If not defined bathymetry | 
| 56 | C                   is taken from inline function. | 
| 57 | C     topoFile    :: File containing the topography of the surface (unit=m) | 
| 58 | C                   (mainly used for the atmosphere = ground height). | 
| 59 | C     hydrogThetaFile :: File containing initial hydrographic data for potential | 
| 60 | C                       temperature. | 
| 61 | C     hydrogSaltFile  :: File containing initial hydrographic data for salinity. | 
| 62 | C     zonalWindFile   :: File containing zonal wind data | 
| 63 | C     meridWindFile   :: File containing meridional wind data | 
| 64 | C     thetaClimFile   :: File containing theta climataology used | 
| 65 | C                       in relaxation term -lambda(theta-theta*) | 
| 66 | C     saltClimFile    :: File containing salt climataology used | 
| 67 | C                       in relaxation term -lambda(salt-salt*) | 
| 68 | C     surfQfile       :: File containing surface heat flux | 
| 69 | C     surfQswfile     :: File containing surface shortwave radiation | 
| 70 | C     dQdTfile        :: File containing thermal relaxation coefficient | 
| 71 | C     EmPmRfile       :: File containing surface fresh water flux | 
| 72 | C     pLoadFile       :: File containing pressure loading | 
| 73 | C     buoyancyRelation :: Flag used to indicate which relation to use to | 
| 74 | C                        get buoyancy. | 
| 75 | C     eosType         :: choose the equation of state: | 
| 76 | C                        LINEAR, POLY3, UNESCO, JMD95Z, JMD95P, MDJWF, IDEALGAS | 
| 77 | COMMON /PARM_C/ checkPtSuff, | 
| 78 | &                bathyFile, topoFile, | 
| 79 | &                hydrogThetaFile, hydrogSaltFile, | 
| 80 | &                zonalWindFile, meridWindFile, thetaClimFile, | 
| 81 | &                saltClimFile, buoyancyRelation, | 
| 82 | &                EmPmRfile, surfQfile, surfQswfile, | 
| 83 | &                uVelInitFile, vVelInitFile, pSurfInitFile, | 
| 84 | &                dQdTfile, ploadFile, | 
| 85 | &                eosType, pickupSuff, | 
| 86 | &                mdsioLocalDir, tCyl | 
| 87 | CHARACTER*(5) checkPtSuff(maxNoChkptLev) | 
| 88 | CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile | 
| 89 | CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile | 
| 90 | CHARACTER*(MAX_LEN_FNAM) hydrogSaltFile | 
| 91 | CHARACTER*(MAX_LEN_FNAM) zonalWindFile | 
| 92 | CHARACTER*(MAX_LEN_FNAM) meridWindFile | 
| 93 | CHARACTER*(MAX_LEN_FNAM) thetaClimFile | 
| 94 | CHARACTER*(MAX_LEN_FNAM) saltClimFile | 
| 95 | CHARACTER*(MAX_LEN_FNAM) surfQfile | 
| 96 | CHARACTER*(MAX_LEN_FNAM) surfQswfile | 
| 97 | CHARACTER*(MAX_LEN_FNAM) EmPmRfile | 
| 98 | CHARACTER*(MAX_LEN_FNAM) buoyancyRelation | 
| 99 | CHARACTER*(MAX_LEN_FNAM) uVelInitFile | 
| 100 | CHARACTER*(MAX_LEN_FNAM) vVelInitFile | 
| 101 | CHARACTER*(MAX_LEN_FNAM) pSurfInitFile | 
| 102 | CHARACTER*(MAX_LEN_FNAM) dQdTfile | 
| 103 | CHARACTER*(MAX_LEN_FNAM) ploadFile | 
| 104 | CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir | 
| 105 | CHARACTER*(6) eosType | 
| 106 | CHARACTER*(10) pickupSuff | 
| 107 | _RL tCyl | 
| 108 |  | 
| 109 | C--   COMMON /PARM_I/ Integer valued parameters used by the model. | 
| 110 | C     cg2dMaxIters        :: Maximum number of iterations in the | 
| 111 | C                           two-dimensional con. grad solver. | 
| 112 | C     cg2dChkResFreq      :: Frequency with which to check residual | 
| 113 | C                           in con. grad solver. | 
| 114 | C     cg3dMaxIters        :: Maximum number of iterations in the | 
| 115 | C                           three-dimensional con. grad solver. | 
| 116 | C     cg3dChkResFreq      :: Frequency with which to check residual | 
| 117 | C                           in con. grad solver. | 
| 118 | C     nIter0              :: Start time-step number of for this run | 
| 119 | C     nTimeSteps          :: Number of timesteps to execute | 
| 120 | C     numStepsPerPickup   :: For offline setup. Frequency of pickup | 
| 121 | C                           of flow fields. | 
| 122 | C     writeStatePrec      :: Precision used for writing model state. | 
| 123 | C     writeBinaryPrec     :: Precision used for writing binary files | 
| 124 | C     readBinaryPrec      :: Precision used for reading binary files | 
| 125 | C     nCheckLev           :: Holds current checkpoint level | 
| 126 | C     nonlinFreeSurf      :: option related to non-linear free surface | 
| 127 | C                           =0 Linear free surface ; >0 Non-linear | 
| 128 | C     select_rStar        :: option related to r* vertical coordinate | 
| 129 | C                           =0 (default) use r coord. ; > 0 use r* | 
| 130 |  | 
| 131 | COMMON /PARM_I/ | 
| 132 | &        cg2dMaxIters, | 
| 133 | &        cg2dChkResFreq, | 
| 134 | &        cg3dMaxIters, | 
| 135 | &        cg3dChkResFreq, | 
| 136 | &        nIter0, nTimeSteps, nEndIter, | 
| 137 | &        numStepsPerPickup, | 
| 138 | &        writeStatePrec, nCheckLev, | 
| 139 | &        writeBinaryPrec, readBinaryPrec, | 
| 140 | &        nonlinFreeSurf, select_rStar, | 
| 141 | &        tempAdvScheme, saltAdvScheme, tracerAdvScheme, | 
| 142 | &        debugLevel | 
| 143 | INTEGER cg2dMaxIters | 
| 144 | INTEGER cg2dChkResFreq | 
| 145 | INTEGER cg3dMaxIters | 
| 146 | INTEGER cg3dChkResFreq | 
| 147 | INTEGER nIter0 | 
| 148 | INTEGER nTimeSteps | 
| 149 | INTEGER nEndIter | 
| 150 | INTEGER numStepsPerPickup | 
| 151 | INTEGER writeStatePrec | 
| 152 | INTEGER writeBinaryPrec | 
| 153 | INTEGER readBinaryPrec | 
| 154 | INTEGER nCheckLev | 
| 155 | INTEGER nonlinFreeSurf | 
| 156 | INTEGER select_rStar | 
| 157 | INTEGER tempAdvScheme | 
| 158 | INTEGER saltAdvScheme | 
| 159 | INTEGER tracerAdvScheme | 
| 160 | INTEGER debugLevel | 
| 161 |  | 
| 162 | C | 
| 163 | INTEGER debLevZero | 
| 164 | PARAMETER(debLevZero=0) | 
| 165 | INTEGER debLevA | 
| 166 | PARAMETER(debLevA=1) | 
| 167 | INTEGER debLevB | 
| 168 | PARAMETER(debLevB=2) | 
| 169 |  | 
| 170 | C--   COMMON /PARM_L/ Logical valued parameters used by the model. | 
| 171 | C     usingCartesianGrid :: If TRUE grid generation will be in a cartesian | 
| 172 | C                          coordinate frame. | 
| 173 | C     usingSphericalPolarGrid :: If TRUE grid generation will be in a | 
| 174 | C                               spherical polar frame. | 
| 175 | C     usingCylindricalGrid :: If TRUE grid generation will be Cylindrical | 
| 176 | C     no_slip_sides :: Impose "no-slip" at lateral boundaries. | 
| 177 | C     no_slip_bottom :: Impose "no-slip" at bottom boundary. | 
| 178 | C     staggerTimeStep :: enable a Stagger time stepping T,S Rho then U,V | 
| 179 | C     momViscosity  :: Flag which turns momentum friction terms on and off. | 
| 180 | C     momAdvection  :: Flag which turns advection of momentum on and off. | 
| 181 | C     momForcing    :: Flag which turns external forcing of momentum on | 
| 182 | C                     and off. | 
| 183 | C     momPressureForcing :: Flag which turns pressure term in momentum equation | 
| 184 | C                          on and off. | 
| 185 | C     metricTerms   :: Flag which turns metric terms on or off. | 
| 186 | C     usingSphericalPolarMTerms :: If TRUE use spherical polar metric terms. | 
| 187 | C     useNHMTerms :: If TRUE use non-hydrostatic metric terms. | 
| 188 | C     useCoriolis   :: Flag which turns the coriolis terms on and off. | 
| 189 | C     tempDiffusion :: Flag which turns diffusion of temperature on | 
| 190 | C                     and off. | 
| 191 | C     tempAdvection :: Flag which turns advection of temperature on | 
| 192 | C                     and off. | 
| 193 | C     tempForcing   :: Flag which turns external forcing of temperature on | 
| 194 | C                     and off. | 
| 195 | C     saltDiffusion :: Flag which turns diffusion of salinity on | 
| 196 | C                     and off. | 
| 197 | C     saltAdvection :: Flag which turns advection of salinity on | 
| 198 | C                     and off. | 
| 199 | C     saltForcing   :: Flag which turns external forcing of salinity on | 
| 200 | C                     and off. | 
| 201 | C     useRealFreshWaterFlux :: if True (=Natural BCS), treats P+R-E flux | 
| 202 | C                         as a real Fresh Water (=> changes the Sea Level) | 
| 203 | C                         if F, converts P+R-E to salt flux (no SL effect) | 
| 204 | C     rigidLid            :: Set to true to use rigid lid | 
| 205 | C     implicitFreeSurface :: Set to true to use implcit free surface | 
| 206 | C     exactConserv        :: Set to true to conserve exactly the total Volume | 
| 207 | C     uniformLin_PhiSurf  :: Set to true to use a uniform Bo_surf in the | 
| 208 | C                           linear relation Phi_surf = Bo_surf*eta | 
| 209 | C     momStepping   :: Turns momentum equation time-stepping off | 
| 210 | C     tempStepping  :: Turns temperature equation time-stepping off | 
| 211 | C     saltStepping  :: Turns salinity equation time-stepping off | 
| 212 | C     tr1Stepping   :: Turns passive tracer 1 time-stepping on/off | 
| 213 | C     useConstantF  :: Coriolis parameter set to f0 | 
| 214 | C     useBetaPlaneF :: Coriolis parameter set to f0 + beta.y | 
| 215 | C     useSphereF    :: Coriolis parameter set to 2.omega.sin(phi) | 
| 216 | C     useCDscheme   :: use CD-scheme to calculate Coriolis terms. | 
| 217 | C     useJamartWetPoints :: Use wet-point method for Coriolis (Jamart and Ozer, 1986) | 
| 218 | C     useJamartMomAdv :: Use wet-point method for V.I. non-linear term | 
| 219 | C     SadournyCoriolis :: use the enstrophy conserving scheme by Sadourny | 
| 220 | C     upwindVorticity :: bias interpolation of vorticity in the Coriolis term | 
| 221 | C     highOrderVorticity :: use 3rd/4th order interp. of vorticity in Coriolis | 
| 222 | C     useAbsVorticity :: work with f+zeta in Coriolis terms | 
| 223 | C     implicitDiffusion :: Turns implicit vertical diffusion on | 
| 224 | C     implicitViscosity :: Turns implicit vertical viscosity on | 
| 225 | C     tempImplVertAdv :: Turns on implicit vertical advection for Temperature | 
| 226 | C     saltImplVertAdv :: Turns on implicit vertical advection for Salinity | 
| 227 | C     momImplVertAdv  :: Turns on implicit vertical advection for Momentum | 
| 228 | C     multiDimAdvection :: Flag that enable multi-dimension advection | 
| 229 | C     forcing_In_AB :: if False, put forcing (Temp,Salt,Tracers) contribution | 
| 230 | C                      out off Adams-Bashforth time stepping. | 
| 231 | C     doThetaClimRelax :: Set true if relaxation to temperature | 
| 232 | C                        climatology is required. | 
| 233 | C     doSaltClimRelax  :: Set true if relaxation to salinity | 
| 234 | C                        climatology is required. | 
| 235 | C     periodicExternalForcing :: Set true if forcing is time-dependant | 
| 236 | C     usingPCoords     :: Set to indicate that we are working in pressure | 
| 237 | C                        coords. (jmc: is it still used ?) | 
| 238 | C     usingZCoords     :: Set to indicate that we are working in height | 
| 239 | C                        coords. (jmc: is it still used ?) | 
| 240 | C     useDynP_inEos_Zc :: use the dynamical pressure in EOS (with Z-coord.) | 
| 241 | C                         this requires specific code for restart & exchange | 
| 242 | C     setCenterDr    :: set cell Center depth and put Interface at the middle | 
| 243 | C     nonHydrostatic :: Using non-hydrostatic terms | 
| 244 | C     quasiHydrostatic :: Using non-hydrostatic terms in hydrostatic algorithm | 
| 245 | C     globalFiles    :: Selects between "global" and "tiled" files | 
| 246 | C     useSingleCpuIO :: On SGI platforms, option globalFiles is either | 
| 247 | C                       slow (f77) or does not work (f90).  When | 
| 248 | C                       useSingleCpuIO is set, mdsio_writefield.F | 
| 249 | C                       outputs from master mpi process only. | 
| 250 | C     allowFreezing  :: Allows surface water to freeze and form ice | 
| 251 | C     useOldFreezing :: use the old version (before checkpoint52a_pre, 2003-11-12) | 
| 252 | C     groundAtK1  :: put the surface(k=1) at the Lower Boundary (=ground) | 
| 253 | COMMON /PARM_L/ usingCartesianGrid, usingSphericalPolarGrid, | 
| 254 | & usingCurvilinearGrid, usingCylindricalGrid, | 
| 255 | & no_slip_sides,no_slip_bottom, | 
| 256 | & staggerTimeStep, | 
| 257 | & momViscosity, momAdvection, momForcing, useCoriolis, | 
| 258 | & momPressureForcing, vectorInvariantMomentum, | 
| 259 | & tempDiffusion, tempAdvection, tempForcing, | 
| 260 | & saltDiffusion, saltAdvection, saltForcing, | 
| 261 | & useRealFreshWaterFlux, | 
| 262 | & rigidLid, implicitFreeSurface, exactConserv, uniformLin_PhiSurf, | 
| 263 | & momStepping, tempStepping, saltStepping, tr1Stepping, | 
| 264 | & metricTerms, usingSphericalPolarMTerms, useNHMTerms, | 
| 265 | & useConstantF, useBetaPlaneF, useSphereF, | 
| 266 | & useCDscheme, | 
| 267 | & useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv, | 
| 268 | & SadournyCoriolis, upwindVorticity, highOrderVorticity, | 
| 269 | & useAbsVorticity, | 
| 270 | & implicitDiffusion, implicitViscosity, | 
| 271 | & tempImplVertAdv, saltImplVertAdv, momImplVertAdv, | 
| 272 | & multiDimAdvection, forcing_In_AB, | 
| 273 | & doThetaClimRelax, doSaltClimRelax, doTr1ClimRelax, | 
| 274 | & periodicExternalForcing, | 
| 275 | & usingPCoords, usingZCoords, useDynP_inEos_Zc, setCenterDr, | 
| 276 | & nonHydrostatic, quasiHydrostatic, globalFiles, useSingleCpuIO, | 
| 277 | & allowFreezing, useOldFreezing, groundAtK1, | 
| 278 | & usePickupBeforeC35, debugMode, | 
| 279 | & readPickupWithTracer, writePickupWithTracer | 
| 280 | LOGICAL usingCartesianGrid | 
| 281 | LOGICAL usingSphericalPolarGrid | 
| 282 | LOGICAL usingCylindricalGrid | 
| 283 | LOGICAL usingCurvilinearGrid | 
| 284 | LOGICAL usingSphericalPolarMTerms | 
| 285 | LOGICAL useNHMTerms | 
| 286 | LOGICAL no_slip_sides | 
| 287 | LOGICAL no_slip_bottom | 
| 288 | LOGICAL staggerTimeStep | 
| 289 | LOGICAL momViscosity | 
| 290 | LOGICAL momAdvection | 
| 291 | LOGICAL momForcing | 
| 292 | LOGICAL momPressureForcing | 
| 293 | LOGICAL useCoriolis | 
| 294 | LOGICAL vectorInvariantMomentum | 
| 295 | LOGICAL tempDiffusion | 
| 296 | LOGICAL tempAdvection | 
| 297 | LOGICAL tempForcing | 
| 298 | LOGICAL saltDiffusion | 
| 299 | LOGICAL saltAdvection | 
| 300 | LOGICAL saltForcing | 
| 301 | LOGICAL useRealFreshWaterFlux | 
| 302 | LOGICAL rigidLid | 
| 303 | LOGICAL implicitFreeSurface | 
| 304 | LOGICAL exactConserv | 
| 305 | LOGICAL uniformLin_PhiSurf | 
| 306 | LOGICAL momStepping | 
| 307 | LOGICAL tempStepping | 
| 308 | LOGICAL saltStepping | 
| 309 | LOGICAL tr1Stepping | 
| 310 | LOGICAL metricTerms | 
| 311 | LOGICAL useConstantF | 
| 312 | LOGICAL useBetaPlaneF | 
| 313 | LOGICAL useSphereF | 
| 314 | LOGICAL useCDscheme | 
| 315 | LOGICAL useEnergyConservingCoriolis | 
| 316 | LOGICAL useJamartWetPoints | 
| 317 | LOGICAL useJamartMomAdv | 
| 318 | LOGICAL SadournyCoriolis | 
| 319 | LOGICAL upwindVorticity | 
| 320 | LOGICAL highOrderVorticity | 
| 321 | LOGICAL useAbsVorticity | 
| 322 | LOGICAL implicitDiffusion | 
| 323 | LOGICAL implicitViscosity | 
| 324 | LOGICAL tempImplVertAdv | 
| 325 | LOGICAL saltImplVertAdv | 
| 326 | LOGICAL momImplVertAdv | 
| 327 | LOGICAL multiDimAdvection | 
| 328 | LOGICAL forcing_In_AB | 
| 329 | LOGICAL doThetaClimRelax | 
| 330 | LOGICAL doSaltClimRelax | 
| 331 | LOGICAL doTr1ClimRelax | 
| 332 | LOGICAL periodicExternalForcing | 
| 333 | LOGICAL usingPCoords | 
| 334 | LOGICAL usingZCoords | 
| 335 | LOGICAL useDynP_inEos_Zc | 
| 336 | LOGICAL setCenterDr | 
| 337 | LOGICAL nonHydrostatic | 
| 338 | LOGICAL quasiHydrostatic | 
| 339 | LOGICAL globalFiles | 
| 340 | LOGICAL useSingleCpuIO | 
| 341 | LOGICAL allowFreezing | 
| 342 | LOGICAL useOldFreezing | 
| 343 | LOGICAL groundAtK1 | 
| 344 | LOGICAL usePickupBeforeC35 | 
| 345 | LOGICAL debugMode | 
| 346 | LOGICAL readPickupWithTracer | 
| 347 | LOGICAL writePickupWithTracer | 
| 348 |  | 
| 349 | C--   COMMON /PARM_R/ "Real" valued parameters used by the model. | 
| 350 | C     gg2dTargetResidual | 
| 351 | C          :: Target residual for cg2d solver; no unit (RHS normalisation) | 
| 352 | C     cg2dTargetResWunit | 
| 353 | C          :: Target residual for cg2d solver; W unit (No RHS normalisation) | 
| 354 | C     cg3dTargetResidual | 
| 355 | C               :: Target residual for cg3d solver. | 
| 356 | C     cg2dpcOffDFac :: Averaging weight for preconditioner off-diagonal. | 
| 357 | C     Note. 20th May 1998 | 
| 358 | C           I made a weird discovery! In the model paper we argue | 
| 359 | C           for the form of the preconditioner used here ( see | 
| 360 | C           A Finite-volume, Incompressible Navier-Stokes Model | 
| 361 | C           ...., Marshall et. al ). The algebra gives a simple | 
| 362 | C           0.5 factor for the averaging of ac and aCw to get a | 
| 363 | C           symmettric pre-conditioner. By using a factor of 0.51 | 
| 364 | C           i.e. scaling the off-diagonal terms in the | 
| 365 | C           preconditioner down slightly I managed to get the | 
| 366 | C           number of iterations for convergence in a test case to | 
| 367 | C           drop form 192 -> 134! Need to investigate this further! | 
| 368 | C           For now I have introduced a parameter cg2dpcOffDFac which | 
| 369 | C           defaults to 0.51 but can be set at runtime. | 
| 370 | C     delR      :: Vertical grid spacing ( units of r ). | 
| 371 | C     delRc     :: Vertical grid spacing between cell centers (r unit). | 
| 372 | C     delX      :: Separation between cell faces (m) or (deg), depending | 
| 373 | C     delY        on input flags. | 
| 374 | C     gravity   :: Accel. due to gravity ( m/s^2 ) | 
| 375 | C     recip_gravity and its inverse | 
| 376 | C     gBaro     :: Accel. due to gravity used in barotropic equation ( m/s^2 ) | 
| 377 | C     rhoNil    :: Reference density for the linear equation of state | 
| 378 | C     rhoConst  :: Vertically constant reference density | 
| 379 | C     rhoConstFresh :: Constant reference density for fresh water (rain) | 
| 380 | C     startTime :: Start time for model ( s ) | 
| 381 | C     phiMin    :: Latitude of southern most cell face. | 
| 382 | C     thetaMin  :: Longitude of western most cell face (this | 
| 383 | C                 is an "inert" parameter but it is included | 
| 384 | C                 to make geographical references simple.) | 
| 385 | C     rSphere   :: Radius of sphere for a spherical polar grid ( m ). | 
| 386 | C     recip_RSphere  :: Reciprocal radius of sphere ( m ). | 
| 387 | C     f0        :: Reference coriolis parameter ( 1/s ) | 
| 388 | C                 ( Southern edge f for beta plane ) | 
| 389 | C     beta      :: df/dy ( s^-1.m^-1 ) | 
| 390 | C     omega     :: Angular velocity ( rad/s ) | 
| 391 | C     rotationPeriod :: Rotation period (s) (= 2.pi/omega) | 
| 392 | C     viscAh    :: Eddy viscosity coeff. for mixing of | 
| 393 | C                 momentum laterally ( m^2/s ) | 
| 394 | C     viscAr    :: Eddy viscosity coeff. for mixing of | 
| 395 | C                 momentum vertically ( units of r^2/s ) | 
| 396 | C     viscA4    :: Biharmonic viscosity coeff. for mixing of | 
| 397 | C                 momentum laterally ( m^4/s ) | 
| 398 | C     viscC2leith :: Leith non-dimensional viscosity factor | 
| 399 | C     viscAhMax :: Maximum eddy viscosity coeff. for mixing of | 
| 400 | C                 momentum laterally ( m^2/s ) | 
| 401 | C     viscA4Max :: Maximum biharmonic viscosity coeff. for mixing of | 
| 402 | C                 momentum laterally ( m^4/s ) | 
| 403 | C     viscAhGrid:: non-dimensional grid-size dependent viscosity | 
| 404 | C     viscA4Grid:: non-dimensional grid-size dependent bi-harmonic viscosity | 
| 405 | C     viscC4leith :: Leith non-dimensional viscosity factor | 
| 406 | C     diffKhT   :: Laplacian diffusion coeff. for mixing of | 
| 407 | C                 heat laterally ( m^2/s ) | 
| 408 | C     diffKrT   :: Laplacian diffusion coeff. for mixing of | 
| 409 | C                 heat vertically ( units of r^2/s ) | 
| 410 | C     diffK4T   :: Biharmonic diffusion coeff. for mixing of | 
| 411 | C                 heat laterally ( m^4/s ) | 
| 412 | C     diffKhS  ::  Laplacian diffusion coeff. for mixing of | 
| 413 | C                 salt laterally ( m^2/s ) | 
| 414 | C     diffKrS   :: Laplacian diffusion coeff. for mixing of | 
| 415 | C                 salt vertically ( units of r^2/s ) | 
| 416 | C     diffK4S   :: Biharmonic diffusion coeff. for mixing of | 
| 417 | C                 salt laterally ( m^4/s ) | 
| 418 | C     diffKrBL79surf :: T/S surface diffusivity (m^2/s) Bryan and Lewis, 1979 | 
| 419 | C     diffKrBL79deep :: T/S deep diffusivity (m^2/s) Bryan and Lewis, 1979 | 
| 420 | C     diffKrBL79scl  :: depth scale for arctan fn (m) Bryan and Lewis, 1979 | 
| 421 | C     diffKrBL79Ho   :: depth offset for arctan fn (m) Bryan and Lewis, 1979 | 
| 422 | C     deltaT    :: Default timestep ( s ) | 
| 423 | C     deltaTClock  :: Timestep used as model "clock". This determines the | 
| 424 | C                    IO frequencies and is used in tagging output. It can | 
| 425 | C                    be totally different to the dynamical time. Typically | 
| 426 | C                    it will be the deep-water timestep for accelerated runs. | 
| 427 | C                    Frequency of checkpointing and dumping of the model state | 
| 428 | C                    are referenced to this clock. ( s ) | 
| 429 | C     deltaTMom    :: Timestep for momemtum equations ( s ) | 
| 430 | C     deltaTtracer :: Timestep for tracer equations ( s ) | 
| 431 | C     deltaTfreesurf :: Timestep for free-surface equation ( s ) | 
| 432 | C     freesurfFac  :: Parameter to turn implicit free surface term on or off | 
| 433 | C                    freesurfac = 1. uses implicit free surface | 
| 434 | C                    freesurfac = 0. uses rigid lid | 
| 435 | C     implicSurfPress :: parameter of the Crank-Nickelson time stepping : | 
| 436 | C                     Implicit part of Surface Pressure Gradient ( 0-1 ) | 
| 437 | C     implicDiv2Dflow :: parameter of the Crank-Nickelson time stepping : | 
| 438 | C                     Implicit part of barotropic flow Divergence ( 0-1 ) | 
| 439 | C     hFacMin      :: Minimum fraction size of a cell (affects hFacC etc...) | 
| 440 | C     hFacMinDz    :: Minimum dimesional size of a cell (affects hFacC etc..., m) | 
| 441 | C     hFacMinDp    :: Minimum dimesional size of a cell (affects hFacC etc..., Pa) | 
| 442 | C     hFacMinDr    :: Minimum dimesional size of a cell (affects hFacC etc..., units of r) | 
| 443 | C     hFacInf      :: Threshold (inf and sup) for fraction size of surface cell | 
| 444 | C     hFacSup        that control vanishing and creating levels | 
| 445 | C     tauCD        :: CD scheme coupling timescale ( 1/s ) | 
| 446 | C     rCD          :: CD scheme normalised coupling parameter ( 0-1 ) | 
| 447 | C     startTime     :: Starting time for this integration ( s ). | 
| 448 | C     endTime       :: Ending time for this integration ( s ). | 
| 449 | C     chkPtFreq     :: Frequency of rolling check pointing ( s ). | 
| 450 | C     pChkPtFreq    :: Frequency of permanent check pointing ( s ). | 
| 451 | C     dumpFreq      :: Frequency with which model state is written to | 
| 452 | C                     post-processing files ( s ). | 
| 453 | C     diagFreq      :: Frequency with which model writes diagnostic output | 
| 454 | C                     of intermediate quantities. | 
| 455 | C     afFacMom      :: Advection of momentum term tracer parameter | 
| 456 | C     vfFacMom      :: Momentum viscosity tracer parameter | 
| 457 | C     pfFacMom      :: Momentum pressure forcing tracer parameter | 
| 458 | C     cfFacMom      :: Coriolis term tracer parameter | 
| 459 | C     foFacMom      :: Momentum forcing tracer parameter | 
| 460 | C     mtFacMom      :: Metric terms tracer parameter | 
| 461 | C     cosPower      :: Power of cosine of latitude to multiply viscosity | 
| 462 | C     cAdjFreq      :: Frequency of convective adjustment | 
| 463 | C | 
| 464 | C     taveFreq      :: Frequency with which time-averaged model state | 
| 465 | C                      is written to post-processing files ( s ). | 
| 466 | C     tave_lastIter :: (for state variable only) fraction of the last time | 
| 467 | C                      step (of each taveFreq period) put in the time average. | 
| 468 | C                      (fraction for 1rst iter = 1 - tave_lastIter) | 
| 469 | C     tauThetaClimRelax :: Relaxation to climatology time scale ( s ). | 
| 470 | C     lambdaThetaClimRelax :: Inverse time scale for relaxation ( 1/s ). | 
| 471 | C     tauSaltClimRelax :: Relaxation to climatology time scale ( s ). | 
| 472 | C     lambdaSaltClimRelax :: Inverse time scale for relaxation ( 1/s ). | 
| 473 | C     latBandClimRelax :: latitude band where Relaxation to Clim. is applied, | 
| 474 | C                         i.e. where |yC| <= latBandClimRelax | 
| 475 | C     externForcingPeriod :: Is the period of which forcing varies (eg. 1 month) | 
| 476 | C     externForcingCycle :: Is the repeat time of the forcing (eg. 1 year) | 
| 477 | C                          (note: externForcingCycle must be an integer | 
| 478 | C                           number times externForcingPeriod) | 
| 479 | C     convertFW2Salt :: salinity, used to convert Fresh-Water Flux to Salt Flux | 
| 480 | C                       (use model surface (local) value if set to -1) | 
| 481 | C     temp_EvPrRn :: temperature of Rain & Evap. | 
| 482 | C     salt_EvPrRn :: salinity of Rain & Evap. | 
| 483 | C     trac_EvPrRn :: tracer concentration in Rain & Evap. | 
| 484 | C        (notes: a) tracer content of Rain/Evap only used if both | 
| 485 | C                     NonLin_FrSurf & useRealFreshWater are set. | 
| 486 | C                b) use model surface (local) value if set to UNSET_RL) | 
| 487 | C     horiVertRatio      :: Ratio on units in vertical to units in horizontal. | 
| 488 | C     recip_horiVertRatio  ( 1 if horiz in m and vertical in m ). | 
| 489 | C                          ( g*rho if horiz in m and vertical in Pa ). | 
| 490 | C     Ro_SeaLevel        :: standard position of Sea-Level in "R" coordinate, used as | 
| 491 | C                          starting value (k=1) for vertical coordinate (rf(1)=Ro_SeaLevel) | 
| 492 | C     bottomDragLinear   :: Drag coefficient built in to core dynamics | 
| 493 | C      --"-"--  Quadratic  ( linear: 1/s, quadratic: 1/m ) | 
| 494 | COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit, | 
| 495 | & cg2dpcOffDFac, cg3dTargetResidual, | 
| 496 | & delR, delRc, delX, delY, | 
| 497 | & deltaT, deltaTmom, deltaTtracer, deltaTfreesurf, deltaTClock, | 
| 498 | & abeps, startTime, | 
| 499 | & phiMin, thetaMin, rSphere, recip_RSphere, f0, beta, | 
| 500 | & fCori, fCoriG, fCoriCos, | 
| 501 | & viscAh,  viscAhMax, viscAhGrid, viscC2leith, | 
| 502 | & viscA4,  viscA4Max, viscA4Grid, viscC4leith, | 
| 503 | & viscAr, viscAstrain, viscAtension, | 
| 504 | & diffKhT, diffK4T, diffKrT, | 
| 505 | & diffKhS, diffK4S, diffKrS, | 
| 506 | & diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho, | 
| 507 | & delT, tauCD, rCD, freeSurfFac, implicSurfPress, implicDiv2Dflow, | 
| 508 | & hFacMin, hFacMinDz, hFacInf, hFacSup, | 
| 509 | & gravity, recip_Gravity, gBaro, rhonil, recip_rhonil, | 
| 510 | & recip_rhoConst, rhoConst, | 
| 511 | & rhoConstFresh, convertEmP2rUnit, tRef, sRef, | 
| 512 | & endTime, chkPtFreq, pchkPtFreq, dumpFreq, adjDumpFreq, | 
| 513 | & diagFreq, taveFreq, tave_lastIter, monitorFreq, | 
| 514 | & afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom, | 
| 515 | & cosPower, cAdjFreq, omega, rotationPeriod, | 
| 516 | & tauThetaClimRelax, lambdaThetaClimRelax, | 
| 517 | & tauSaltClimRelax, lambdaSaltClimRelax, | 
| 518 | & tauTr1ClimRelax, lambdaTr1ClimRelax, latBandClimRelax, | 
| 519 | & externForcingCycle, externForcingPeriod, | 
| 520 | & convertFW2Salt, temp_EvPrRn, salt_EvPrRn, trac_EvPrRn, | 
| 521 | & hFacMinDr, hFacMinDp, | 
| 522 | & horiVertRatio, recip_horiVertRatio, | 
| 523 | & ivdc_kappa, Ro_SeaLevel, | 
| 524 | & bottomDragLinear,bottomDragQuadratic | 
| 525 |  | 
| 526 | _RL cg2dTargetResidual | 
| 527 | _RL cg2dTargetResWunit | 
| 528 | _RL cg3dTargetResidual | 
| 529 | _RL cg2dpcOffDFac | 
| 530 | _RL delR(Nr) | 
| 531 | _RL delRc(Nr+1) | 
| 532 | _RL delX(Nx) | 
| 533 | _RL delY(Ny) | 
| 534 | _RL deltaT | 
| 535 | _RL deltaTClock | 
| 536 | _RL deltaTmom | 
| 537 | _RL deltaTtracer | 
| 538 | _RL deltaTfreesurf | 
| 539 | _RL abeps | 
| 540 | _RL phiMin | 
| 541 | _RL thetaMin | 
| 542 | _RL rSphere | 
| 543 | _RL recip_RSphere | 
| 544 | _RL f0 | 
| 545 | _RL freeSurfFac | 
| 546 | _RL implicSurfPress | 
| 547 | _RL implicDiv2Dflow | 
| 548 | _RL hFacMin | 
| 549 | _RL hFacMinDz | 
| 550 | _RL hFacMinDp | 
| 551 | _RL hFacMinDr | 
| 552 | _RL hFacInf | 
| 553 | _RL hFacSup | 
| 554 | _RL beta | 
| 555 | _RL viscAh | 
| 556 | _RL viscAhMax | 
| 557 | _RL viscAhGrid | 
| 558 | _RL viscC2leith | 
| 559 | _RL viscAstrain | 
| 560 | _RL viscAtension | 
| 561 | _RL viscAr | 
| 562 | _RL viscA4 | 
| 563 | _RL viscA4Max | 
| 564 | _RL viscA4Grid | 
| 565 | _RL viscC4leith | 
| 566 | _RL diffKhT | 
| 567 | _RL diffKrT | 
| 568 | _RL diffK4T | 
| 569 | _RL diffKhS | 
| 570 | _RL diffKrS | 
| 571 | _RL diffK4S | 
| 572 | _RL diffKrBL79surf | 
| 573 | _RL diffKrBL79deep | 
| 574 | _RL diffKrBL79scl | 
| 575 | _RL diffKrBL79Ho | 
| 576 | _RL delt | 
| 577 | _RL tauCD | 
| 578 | _RL rCD | 
| 579 | _RL gravity | 
| 580 | _RL recip_gravity | 
| 581 | _RL gBaro | 
| 582 | _RL rhonil | 
| 583 | _RL recip_rhonil | 
| 584 | _RL rhoConst | 
| 585 | _RL recip_rhoConst | 
| 586 | _RL rhoConstFresh | 
| 587 | _RL convertEmP2rUnit | 
| 588 | _RL tRef(Nr) | 
| 589 | _RL sRef(Nr) | 
| 590 | _RS fCori(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 591 | _RS fCoriG(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 592 | _RS fCoriCos(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 593 | _RL startTime | 
| 594 | _RL endTime | 
| 595 | _RL chkPtFreq | 
| 596 | _RL pChkPtFreq | 
| 597 | _RL dumpFreq | 
| 598 | _RL adjDumpFreq | 
| 599 | _RL diagFreq | 
| 600 | _RL taveFreq | 
| 601 | _RL tave_lastIter | 
| 602 | _RL monitorFreq | 
| 603 | _RL afFacMom | 
| 604 | _RL vfFacMom | 
| 605 | _RL pfFacMom | 
| 606 | _RL cfFacMom | 
| 607 | _RL foFacMom | 
| 608 | _RL mTFacMom | 
| 609 | _RL cosPower | 
| 610 | _RL cAdjFreq | 
| 611 | _RL omega | 
| 612 | _RL rotationPeriod | 
| 613 | _RL tauThetaClimRelax | 
| 614 | _RL lambdaThetaClimRelax | 
| 615 | _RL tauSaltClimRelax | 
| 616 | _RL lambdaSaltClimRelax | 
| 617 | _RL tauTr1ClimRelax | 
| 618 | _RL lambdaTr1ClimRelax | 
| 619 | _RL latBandClimRelax | 
| 620 | _RL externForcingCycle | 
| 621 | _RL externForcingPeriod | 
| 622 | _RL convertFW2Salt | 
| 623 | _RL temp_EvPrRn | 
| 624 | _RL salt_EvPrRn | 
| 625 | _RL trac_EvPrRn | 
| 626 | _RL horiVertRatio | 
| 627 | _RL recip_horiVertRatio | 
| 628 | _RL ivdc_kappa | 
| 629 | _RL Ro_SeaLevel | 
| 630 | _RL bottomDragLinear | 
| 631 | _RL bottomDragQuadratic | 
| 632 |  | 
| 633 | C--   COMMON /PARM_A/ Thermodynamics constants ? | 
| 634 | COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp | 
| 635 | _RL HeatCapacity_Cp | 
| 636 | _RL recip_Cp | 
| 637 |  | 
| 638 | C--   COMMON /PARM_ATM/ Atmospheric physical parameters (Ideal Gas EOS, ...) | 
| 639 | C     celsius2K :: convert centigrade (Celsius) degree to Kelvin | 
| 640 | C     atm_Po    :: standard reference pressure | 
| 641 | C     atm_Cp    :: specific heat (Cp) of the (dry) air at constant pressure | 
| 642 | C     atm_Rd    :: gas constant for dry air | 
| 643 | C     atm_kappa :: kappa = R/Cp (R: constant of Ideal Gas EOS) | 
| 644 | C     atm_Rq    :: water vapour specific volume anomaly relative to dry air | 
| 645 | C                  (e.g. typical value = (29/18 -1) 10^-3 with q [g/kg]) | 
| 646 | C     integr_GeoPot :: option to select the way we integrate the geopotential | 
| 647 | C                     (still a subject of discussions ...) | 
| 648 | C     selectFindRoSurf :: select the way surf. ref. pressure (=Ro_surf) is | 
| 649 | C             derived from the orography. Implemented: 0,1 (see INI_P_GROUND) | 
| 650 | COMMON /PARM_ATM/ | 
| 651 | &            celsius2K, | 
| 652 | &            atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po, | 
| 653 | &            integr_GeoPot, selectFindRoSurf | 
| 654 | _RL celsius2K | 
| 655 | _RL atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq | 
| 656 | INTEGER integr_GeoPot, selectFindRoSurf | 
| 657 |  | 
| 658 | C Logical flags for selecting packages | 
| 659 | LOGICAL useKPP | 
| 660 | LOGICAL useGMRedi | 
| 661 | LOGICAL useOBCS | 
| 662 | LOGICAL useAIM | 
| 663 | LOGICAL useLand | 
| 664 | LOGICAL useGrdchk | 
| 665 | LOGICAL useECCO | 
| 666 | LOGICAL useSHAP_FILT | 
| 667 | LOGICAL useZONAL_FILT | 
| 668 | LOGICAL useFLT | 
| 669 | LOGICAL usePTRACERS | 
| 670 | LOGICAL useSBO | 
| 671 | LOGICAL useSEAICE | 
| 672 | LOGICAL useBulkForce | 
| 673 | LOGICAL useThSIce | 
| 674 | LOGICAL usefizhi | 
| 675 | LOGICAL usegridalt | 
| 676 | LOGICAL usediagnostics | 
| 677 | LOGICAL useEBM | 
| 678 | COMMON /PARM_PACKAGES/ | 
| 679 | &        useKPP, useGMRedi, useOBCS, useAIM, useLand, useECCO, | 
| 680 | &        useSHAP_FILT, useZONAL_FILT, useGrdchk, useFLT, | 
| 681 | &        usePTRACERS,  useSBO, useSEAICE, useThSIce, useBulkForce, | 
| 682 | &        usefizhi,  usegridalt, usediagnostics, useEBM | 
| 683 |  | 
| 684 | C     Run-time flags for early-initialization of MNC | 
| 685 | LOGICAL | 
| 686 | &     useMNC, | 
| 687 | &     mnc_use_indir, mnc_use_outdir, mnc_outdir_date, | 
| 688 | &     mnc_echo_gvtypes, mnc_pickup_write, mnc_pickup_read, | 
| 689 | &     mnc_use_for_mon | 
| 690 | CHARACTER*(MAX_LEN_FNAM) mnc_outdir_str | 
| 691 | CHARACTER*(MAX_LEN_FNAM) mnc_indir_str | 
| 692 | COMMON /PARM_MNC/ | 
| 693 | &     useMNC, | 
| 694 | &     mnc_use_indir, mnc_use_outdir, mnc_outdir_date, | 
| 695 | &     mnc_echo_gvtypes, mnc_pickup_write, mnc_pickup_read, | 
| 696 | &     mnc_outdir_str, mnc_indir_str, | 
| 697 | &     mnc_use_for_mon | 
| 698 |  | 
| 699 |  | 
| 700 | CEH3 ;;; Local Variables: *** | 
| 701 | CEH3 ;;; mode:fortran *** | 
| 702 | CEH3 ;;; End: *** |