| 1 | ksnow | 1.2 | C $Header: /u/gcmpack/MITgcm/model/inc/DYNVARS.h,v 1.50 2016/11/28 22:55:00 jmc Exp $ | 
| 2 | ksnow | 1.1 | C $Name:  $ | 
| 3 |  |  |  | 
| 4 |  |  | CBOP | 
| 5 |  |  | C     !ROUTINE: DYNVARS.h | 
| 6 |  |  | C     !INTERFACE: | 
| 7 |  |  | C     include "DYNVARS.h" | 
| 8 |  |  | C     !DESCRIPTION: | 
| 9 |  |  | C     \bv | 
| 10 |  |  | C     *==========================================================* | 
| 11 |  |  | C     | DYNVARS.h | 
| 12 |  |  | C     | o Dynamical model variables (common block DYNVARS_R) | 
| 13 |  |  | C     *==========================================================* | 
| 14 |  |  | C     | The value and two levels of time tendency are held for | 
| 15 |  |  | C     | each prognostic variable. | 
| 16 |  |  | C     *==========================================================* | 
| 17 |  |  | C     \ev | 
| 18 |  |  | CEOP | 
| 19 |  |  |  | 
| 20 |  |  | C     State Variables: | 
| 21 |  |  | C     etaN  :: free-surface r-anomaly (r unit) at current time level | 
| 22 |  |  | C     uVel  :: zonal velocity (m/s, i=1 held at western face) | 
| 23 |  |  | C     vVel  :: meridional velocity (m/s, j=1 held at southern face) | 
| 24 |  |  | C     theta :: potential temperature (oC, held at pressure/tracer point) | 
| 25 |  |  | C     salt  :: salinity (ppt, held at pressure/tracer point) | 
| 26 |  |  | C     gX, gxNm1 :: Time tendencies at current and previous time levels. | 
| 27 |  |  | C     etaH  :: surface r-anomaly, advanced in time consistently | 
| 28 |  |  | C              with 2.D flow divergence (Exact-Conservation): | 
| 29 |  |  | C                etaH^n+1 = etaH^n - delta_t*Div.(H^n U^n+1) | 
| 30 |  |  | C  note: a) used with "exactConserv", necessary for Non-Lin free-surf and mixed | 
| 31 |  |  | C           forward/backward free-surf time stepping (e.g., Crank-Nickelson) | 
| 32 |  |  | C        b) same as etaN but not necessarily at the same time, e.g.: | 
| 33 |  |  | C           implicDiv2DFlow=1 => etaH=etaN ; =0 => etaH=etaN^(n-1); | 
| 34 |  |  |  | 
| 35 |  |  | #ifdef ALLOW_ADAMSBASHFORTH_3 | 
| 36 |  |  | COMMON /DYNVARS_R/ | 
| 37 |  |  | &                   etaN, | 
| 38 |  |  | &                   uVel,vVel,wVel,theta,salt, | 
| 39 |  |  | &                   gU,   gV, | 
| 40 |  |  | &                   guNm, gvNm, gtNm, gsNm | 
| 41 |  |  | #else /* ALLOW_ADAMSBASHFORTH_3 */ | 
| 42 |  |  | COMMON /DYNVARS_R/ | 
| 43 |  |  | &                   etaN, | 
| 44 |  |  | &                   uVel,vVel,wVel,theta,salt, | 
| 45 |  |  | &                   gU,   gV, | 
| 46 |  |  | &                   guNm1,gvNm1,gtNm1,gsNm1 | 
| 47 |  |  | #endif /* ALLOW_ADAMSBASHFORTH_3 */ | 
| 48 |  |  | _RL  etaN  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 49 |  |  | _RL  uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 50 |  |  | _RL  vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 51 |  |  | _RL  wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 52 |  |  | _RL  theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 53 |  |  | _RL  salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 54 |  |  | _RL  gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 55 |  |  | _RL  gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 56 |  |  | #ifdef ALLOW_ADAMSBASHFORTH_3 | 
| 57 |  |  | _RL  guNm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,2) | 
| 58 |  |  | _RL  gvNm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,2) | 
| 59 |  |  | _RL  gtNm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,2) | 
| 60 |  |  | _RL  gsNm(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,2) | 
| 61 |  |  | #else /* ALLOW_ADAMSBASHFORTH_3 */ | 
| 62 |  |  | _RL  guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 63 |  |  | _RL  gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 64 |  |  | _RL  gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 65 |  |  | _RL  gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 66 |  |  | #endif /* ALLOW_ADAMSBASHFORTH_3 */ | 
| 67 | ksnow | 1.2 |  | 
| 68 | ksnow | 1.1 | #ifdef ALLOW_PRESSURE_RELEASE_CODE | 
| 69 |  |  | COMMON /PRESS_RELEASE_R/ | 
| 70 |  |  | &  pReleaseTransX, pReleaseTransY | 
| 71 |  |  | _RL pReleaseTransX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 72 |  |  | _RL pReleaseTransY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 73 |  |  | #endif | 
| 74 |  |  |  | 
| 75 |  |  | #ifdef USE_OLD_EXTERNAL_FORCING | 
| 76 |  |  | COMMON /DYNVARS_OLD/ | 
| 77 |  |  | &                   gT,   gS | 
| 78 |  |  | _RL  gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 79 |  |  | _RL  gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 80 |  |  | #endif | 
| 81 |  |  |  | 
| 82 |  |  | COMMON /DYNVARS_R_2/ | 
| 83 |  |  | &                   etaH | 
| 84 |  |  | _RL  etaH  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 85 |  |  |  | 
| 86 |  |  | #if (defined (ALLOW_3D_DIFFKR) || defined (ALLOW_DIFFKR_CONTROL)) | 
| 87 |  |  | C     diffKr :: full 3D specification of Laplacian diffusion coeff. | 
| 88 |  |  | C               for mixing of tracers vertically ( units of r^2/s ) | 
| 89 |  |  | COMMON /DYNVARS_DIFFKR/ | 
| 90 |  |  | &                       diffKr | 
| 91 |  |  | _RL  diffKr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 92 |  |  | #endif | 
| 93 |  |  |  | 
| 94 |  |  | C   The following blocks containing requires anomaly fields of control vars | 
| 95 |  |  | C   and related to Options: | 
| 96 |  |  | C   ALLOW_KAPGM_CONTROL , ALLOW_KAPREDI_CONTROL and ALLOW_BOTTOMDRAG_CONTROL | 
| 97 |  |  | C   have been moved to header file "CTRL_FIELDS.h" | 
| 98 |  |  |  | 
| 99 |  |  | #ifdef ALLOW_BL79_LAT_VARY | 
| 100 |  |  | C     BL79LatArray :: is used for latitudinal dependence of | 
| 101 |  |  | C                     BryanLewis79 vertical diffusivity | 
| 102 |  |  | COMMON /DYNVARS_BL79LatArray/ BL79LatArray | 
| 103 |  |  | _RL BL79LatArray (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 104 |  |  | #endif | 
| 105 |  |  |  | 
| 106 |  |  | C     Diagnostic Variables: | 
| 107 |  |  | C     phiHydLow    :: Phi-Hydrostatic at r-lower boundary | 
| 108 |  |  | C                     (bottom in z-coordinates, top in p-coordinates) | 
| 109 |  |  | C     totPhiHyd    :: total hydrostatic Potential (anomaly, for now), | 
| 110 |  |  | C                     at cell center level ; includes surface contribution. | 
| 111 |  |  | C                     (for diagnostic + used in Z-coord with EOS_funct_P) | 
| 112 |  |  | C     rhoInSitu    :: In-Situ density anomaly [kg/m^3] at cell center level. | 
| 113 |  |  | C     hMixLayer    :: Mixed layer depth [m] | 
| 114 |  |  | C                     (for diagnostic + used GMRedi "fm07") | 
| 115 |  |  | C     IVDConvCount :: Impl.Vert.Diffusion convection counter: | 
| 116 |  |  | C                     = 0 (not convecting) or 1 (convecting) | 
| 117 |  |  | COMMON /DYNVARS_DIAG/ | 
| 118 | ksnow | 1.2 | &                phiHydLow, totPhiHyd, | 
| 119 |  |  | &                rhoInSitu, | 
| 120 |  |  | &                hMixLayer, IVDConvCount, phiHydLowC | 
| 121 | ksnow | 1.1 | _RL  phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 122 | ksnow | 1.2 | _RL  phiHydLowC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 123 | ksnow | 1.1 | _RL  totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 124 |  |  | _RL  rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 125 |  |  | _RL  hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 126 |  |  | _RL  IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 127 |  |  |  | 
| 128 | ksnow | 1.2 | #ifdef ALLOW_SOLVE4_PS_AND_DRAG | 
| 129 |  |  | C     Variables for Implicit friction (& vert. visc) in 2-D pressure solver | 
| 130 |  |  | C     dU_psFacX    :: zonal velocity increment factor from (implicit) surf. | 
| 131 |  |  | C                     pressure gradient in X (no Units) | 
| 132 |  |  | C     dV_psFacY    :: merid velocity increment factor from (implicit) surf. | 
| 133 |  |  | C                     pressure gradient in Y (no Units) | 
| 134 |  |  |  | 
| 135 |  |  | COMMON /DYNVARS_DRAG_IN_PS/ | 
| 136 |  |  | &                dU_psFacX, dV_psFacY | 
| 137 |  |  | _RL  dU_psFacX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 138 |  |  | _RL  dV_psFacY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 139 |  |  | #endif /* ALLOW_SOLVE4_PS_AND_DRAG */ |