| 1 | C $Header: /u/gcmpack/MITgcm/model/src/set_defaults.F,v 1.179 2016/04/04 21:29:00 jmc Exp $ | 
| 2 | C $Name:  $ | 
| 3 |  | 
| 4 | #include "PACKAGES_CONFIG.h" | 
| 5 | #include "CPP_OPTIONS.h" | 
| 6 |  | 
| 7 | C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| | 
| 8 | CBOP | 
| 9 | C     !ROUTINE: SET_DEFAULTS | 
| 10 | C     !INTERFACE: | 
| 11 | SUBROUTINE SET_DEFAULTS( | 
| 12 | O   viscArDefault, diffKrTDefault, diffKrSDefault, | 
| 13 | O   hFacMinDrDefault, delRdefault, | 
| 14 | I   myThid ) | 
| 15 |  | 
| 16 | C     !DESCRIPTION: | 
| 17 | C     Routine to set model "parameter defaults". | 
| 18 |  | 
| 19 | C     !USES: | 
| 20 | IMPLICIT NONE | 
| 21 | #include "SIZE.h" | 
| 22 | #include "EEPARAMS.h" | 
| 23 | #include "PARAMS.h" | 
| 24 | #ifdef ALLOW_EXCH2 | 
| 25 | # include "W2_EXCH2_SIZE.h" | 
| 26 | #endif /* ALLOW_EXCH2 */ | 
| 27 | #include "SET_GRID.h" | 
| 28 |  | 
| 29 | C     !INPUT/OUTPUT PARAMETERS: | 
| 30 | C     myThid :: my Thread Id. Number | 
| 31 | INTEGER myThid | 
| 32 | _RL viscArDefault | 
| 33 | _RL diffKrTDefault | 
| 34 | _RL diffKrSDefault | 
| 35 | _RL hFacMinDrDefault | 
| 36 | _RL delRDefault(Nr) | 
| 37 |  | 
| 38 | C     !LOCAL VARIABLES: | 
| 39 | C     i, j, k :: Loop counters | 
| 40 | INTEGER i, j, k | 
| 41 | CEOP | 
| 42 |  | 
| 43 | C--   Grid parameters | 
| 44 | C-    Vertical gridding | 
| 45 | delRFile            = ' ' | 
| 46 | delRcFile           = ' ' | 
| 47 | hybSigmFile         = ' ' | 
| 48 | seaLev_Z            = UNSET_RL | 
| 49 | top_Pres            = UNSET_RL | 
| 50 | rSigmaBnd           = UNSET_RL | 
| 51 | selectSigmaCoord    = 0 | 
| 52 | DO k=1,Nr | 
| 53 | delRdefault(k)     = 0. | 
| 54 | ENDDO | 
| 55 | DO k=1,Nr+1 | 
| 56 | delRc(k)           = UNSET_RL | 
| 57 | ENDDO | 
| 58 | C-    vertical profile | 
| 59 | tRefFile            = ' ' | 
| 60 | sRefFile            = ' ' | 
| 61 | rhoRefFile          = ' ' | 
| 62 | gravityFile         = ' ' | 
| 63 | thetaConst          = UNSET_RL | 
| 64 | DO k=1,Nr | 
| 65 | tRef(k)            = UNSET_RL | 
| 66 | sRef(k)            = UNSET_RL | 
| 67 | ENDDO | 
| 68 |  | 
| 69 | C-    Horizontal gridding | 
| 70 | delXFile            = ' ' | 
| 71 | delYFile            = ' ' | 
| 72 | horizGridFile       = ' ' | 
| 73 | deepAtmosphere      = .FALSE. | 
| 74 | xgOrigin            = UNSET_RL | 
| 75 | ygOrigin            = UNSET_RL | 
| 76 | DO i=1,grid_maxNx | 
| 77 | delX(i)            = UNSET_RL | 
| 78 | ENDDO | 
| 79 | DO j=1,grid_maxNy | 
| 80 | delY(j)            = UNSET_RL | 
| 81 | ENDDO | 
| 82 | C     In cartesian coords distances are in metres | 
| 83 | usingCartesianGrid  = .FALSE. | 
| 84 | C     In spherical polar distances are in degrees | 
| 85 | usingSphericalPolarGrid = .FALSE. | 
| 86 | rSphere             = UNSET_RL | 
| 87 | C     General curvilinear coordinate system | 
| 88 | usingCurvilinearGrid= .FALSE. | 
| 89 | radius_fromHorizGrid= UNSET_RL | 
| 90 | hasWetCSCorners     = .FALSE. | 
| 91 | C     General cylindrical coordinate system | 
| 92 | usingCylindricalGrid= .FALSE. | 
| 93 | C     Coriolis map: | 
| 94 | selectCoriMap       = -1 | 
| 95 | use3dCoriolis       = .TRUE. | 
| 96 | C     grid rotation | 
| 97 | rotateGrid          = .FALSE. | 
| 98 | phiEuler            = 0. _d 0 | 
| 99 | thetaEuler          = 0. _d 0 | 
| 100 | psiEuler            = 0. _d 0 | 
| 101 |  | 
| 102 | C--   Set default "physical" parameters | 
| 103 | nh_Am2              = 1. _d 0 | 
| 104 | gravity             = 9.81 _d 0 | 
| 105 | gBaro               = UNSET_RL | 
| 106 | rhoNil              = 999.8 _d 0 | 
| 107 | rhoConst            = UNSET_RL | 
| 108 | C-- jmc : the default is to set rhoConstFresh to rhoConst (=rhoNil by default) | 
| 109 | C         (so that the default produces same results as before) | 
| 110 | c     rhoConstFresh       = 999.8 _d 0 | 
| 111 | rhoConstFresh       = UNSET_RL | 
| 112 | convertFW2Salt      = UNSET_RL | 
| 113 | f0                  = 1. _d -4 | 
| 114 | beta                = 1. _d -11 | 
| 115 | fPrime              = 0. _d 0 | 
| 116 | C-    Earth rotation period is 86400*365.25/366.25 (use to be 1.day) | 
| 117 | rotationPeriod      = 86164. _d 0 | 
| 118 | omega               = UNSET_RL | 
| 119 | C-    viscosity and diffusivity default value: | 
| 120 | viscAh              = 0. _d 3 | 
| 121 | smag3D_coeff        = 1. _d -2 | 
| 122 | viscAhGrid          = 0. _d 0 | 
| 123 | viscAhGridMin       = 0. _d 0 | 
| 124 | viscAhGridMax       = 1. _d 21 | 
| 125 | viscAhMax           = 1. _d 21 | 
| 126 | viscAhReMax         = 0. _d 0 | 
| 127 | viscC2leith         = 0. _d 0 | 
| 128 | viscC2leithD        = 0. _d 0 | 
| 129 | viscC2smag          = 0. _d 0 | 
| 130 | viscArDefault       = 0. _d -3 | 
| 131 | viscFacAdj          = 1. _d 0 | 
| 132 | no_slip_sides       = .TRUE. | 
| 133 | no_slip_bottom      = .TRUE. | 
| 134 | bottomVisc_pCell    = .FALSE. | 
| 135 | sideDragFactor      = 2. _d 0 | 
| 136 | bottomDragLinear    = 0. | 
| 137 | bottomDragQuadratic = 0. | 
| 138 | selectBotDragQuadr  = -1 | 
| 139 | viscA4              = 0. _d 11 | 
| 140 | viscA4Grid          = 0. _d 0 | 
| 141 | viscA4GridMax       = 1. _d 21 | 
| 142 | viscA4GridMin       = 0. _d 0 | 
| 143 | viscA4Max           = 1. _d 21 | 
| 144 | viscA4ReMax         = 0. _d 0 | 
| 145 | viscC4leith         = 0. _d 0 | 
| 146 | viscC4leithD        = 0. _d 0 | 
| 147 | viscC4smag          = 0. _d 0 | 
| 148 | DO k=1,Nr | 
| 149 | viscArNr(k)        = UNSET_RL | 
| 150 | ENDDO | 
| 151 | cosPower            = 0. | 
| 152 | diffKhT             = 0. _d 3 | 
| 153 | diffKhS             = 0. _d 3 | 
| 154 | diffK4T             = 0. _d 11 | 
| 155 | diffK4S             = 0. _d 11 | 
| 156 | diffKrTDefault      = 0. _d -3 | 
| 157 | diffKrSDefault      = 0. _d -3 | 
| 158 | diffKrBL79surf      = 0. _d 0 | 
| 159 | diffKrBL79deep      = 0. _d 0 | 
| 160 | diffKrBL79scl       = 200. _d 0 | 
| 161 | diffKrBL79Ho        = -2000. _d 0 | 
| 162 | BL79LatVary         = 30. | 
| 163 | diffKrBLEQsurf      = UNSET_RL | 
| 164 | diffKrBLEQdeep      = UNSET_RL | 
| 165 | diffKrBLEQscl       = UNSET_RL | 
| 166 | diffKrBLEQHo        = UNSET_RL | 
| 167 | DO k=1,Nr | 
| 168 | diffKrNrT(k)       = UNSET_RL | 
| 169 | diffKrNrS(k)       = UNSET_RL | 
| 170 | diffKr4T(k)        = 0. | 
| 171 | diffKr4S(k)        = 0. | 
| 172 | ENDDO | 
| 173 | HeatCapacity_Cp     = 3994. _d 0 | 
| 174 | eosType             = 'LINEAR' | 
| 175 | buoyancyRelation    = 'OCEANIC' | 
| 176 | selectP_inEOS_Zc    = UNSET_I | 
| 177 | smoothAbsFuncRange  = 0. _d 0 | 
| 178 | hFacMin             = 1. _d 0 | 
| 179 | hFacMinDrDefault    = 0. _d 0 | 
| 180 | implicitIntGravWave = .FALSE. | 
| 181 | staggerTimeStep     = .FALSE. | 
| 182 | applyExchUV_early   = .FALSE. | 
| 183 | doResetHFactors     = .FALSE. | 
| 184 | momViscosity        = .TRUE. | 
| 185 | momAdvection        = .TRUE. | 
| 186 | momForcing          = .TRUE. | 
| 187 | useCoriolis         = .TRUE. | 
| 188 | momPressureForcing  = .TRUE. | 
| 189 | momStepping         = .TRUE. | 
| 190 | vectorInvariantMomentum = .FALSE. | 
| 191 | tempStepping        = .TRUE. | 
| 192 | tempAdvection       = .TRUE. | 
| 193 | tempForcing         = .TRUE. | 
| 194 | saltStepping        = .TRUE. | 
| 195 | saltAdvection       = .TRUE. | 
| 196 | saltForcing         = .TRUE. | 
| 197 | addFrictionHeating  = .FALSE. | 
| 198 | metricTerms         = .TRUE. | 
| 199 | useNHMTerms         = .FALSE. | 
| 200 | useSmag3D           = .FALSE. | 
| 201 | useFullLeith        = .FALSE. | 
| 202 | useAreaViscLength   = .FALSE. | 
| 203 | useStrainTensionVisc= .FALSE. | 
| 204 | implicitDiffusion   = .FALSE. | 
| 205 | implicitViscosity   = .FALSE. | 
| 206 | implBottomFriction  = .FALSE. | 
| 207 | momImplVertAdv      = .FALSE. | 
| 208 | tempImplVertAdv     = .FALSE. | 
| 209 | saltImplVertAdv     = .FALSE. | 
| 210 | nonHydrostatic      = .FALSE. | 
| 211 | quasiHydrostatic    = .FALSE. | 
| 212 | globalFiles         = .FALSE. | 
| 213 | useSingleCpuIO      = .FALSE. | 
| 214 | useSingleCpuInput   = .FALSE. | 
| 215 | allowFreezing       = .FALSE. | 
| 216 | ivdc_kappa          = 0. _d 0 | 
| 217 | hMixCriteria        = -.8 _d 0 | 
| 218 | dRhoSmall           = 1. _d -6 | 
| 219 | hMixSmooth          = 0. _d 0 | 
| 220 | usePickupBeforeC54    = .FALSE. | 
| 221 | tempAdvScheme       = 2 | 
| 222 | saltAdvScheme       = 2 | 
| 223 | multiDimAdvection   = .TRUE. | 
| 224 | useMultiDimAdvec    = .FALSE. | 
| 225 | useCDscheme         = .FALSE. | 
| 226 | useEnergyConservingCoriolis = .FALSE. | 
| 227 | useJamartWetPoints  = .FALSE. | 
| 228 | useJamartMomAdv     = .FALSE. | 
| 229 | selectVortScheme    = UNSET_I | 
| 230 | upwindVorticity     = .FALSE. | 
| 231 | highOrderVorticity  = .FALSE. | 
| 232 | useAbsVorticity     = .FALSE. | 
| 233 | upwindShear         = .FALSE. | 
| 234 | selectKEscheme      = 0 | 
| 235 | IF ( debugMode ) THEN | 
| 236 | debugLevel        = debLevD | 
| 237 | ELSE | 
| 238 | debugLevel        = debLevB | 
| 239 | #ifdef ALLOW_AUTODIFF | 
| 240 | debugLevel        = debLevA | 
| 241 | #endif | 
| 242 | ENDIF | 
| 243 |  | 
| 244 | C--   Set (free)surface-related parameters | 
| 245 | implicitFreeSurface = .FALSE. | 
| 246 | rigidLid            = .FALSE. | 
| 247 | implicSurfPress     = 1. _d 0 | 
| 248 | implicDiv2Dflow     = 1. _d 0 | 
| 249 | exactConserv        = .FALSE. | 
| 250 | linFSConserveTr     = .FALSE. | 
| 251 | uniformLin_PhiSurf  = .TRUE. | 
| 252 | nonlinFreeSurf      = 0 | 
| 253 | hFacInf             = 0.2 _d 0 | 
| 254 | hFacSup             = 2.0 _d 0 | 
| 255 | select_rStar        = 0 | 
| 256 | selectNHfreeSurf    = 0 | 
| 257 | selectAddFluid      = 0 | 
| 258 | useRealFreshWaterFlux = .FALSE. | 
| 259 | temp_EvPrRn = UNSET_RL | 
| 260 | salt_EvPrRn = 0. | 
| 261 | temp_addMass = UNSET_RL | 
| 262 | salt_addMass = UNSET_RL | 
| 263 | balanceEmPmR        = .FALSE. | 
| 264 | balanceQnet         = .FALSE. | 
| 265 | balancePrintMean    = .FALSE. | 
| 266 | balanceThetaClimRelax = .FALSE. | 
| 267 | balanceSaltClimRelax  = .FALSE. | 
| 268 |  | 
| 269 | C--   Atmospheric physical parameters (e.g.: EOS) | 
| 270 | celsius2K = 273.15 _d 0 | 
| 271 | atm_Po =  1. _d 5 | 
| 272 | atm_Cp = 1004. _d 0 | 
| 273 | atm_Rd = UNSET_RL | 
| 274 | atm_kappa = 2. _d 0 / 7. _d 0 | 
| 275 | atm_Rq = 0. _d 0 | 
| 276 | integr_GeoPot = 2 | 
| 277 | selectFindRoSurf = 0 | 
| 278 |  | 
| 279 | C--   Elliptic solver parameters | 
| 280 | cg2dMaxIters       = 150 | 
| 281 | cg2dTargetResidual = 1. _d -7 | 
| 282 | cg2dTargetResWunit = -1. | 
| 283 | cg2dChkResFreq     = 1 | 
| 284 | cg2dUseMinResSol   = UNSET_I | 
| 285 | cg2dpcOffDFac      = 0.51 _d 0 | 
| 286 | cg2dPreCondFreq    = 1 | 
| 287 | cg3dMaxIters       = 150 | 
| 288 | cg3dTargetResidual = 1. _d -7 | 
| 289 | cg3dChkResFreq     = 1 | 
| 290 | useSRCGSolver      = .FALSE. | 
| 291 | #ifdef ALLOW_PETSC | 
| 292 | #ifdef ALLOW_NONHYDROSTATIC | 
| 293 | CG3D_PETSC_SOLVER_TYPE = 'CG' | 
| 294 | CG3D_PETSC_PRECOND_TYPE = 'BLOCKJACOBI' | 
| 295 | use_cg3d_petsc = .false. | 
| 296 | cg3d_petsc_reuse_mat = .true. | 
| 297 | cg3d_petsc_cpuInVert = 1 | 
| 298 | #endif | 
| 299 | #endif | 
| 300 |  | 
| 301 | C--   Time stepping parameters | 
| 302 | deltaT            = 0. _d 0 | 
| 303 | deltaTMom         = 0. _d 0 | 
| 304 | deltaTFreeSurf    = 0. _d 0 | 
| 305 | DO k=1,Nr | 
| 306 | dTtracerLev(k)  = 0. _d 0 | 
| 307 | ENDDO | 
| 308 | baseTime          = 0. _d 0 | 
| 309 | nIter0            = -1 | 
| 310 | startTime         = UNSET_RL | 
| 311 | pickupSuff        = ' ' | 
| 312 | pickupStrictlyMatch = .TRUE. | 
| 313 | nTimeSteps        = 0 | 
| 314 | nTimeSteps_l2     = 0 | 
| 315 | nEndIter          = 0 | 
| 316 | endTime           = 0. _d 0 | 
| 317 | momForcingOutAB   = UNSET_I | 
| 318 | tracForcingOutAB  = UNSET_I | 
| 319 | momDissip_In_AB   = .TRUE. | 
| 320 | doAB_onGtGs       = .TRUE. | 
| 321 | abEps             = 0.01 _d 0 | 
| 322 | #ifdef ALLOW_ADAMSBASHFORTH_3 | 
| 323 | alph_AB           = 0.5 _d 0 | 
| 324 | beta_AB           = 5. _d 0 / 12. _d 0 | 
| 325 | startFromPickupAB2= .FALSE. | 
| 326 | #else | 
| 327 | alph_AB           = UNSET_RL | 
| 328 | beta_AB           = UNSET_RL | 
| 329 | startFromPickupAB2= .TRUE. | 
| 330 | #endif | 
| 331 | pChkPtFreq        = deltaT*0 | 
| 332 | chkPtFreq         = deltaT*0 | 
| 333 | outputTypesInclusive = .FALSE. | 
| 334 | pickup_read_mdsio = .TRUE. | 
| 335 | pickup_write_mdsio= .TRUE. | 
| 336 | pickup_write_immed= .FALSE. | 
| 337 | writePickupAtEnd  = .TRUE. | 
| 338 | dumpFreq          = deltaT*0 | 
| 339 | adjDumpFreq       = deltaT*0 | 
| 340 | diagFreq          = deltaT*0 | 
| 341 | dumpInitAndLast   = .TRUE. | 
| 342 | snapshot_mdsio    = .TRUE. | 
| 343 | monitorFreq       = -1. | 
| 344 | adjMonitorFreq    = 0. | 
| 345 | monitorSelect     = UNSET_I | 
| 346 | monitor_stdio     = .TRUE. | 
| 347 | taveFreq          = deltaT*0 | 
| 348 | timeave_mdsio     = .TRUE. | 
| 349 | tave_lastIter     = 0.5 _d 0 | 
| 350 | writeStatePrec    = precFloat64 | 
| 351 | writeBinaryPrec   = precFloat32 | 
| 352 | readBinaryPrec    = precFloat32 | 
| 353 | cAdjFreq          =  0. _d 0 | 
| 354 | tauCD             =  0. _d 0 | 
| 355 | tauThetaClimRelax =  0. _d 0 | 
| 356 | tauSaltClimRelax  =  0. _d 0 | 
| 357 | periodicExternalForcing = .FALSE. | 
| 358 | externForcingPeriod     = 0. | 
| 359 | externForcingCycle      = 0. | 
| 360 | tCylIn             = 0. | 
| 361 | tCylOut            = 20. | 
| 362 |  | 
| 363 | C--   Input files | 
| 364 | bathyFile       = ' ' | 
| 365 | topoFile        = ' ' | 
| 366 | addWwallFile    = ' ' | 
| 367 | addSwallFile    = ' ' | 
| 368 | hydrogSaltFile  = ' ' | 
| 369 | hydrogThetaFile = ' ' | 
| 370 | maskIniTemp     = .TRUE. | 
| 371 | maskIniSalt     = .TRUE. | 
| 372 | checkIniTemp    = .TRUE. | 
| 373 | checkIniSalt    = .TRUE. | 
| 374 | diffKrFile      = ' ' | 
| 375 | viscAhDfile     = ' ' | 
| 376 | viscAhZfile     = ' ' | 
| 377 | viscA4Dfile     = ' ' | 
| 378 | viscA4Zfile     = ' ' | 
| 379 | zonalWindFile   = ' ' | 
| 380 | meridWindFile   = ' ' | 
| 381 | thetaClimFile   = ' ' | 
| 382 | saltClimFile    = ' ' | 
| 383 | EmPmRfile       = ' ' | 
| 384 | saltFluxFile    = ' ' | 
| 385 | surfQfile       = ' ' | 
| 386 | surfQnetFile    = ' ' | 
| 387 | surfQswFile     = ' ' | 
| 388 | uVelInitFile    = ' ' | 
| 389 | vVelInitFile    = ' ' | 
| 390 | pSurfInitFile   = ' ' | 
| 391 | pLoadFile       = ' ' | 
| 392 | addMassFile     = ' ' | 
| 393 | eddyPsiXFile    = ' ' | 
| 394 | eddyPsiYFile    = ' ' | 
| 395 | geothermalFile  = ' ' | 
| 396 | lambdaThetaFile = ' ' | 
| 397 | lambdaSaltFile  = ' ' | 
| 398 | mdsioLocalDir   = ' ' | 
| 399 | adTapeDir       = ' ' | 
| 400 | the_run_name    = ' ' | 
| 401 |  | 
| 402 | RETURN | 
| 403 | END |