| 1 | ksnow | 1.1 | C $Header: /u/gcmpack/MITgcm/model/inc/GRID.h,v 1.43 2013/07/26 14:20:01 jmc Exp $ | 
| 2 |  |  | C $Name:  $ | 
| 3 |  |  | C | 
| 4 |  |  | CBOP | 
| 5 |  |  | C    !ROUTINE: GRID.h | 
| 6 |  |  | C    !INTERFACE: | 
| 7 |  |  | C    include GRID.h | 
| 8 |  |  | C    !DESCRIPTION: \bv | 
| 9 |  |  | C     *==========================================================* | 
| 10 |  |  | C     | GRID.h | 
| 11 |  |  | C     | o Header file defining model grid. | 
| 12 |  |  | C     *==========================================================* | 
| 13 |  |  | C     | Model grid is defined for each process by reference to | 
| 14 |  |  | C     | the arrays set here. | 
| 15 |  |  | C     | Notes | 
| 16 |  |  | C     | ===== | 
| 17 |  |  | C     | The standard MITgcm convention of westmost, southern most | 
| 18 |  |  | C     | and upper most having the (1,1,1) index is used here. | 
| 19 |  |  | C     | i.e. | 
| 20 |  |  | C     |---------------------------------------------------------- | 
| 21 |  |  | C     | (1)  Plan view schematic of model grid (top layer i.e. ) | 
| 22 |  |  | C     |      ================================= ( ocean surface ) | 
| 23 |  |  | C     |                                        ( or top of     ) | 
| 24 |  |  | C     |                                        ( atmosphere    ) | 
| 25 |  |  | C     |      This diagram shows the location of the model | 
| 26 |  |  | C     |      prognostic variables on the model grid. The "T" | 
| 27 |  |  | C     |      location is used for all tracers. The figure also | 
| 28 |  |  | C     |      shows the southern most, western most indexing | 
| 29 |  |  | C     |      convention that is used for all model variables. | 
| 30 |  |  | C     | | 
| 31 |  |  | C     | | 
| 32 |  |  | C     |             V(i=1,                     V(i=Nx, | 
| 33 |  |  | C     |               j=Ny+1,                    j=Ny+1, | 
| 34 |  |  | C     |               k=1)                       k=1) | 
| 35 |  |  | C     |                /|\                       /|\  "PWX" | 
| 36 |  |  | C     |       |---------|------------------etc..  |---- *--- | 
| 37 |  |  | C     |       |                     |                   *  | | 
| 38 |  |  | C     |"PWY"*******************************etc..  **********"PWY" | 
| 39 |  |  | C     |       |                     |                   *  | | 
| 40 |  |  | C     |       |                     |                   *  | | 
| 41 |  |  | C     |       |                     |                   *  | | 
| 42 |  |  | C     |U(i=1, ==>       x           |             x     *==>U | 
| 43 |  |  | C     |  j=Ny,|      T(i=1,         |          T(i=Nx,  *(i=Nx+1, | 
| 44 |  |  | C     |  k=1) |        j=Ny,        |            j=Ny,  *  |j=Ny, | 
| 45 |  |  | C     |       |        k=1)         |            k=1)   *  |k=1) | 
| 46 |  |  | C     | | 
| 47 |  |  | C     |       .                     .                      . | 
| 48 |  |  | C     |       .                     .                      . | 
| 49 |  |  | C     |       .                     .                      . | 
| 50 |  |  | C     |       e                     e                   *  e | 
| 51 |  |  | C     |       t                     t                   *  t | 
| 52 |  |  | C     |       c                     c                   *  c | 
| 53 |  |  | C     |       |                     |                   *  | | 
| 54 |  |  | C     |       |                     |                   *  | | 
| 55 |  |  | C     |U(i=1, ==>       x           |             x     *  | | 
| 56 |  |  | C     |  j=2, |      T(i=1,         |          T(i=Nx,  *  | | 
| 57 |  |  | C     |  k=1) |        j=2,         |            j=2,   *  | | 
| 58 |  |  | C     |       |        k=1)         |            k=1)   *  | | 
| 59 |  |  | C     |       |                     |                   *  | | 
| 60 |  |  | C     |       |        /|\          |            /|\    *  | | 
| 61 |  |  | C     |      -----------|------------------etc..  |-----*--- | 
| 62 |  |  | C     |       |       V(i=1,        |           V(i=Nx, *  | | 
| 63 |  |  | C     |       |         j=2,        |             j=2,  *  | | 
| 64 |  |  | C     |       |         k=1)        |             k=1)  *  | | 
| 65 |  |  | C     |       |                     |                   *  | | 
| 66 |  |  | C     |U(i=1, ==>       x         ==>U(i=2,       x     *==>U | 
| 67 |  |  | C     |  j=1, |      T(i=1,         |  j=1,    T(i=Nx,  *(i=Nx+1, | 
| 68 |  |  | C     |  k=1) |        j=1,         |  k=1)      j=1,   *  |j=1, | 
| 69 |  |  | C     |       |        k=1)         |            k=1)   *  |k=1) | 
| 70 |  |  | C     |       |                     |                   *  | | 
| 71 |  |  | C     |       |        /|\          |            /|\    *  | | 
| 72 |  |  | C     |"SB"++>|---------|------------------etc..  |-----*--- | 
| 73 |  |  | C     |      /+\      V(i=1,                    V(i=Nx, * | 
| 74 |  |  | C     |       +         j=1,                      j=1,  * | 
| 75 |  |  | C     |       +         k=1)                      k=1)  * | 
| 76 |  |  | C     |     "WB"                                      "PWX" | 
| 77 |  |  | C     | | 
| 78 |  |  | C     |   N, y increasing northwards | 
| 79 |  |  | C     |  /|\ j increasing northwards | 
| 80 |  |  | C     |   | | 
| 81 |  |  | C     |   | | 
| 82 |  |  | C     |   ======>E, x increasing eastwards | 
| 83 |  |  | C     |             i increasing eastwards | 
| 84 |  |  | C     | | 
| 85 |  |  | C     |    i: East-west index | 
| 86 |  |  | C     |    j: North-south index | 
| 87 |  |  | C     |    k: up-down index | 
| 88 |  |  | C     |    U: x-velocity (m/s) | 
| 89 |  |  | C     |    V: y-velocity (m/s) | 
| 90 |  |  | C     |    T: potential temperature (oC) | 
| 91 |  |  | C     | "SB": Southern boundary | 
| 92 |  |  | C     | "WB": Western boundary | 
| 93 |  |  | C     |"PWX": Periodic wrap around in X. | 
| 94 |  |  | C     |"PWY": Periodic wrap around in Y. | 
| 95 |  |  | C     |---------------------------------------------------------- | 
| 96 |  |  | C     | (2) South elevation schematic of model grid | 
| 97 |  |  | C     |     ======================================= | 
| 98 |  |  | C     |     This diagram shows the location of the model | 
| 99 |  |  | C     |     prognostic variables on the model grid. The "T" | 
| 100 |  |  | C     |     location is used for all tracers. The figure also | 
| 101 |  |  | C     |     shows the upper most, western most indexing | 
| 102 |  |  | C     |     convention that is used for all model variables. | 
| 103 |  |  | C     | | 
| 104 |  |  | C     |      "WB" | 
| 105 |  |  | C     |       + | 
| 106 |  |  | C     |       + | 
| 107 |  |  | C     |      \+/       /|\                       /|\       . | 
| 108 |  |  | C     |"UB"++>|-------- | -----------------etc..  | ----*--- | 
| 109 |  |  | C     |       |    rVel(i=1,        |        rVel(i=Nx, *  | | 
| 110 |  |  | C     |       |         j=1,        |             j=1,  *  | | 
| 111 |  |  | C     |       |         k=1)        |             k=1)  *  | | 
| 112 |  |  | C     |       |                     |                   *  | | 
| 113 |  |  | C     |U(i=1, ==>       x         ==>U(i=2,       x     *==>U | 
| 114 |  |  | C     |  j=1, |      T(i=1,         |  j=1,    T(i=Nx,  *(i=Nx+1, | 
| 115 |  |  | C     |  k=1) |        j=1,         |  k=1)      j=1,   *  |j=1, | 
| 116 |  |  | C     |       |        k=1)         |            k=1)   *  |k=1) | 
| 117 |  |  | C     |       |                     |                   *  | | 
| 118 |  |  | C     |       |        /|\          |            /|\    *  | | 
| 119 |  |  | C     |       |-------- | -----------------etc..  | ----*--- | 
| 120 |  |  | C     |       |    rVel(i=1,        |        rVel(i=Nx, *  | | 
| 121 |  |  | C     |       |         j=1,        |             j=1,  *  | | 
| 122 |  |  | C     |       |         k=2)        |             k=2)  *  | | 
| 123 |  |  | C     | | 
| 124 |  |  | C     |       .                     .                      . | 
| 125 |  |  | C     |       .                     .                      . | 
| 126 |  |  | C     |       .                     .                      . | 
| 127 |  |  | C     |       e                     e                   *  e | 
| 128 |  |  | C     |       t                     t                   *  t | 
| 129 |  |  | C     |       c                     c                   *  c | 
| 130 |  |  | C     |       |                     |                   *  | | 
| 131 |  |  | C     |       |                     |                   *  | | 
| 132 |  |  | C     |       |                     |                   *  | | 
| 133 |  |  | C     |       |                     |                   *  | | 
| 134 |  |  | C     |       |        /|\          |            /|\    *  | | 
| 135 |  |  | C     |       |-------- | -----------------etc..  | ----*--- | 
| 136 |  |  | C     |       |    rVel(i=1,        |        rVel(i=Nx, *  | | 
| 137 |  |  | C     |       |         j=1,        |             j=1,  *  | | 
| 138 |  |  | C     |       |         k=Nr)       |             k=Nr) *  | | 
| 139 |  |  | C     |U(i=1, ==>       x         ==>U(i=2,       x     *==>U | 
| 140 |  |  | C     |  j=1, |      T(i=1,         |  j=1,    T(i=Nx,  *(i=Nx+1, | 
| 141 |  |  | C     |  k=Nr)|        j=1,         |  k=Nr)     j=1,   *  |j=1, | 
| 142 |  |  | C     |       |        k=Nr)        |            k=Nr)  *  |k=Nr) | 
| 143 |  |  | C     |       |                     |                   *  | | 
| 144 |  |  | C     |"LB"++>============================================== | 
| 145 |  |  | C     |                                               "PWX" | 
| 146 |  |  | C     | | 
| 147 |  |  | C     | Up   increasing upwards. | 
| 148 |  |  | C     |/|\                                                       . | 
| 149 |  |  | C     | | | 
| 150 |  |  | C     | | | 
| 151 |  |  | C     | =====> E  i increasing eastwards | 
| 152 |  |  | C     | |         x increasing eastwards | 
| 153 |  |  | C     | | | 
| 154 |  |  | C     |\|/ | 
| 155 |  |  | C     | Down,k increasing downwards. | 
| 156 |  |  | C     | | 
| 157 |  |  | C     | Note: r => height (m) => r increases upwards | 
| 158 |  |  | C     |       r => pressure (Pa) => r increases downwards | 
| 159 |  |  | C     | | 
| 160 |  |  | C     | | 
| 161 |  |  | C     |    i: East-west index | 
| 162 |  |  | C     |    j: North-south index | 
| 163 |  |  | C     |    k: up-down index | 
| 164 |  |  | C     |    U: x-velocity (m/s) | 
| 165 |  |  | C     | rVel: z-velocity ( units of r ) | 
| 166 |  |  | C     |       The vertical velocity variable rVel is in units of | 
| 167 |  |  | C     |       "r" the vertical coordinate. r in m will give | 
| 168 |  |  | C     |       rVel m/s. r in Pa will give rVel Pa/s. | 
| 169 |  |  | C     |    T: potential temperature (oC) | 
| 170 |  |  | C     | "UB": Upper boundary. | 
| 171 |  |  | C     | "LB": Lower boundary (always solid - therefore om|w == 0) | 
| 172 |  |  | C     | "WB": Western boundary | 
| 173 |  |  | C     |"PWX": Periodic wrap around in X. | 
| 174 |  |  | C     |---------------------------------------------------------- | 
| 175 |  |  | C     | (3) Views showing nomenclature and indexing | 
| 176 |  |  | C     |     for grid descriptor variables. | 
| 177 |  |  | C     | | 
| 178 |  |  | C     |      Fig 3a. shows the orientation, indexing and | 
| 179 |  |  | C     |      notation for the grid spacing terms used internally | 
| 180 |  |  | C     |      for the evaluation of gradient and averaging terms. | 
| 181 |  |  | C     |      These varaibles are set based on the model input | 
| 182 |  |  | C     |      parameters which define the model grid in terms of | 
| 183 |  |  | C     |      spacing in X, Y and Z. | 
| 184 |  |  | C     | | 
| 185 |  |  | C     |      Fig 3b. shows the orientation, indexing and | 
| 186 |  |  | C     |      notation for the variables that are used to define | 
| 187 |  |  | C     |      the model grid. These varaibles are set directly | 
| 188 |  |  | C     |      from the model input. | 
| 189 |  |  | C     | | 
| 190 |  |  | C     | Figure 3a | 
| 191 |  |  | C     | ========= | 
| 192 |  |  | C     |       |------------------------------------ | 
| 193 |  |  | C     |       |                       | | 
| 194 |  |  | C     |"PWY"********************************* etc... | 
| 195 |  |  | C     |       |                       | | 
| 196 |  |  | C     |       |                       | | 
| 197 |  |  | C     |       |                       | | 
| 198 |  |  | C     |       |                       | | 
| 199 |  |  | C     |       |                       | | 
| 200 |  |  | C     |       |                       | | 
| 201 |  |  | C     |       |                       | | 
| 202 |  |  | C     | | 
| 203 |  |  | C     |       .                       . | 
| 204 |  |  | C     |       .                       . | 
| 205 |  |  | C     |       .                       . | 
| 206 |  |  | C     |       e                       e | 
| 207 |  |  | C     |       t                       t | 
| 208 |  |  | C     |       c                       c | 
| 209 |  |  | C     |       |-----------v-----------|-----------v----------|- | 
| 210 |  |  | C     |       |                       |                      | | 
| 211 |  |  | C     |       |                       |                      | | 
| 212 |  |  | C     |       |                       |                      | | 
| 213 |  |  | C     |       |                       |                      | | 
| 214 |  |  | C     |       |                       |                      | | 
| 215 |  |  | C     |       u<--dxF(i=1,j=2,k=1)--->u           t          | | 
| 216 |  |  | C     |       |/|\       /|\          |                      | | 
| 217 |  |  | C     |       | |         |           |                      | | 
| 218 |  |  | C     |       | |         |           |                      | | 
| 219 |  |  | C     |       | |         |           |                      | | 
| 220 |  |  | C     |       |dyU(i=1,  dyC(i=1,     |                      | | 
| 221 |  |  | C     | ---  ---|--j=2,---|--j=2,-----------------v----------|- | 
| 222 |  |  | C     | /|\   | |  k=1)   |  k=1)     |          /|\         | | 
| 223 |  |  | C     |  |    | |         |           |          dyF(i=2,    | | 
| 224 |  |  | C     |  |    | |         |           |           |  j=1,    | | 
| 225 |  |  | C     |dyG(   |\|/       \|/          |           |  k=1)    | | 
| 226 |  |  | C     |   i=1,u---        t<---dxC(i=2,j=1,k=1)-->t          | | 
| 227 |  |  | C     |   j=1,|                       |           |          | | 
| 228 |  |  | C     |   k=1)|                       |           |          | | 
| 229 |  |  | C     |  |    |                       |           |          | | 
| 230 |  |  | C     |  |    |                       |           |          | | 
| 231 |  |  | C     | \|/   |           |<---dxV(i=2,j=1,k=1)--\|/         | | 
| 232 |  |  | C     |"SB"++>|___________v___________|___________v__________|_ | 
| 233 |  |  | C     |       <--dxG(i=1,j=1,k=1)-----> | 
| 234 |  |  | C     |      /+\                                              . | 
| 235 |  |  | C     |       + | 
| 236 |  |  | C     |       + | 
| 237 |  |  | C     |     "WB" | 
| 238 |  |  | C     | | 
| 239 |  |  | C     |   N, y increasing northwards | 
| 240 |  |  | C     |  /|\ j increasing northwards | 
| 241 |  |  | C     |   | | 
| 242 |  |  | C     |   | | 
| 243 |  |  | C     |   ======>E, x increasing eastwards | 
| 244 |  |  | C     |             i increasing eastwards | 
| 245 |  |  | C     | | 
| 246 |  |  | C     |    i: East-west index | 
| 247 |  |  | C     |    j: North-south index | 
| 248 |  |  | C     |    k: up-down index | 
| 249 |  |  | C     |    u: x-velocity point | 
| 250 |  |  | C     |    V: y-velocity point | 
| 251 |  |  | C     |    t: tracer point | 
| 252 |  |  | C     | "SB": Southern boundary | 
| 253 |  |  | C     | "WB": Western boundary | 
| 254 |  |  | C     |"PWX": Periodic wrap around in X. | 
| 255 |  |  | C     |"PWY": Periodic wrap around in Y. | 
| 256 |  |  | C     | | 
| 257 |  |  | C     | Figure 3b | 
| 258 |  |  | C     | ========= | 
| 259 |  |  | C     | | 
| 260 |  |  | C     |       .                       . | 
| 261 |  |  | C     |       .                       . | 
| 262 |  |  | C     |       .                       . | 
| 263 |  |  | C     |       e                       e | 
| 264 |  |  | C     |       t                       t | 
| 265 |  |  | C     |       c                       c | 
| 266 |  |  | C     |       |-----------v-----------|-----------v--etc... | 
| 267 |  |  | C     |       |                       | | 
| 268 |  |  | C     |       |                       | | 
| 269 |  |  | C     |       |                       | | 
| 270 |  |  | C     |       |                       | | 
| 271 |  |  | C     |       |                       | | 
| 272 |  |  | C     |       u<--delX(i=1)---------->u           t | 
| 273 |  |  | C     |       |                       | | 
| 274 |  |  | C     |       |                       | | 
| 275 |  |  | C     |       |                       | | 
| 276 |  |  | C     |       |                       | | 
| 277 |  |  | C     |       |                       | | 
| 278 |  |  | C     |       |-----------v-----------------------v--etc... | 
| 279 |  |  | C     |       |          /|\          | | 
| 280 |  |  | C     |       |           |           | | 
| 281 |  |  | C     |       |           |           | | 
| 282 |  |  | C     |       |           |           | | 
| 283 |  |  | C     |       u        delY(j=1)      |           t | 
| 284 |  |  | C     |       |           |           | | 
| 285 |  |  | C     |       |           |           | | 
| 286 |  |  | C     |       |           |           | | 
| 287 |  |  | C     |       |           |           | | 
| 288 |  |  | C     |       |          \|/          | | 
| 289 |  |  | C     |"SB"++>|___________v___________|___________v__etc... | 
| 290 |  |  | C     |      /+\                                                 . | 
| 291 |  |  | C     |       + | 
| 292 |  |  | C     |       + | 
| 293 |  |  | C     |     "WB" | 
| 294 |  |  | C     | | 
| 295 |  |  | C     *==========================================================* | 
| 296 |  |  | C     \ev | 
| 297 |  |  | CEOP | 
| 298 |  |  |  | 
| 299 |  |  | C     Macros that override/modify standard definitions | 
| 300 |  |  | #include "GRID_MACROS.h" | 
| 301 |  |  |  | 
| 302 |  |  | C--   COMMON /GRID_RL/ RL valued grid defining variables. | 
| 303 |  |  | C     deepFacC  :: deep-model grid factor (fct of vertical only) for dx,dy | 
| 304 |  |  | C     deepFacF     at level-center (deepFacC)  and level interface (deepFacF) | 
| 305 |  |  | C     deepFac2C :: deep-model grid factor (fct of vertical only) for area dx*dy | 
| 306 |  |  | C     deepFac2F    at level-center (deepFac2C) and level interface (deepFac2F) | 
| 307 |  |  | C     gravitySign :: indicates the direction of gravity relative to R direction | 
| 308 |  |  | C                   (= -1 for R=Z (Z increases upward, -gravity direction  ) | 
| 309 |  |  | C                   (= +1 for R=P (P increases downward, +gravity direction) | 
| 310 |  |  | C     rkSign     :: Vertical coordinate to vertical index orientation. | 
| 311 |  |  | C                   ( +1 same orientation, -1 opposite orientation ) | 
| 312 |  |  | C     globalArea :: Domain Integrated horizontal Area [m2] | 
| 313 |  |  | COMMON /GRID_RL/ | 
| 314 |  |  | &  cosFacU, cosFacV, sqCosFacU, sqCosFacV, | 
| 315 |  |  | &  deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C, | 
| 316 |  |  | &  deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F, | 
| 317 |  |  | &  gravitySign, rkSign, globalArea | 
| 318 |  |  | _RL cosFacU        (1-OLy:sNy+OLy,nSx,nSy) | 
| 319 |  |  | _RL cosFacV        (1-OLy:sNy+OLy,nSx,nSy) | 
| 320 |  |  | _RL sqCosFacU      (1-OLy:sNy+OLy,nSx,nSy) | 
| 321 |  |  | _RL sqCosFacV      (1-OLy:sNy+OLy,nSx,nSy) | 
| 322 |  |  | _RL deepFacC       (Nr) | 
| 323 |  |  | _RL deepFac2C      (Nr) | 
| 324 |  |  | _RL deepFacF       (Nr+1) | 
| 325 |  |  | _RL deepFac2F      (Nr+1) | 
| 326 |  |  | _RL recip_deepFacC (Nr) | 
| 327 |  |  | _RL recip_deepFac2C(Nr) | 
| 328 |  |  | _RL recip_deepFacF (Nr+1) | 
| 329 |  |  | _RL recip_deepFac2F(Nr+1) | 
| 330 |  |  | _RL gravitySign | 
| 331 |  |  | _RL rkSign | 
| 332 |  |  | _RL globalArea | 
| 333 |  |  |  | 
| 334 |  |  | C--   COMMON /GRID_RS/ RS valued grid defining variables. | 
| 335 |  |  | C     dxC     :: Cell center separation in X across western cell wall (m) | 
| 336 |  |  | C     dxG     :: Cell face separation in X along southern cell wall (m) | 
| 337 |  |  | C     dxF     :: Cell face separation in X thru cell center (m) | 
| 338 |  |  | C     dxV     :: V-point separation in X across south-west corner of cell (m) | 
| 339 |  |  | C     dyC     :: Cell center separation in Y across southern cell wall (m) | 
| 340 |  |  | C     dyG     :: Cell face separation in Y along western cell wall (m) | 
| 341 |  |  | C     dyF     :: Cell face separation in Y thru cell center (m) | 
| 342 |  |  | C     dyU     :: U-point separation in Y across south-west corner of cell (m) | 
| 343 |  |  | C     drC     :: Cell center separation along Z axis ( units of r ). | 
| 344 |  |  | C     drF     :: Cell face separation along Z axis ( units of r ). | 
| 345 |  |  | C     R_low   :: base of fluid in r_unit (Depth(m) / Pressure(Pa) at top Atmos.) | 
| 346 |  |  | C     rLowW   :: base of fluid column in r_unit at Western  edge location. | 
| 347 |  |  | C     rLowS   :: base of fluid column in r_unit at Southern edge location. | 
| 348 |  |  | C     Ro_surf :: surface reference (at rest) position, r_unit. | 
| 349 |  |  | C     rSurfW  :: surface reference position at Western  edge location [r_unit]. | 
| 350 |  |  | C     rSurfS  :: surface reference position at Southern edge location [r_unit]. | 
| 351 |  |  | C     hFac    :: Fraction of cell in vertical which is open i.e how | 
| 352 |  |  | C              "lopped" a cell is (dimensionless scale factor). | 
| 353 |  |  | C              Note: The code needs terms like MIN(hFac,hFac(I-1)) | 
| 354 |  |  | C                    On some platforms it may be better to precompute | 
| 355 |  |  | C                    hFacW, hFacS, ... here than do MIN on the fly. | 
| 356 |  |  | C     maskInC :: Cell Center 2-D Interior mask (i.e., zero beyond OB) | 
| 357 |  |  | C     maskInW :: West  face 2-D Interior mask (i.e., zero on and beyond OB) | 
| 358 |  |  | C     maskInS :: South face 2-D Interior mask (i.e., zero on and beyond OB) | 
| 359 |  |  | C     maskC   :: cell Center land mask | 
| 360 |  |  | C     maskW   :: West face land mask | 
| 361 |  |  | C     maskS   :: South face land mask | 
| 362 |  |  | C     recip_dxC   :: Reciprocal of dxC | 
| 363 |  |  | C     recip_dxG   :: Reciprocal of dxG | 
| 364 |  |  | C     recip_dxF   :: Reciprocal of dxF | 
| 365 |  |  | C     recip_dxV   :: Reciprocal of dxV | 
| 366 |  |  | C     recip_dyC   :: Reciprocal of dxC | 
| 367 |  |  | C     recip_dyG   :: Reciprocal of dyG | 
| 368 |  |  | C     recip_dyF   :: Reciprocal of dyF | 
| 369 |  |  | C     recip_dyU   :: Reciprocal of dyU | 
| 370 |  |  | C     recip_drC   :: Reciprocal of drC | 
| 371 |  |  | C     recip_drF   :: Reciprocal of drF | 
| 372 |  |  | C     recip_Rcol  :: Inverse of cell center column thickness (1/r_unit) | 
| 373 |  |  | C     recip_hFacC :: Inverse of cell open-depth f[X,Y,Z] ( dimensionless ). | 
| 374 |  |  | C     recip_hFacW    rhFacC center, rhFacW west, rhFacS south. | 
| 375 |  |  | C     recip_hFacS    Note: This is precomputed here because it involves division. | 
| 376 |  |  | C     xC        :: X-coordinate of cell center f[X,Y]. The units of xc, yc | 
| 377 |  |  | C                  depend on the grid. They are not used in differencing or | 
| 378 |  |  | C                  averaging but are just a convient quantity for I/O, | 
| 379 |  |  | C                  diagnostics etc.. As such xc is in m for cartesian | 
| 380 |  |  | C                  coordinates but degrees for spherical polar. | 
| 381 |  |  | C     yC        :: Y-coordinate of center of cell f[X,Y]. | 
| 382 |  |  | C     yG        :: Y-coordinate of corner of cell ( c-grid vorticity point) f[X,Y]. | 
| 383 |  |  | C     rA        :: R-face are f[X,Y] ( m^2 ). | 
| 384 |  |  | C                  Note: In a cartesian framework rA is simply dx*dy, | 
| 385 |  |  | C                      however we use rA to allow for non-globally | 
| 386 |  |  | C                      orthogonal coordinate frames (with appropriate | 
| 387 |  |  | C                      metric terms). | 
| 388 |  |  | C     rC        :: R-coordinate of center of cell f[Z] (units of r). | 
| 389 |  |  | C     rF        :: R-coordinate of face of cell f[Z] (units of r). | 
| 390 |  |  | C - *HybSigm* - :: Hybrid-Sigma vert. Coord coefficients | 
| 391 |  |  | C     aHybSigmF    at level-interface (*HybSigmF) and level-center (*HybSigmC) | 
| 392 |  |  | C     aHybSigmC    aHybSigm* = constant r part, bHybSigm* = sigma part, such as | 
| 393 |  |  | C     bHybSigmF    r(ij,k,t) = rLow(ij) + aHybSigm(k)*[rF(1)-rF(Nr+1)] | 
| 394 |  |  | C     bHybSigmC              + bHybSigm(k)*[eta(ij,t)+Ro_surf(ij) - rLow(ij)] | 
| 395 |  |  | C     dAHybSigF :: vertical increment of Hybrid-Sigma coefficient: constant r part, | 
| 396 |  |  | C     dAHybSigC    between interface (dAHybSigF) and between center (dAHybSigC) | 
| 397 |  |  | C     dBHybSigF :: vertical increment of Hybrid-Sigma coefficient: sigma part, | 
| 398 |  |  | C     dBHybSigC    between interface (dBHybSigF) and between center (dBHybSigC) | 
| 399 |  |  | C     tanPhiAtU :: tan of the latitude at U point. Used for spherical polar | 
| 400 |  |  | C                  metric term in U equation. | 
| 401 |  |  | C     tanPhiAtV :: tan of the latitude at V point. Used for spherical polar | 
| 402 |  |  | C                  metric term in V equation. | 
| 403 |  |  | C     angleCosC :: cosine of grid orientation angle relative to Geographic direction | 
| 404 |  |  | C               at cell center: alpha=(Eastward_dir,grid_uVel_dir)=(North_d,vVel_d) | 
| 405 |  |  | C     angleSinC :: sine   of grid orientation angle relative to Geographic direction | 
| 406 |  |  | C               at cell center: alpha=(Eastward_dir,grid_uVel_dir)=(North_d,vVel_d) | 
| 407 |  |  | C     u2zonDir  :: cosine of grid orientation angle at U point location | 
| 408 |  |  | C     v2zonDir  :: minus sine of  orientation angle at V point location | 
| 409 |  |  | C     fCori     :: Coriolis parameter at grid Center point | 
| 410 |  |  | C     fCoriG    :: Coriolis parameter at grid Corner point | 
| 411 |  |  | C     fCoriCos  :: Coriolis Cos(phi) parameter at grid Center point (for NH) | 
| 412 |  |  |  | 
| 413 |  |  | COMMON /GRID_RS/ | 
| 414 |  |  | &  dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU, | 
| 415 |  |  | &  R_low, rLowW, rLowS, | 
| 416 |  |  | &  Ro_surf, rSurfW, rSurfS, | 
| 417 |  |  | &  hFacC, hFacW, hFacS, | 
| 418 |  |  | &  recip_dxC,recip_dxF,recip_dxG,recip_dxV, | 
| 419 |  |  | &  recip_dyC,recip_dyF,recip_dyG,recip_dyU, | 
| 420 |  |  | &  recip_Rcol, | 
| 421 |  |  | &  recip_hFacC,recip_hFacW,recip_hFacS, | 
| 422 |  |  | &  xC,yC,rA,rAw,rAs,rAz,xG,yG, | 
| 423 |  |  | &  maskInC, maskInW, maskInS, | 
| 424 |  |  | &  maskC, maskW, maskS, | 
| 425 |  |  | &  recip_rA,recip_rAw,recip_rAs,recip_rAz, | 
| 426 |  |  | &  drC, drF, recip_drC, recip_drF, rC, rF, | 
| 427 |  |  | &  aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC, | 
| 428 |  |  | &  dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC, | 
| 429 |  |  | &  tanPhiAtU, tanPhiAtV, | 
| 430 |  |  | &  angleCosC, angleSinC, u2zonDir, v2zonDir, | 
| 431 |  |  | &  fCori, fCoriG, fCoriCos | 
| 432 |  |  | #ifdef ALLOW_PRESSURE_RELEASE_CODE | 
| 433 |  |  | &  ,depthColW, depthColS | 
| 434 |  |  | #endif | 
| 435 |  |  | _RS dxC            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 436 |  |  | _RS dxF            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 437 |  |  | _RS dxG            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 438 |  |  | _RS dxV            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 439 |  |  | _RS dyC            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 440 |  |  | _RS dyF            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 441 |  |  | _RS dyG            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 442 |  |  | _RS dyU            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 443 |  |  | _RS R_low          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 444 |  |  | _RS rLowW          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 445 |  |  | _RS rLowS          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 446 |  |  | _RS Ro_surf        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 447 |  |  | _RS rSurfW         (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 448 |  |  | _RS rSurfS         (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 449 |  |  | _RS hFacC          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 450 |  |  | _RS hFacW          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 451 |  |  | _RS hFacS          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 452 |  |  | _RS recip_dxC      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 453 |  |  | _RS recip_dxF      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 454 |  |  | _RS recip_dxG      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 455 |  |  | _RS recip_dxV      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 456 |  |  | _RS recip_dyC      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 457 |  |  | _RS recip_dyF      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 458 |  |  | _RS recip_dyG      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 459 |  |  | _RS recip_dyU      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 460 |  |  | _RS recip_Rcol     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 461 |  |  | _RS recip_hFacC    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 462 |  |  | _RS recip_hFacW    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 463 |  |  | _RS recip_hFacS    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 464 |  |  | _RS xC             (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 465 |  |  | _RS xG             (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 466 |  |  | _RS yC             (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 467 |  |  | _RS yG             (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 468 |  |  | _RS rA             (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 469 |  |  | _RS rAw            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 470 |  |  | _RS rAs            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 471 |  |  | _RS rAz            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 472 |  |  | _RS recip_rA       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 473 |  |  | _RS recip_rAw      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 474 |  |  | _RS recip_rAs      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 475 |  |  | _RS recip_rAz      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 476 |  |  | _RS maskInC        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 477 |  |  | _RS maskInW        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 478 |  |  | _RS maskInS        (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 479 |  |  | _RS maskC          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 480 |  |  | _RS maskW          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 481 |  |  | _RS maskS          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) | 
| 482 |  |  | _RS drC            (Nr+1) | 
| 483 |  |  | _RS drF            (Nr) | 
| 484 |  |  | _RS recip_drC      (Nr+1) | 
| 485 |  |  | _RS recip_drF      (Nr) | 
| 486 |  |  | _RS rC             (Nr) | 
| 487 |  |  | _RS rF             (Nr+1) | 
| 488 |  |  | _RS aHybSigmF      (Nr+1) | 
| 489 |  |  | _RS bHybSigmF      (Nr+1) | 
| 490 |  |  | _RS aHybSigmC      (Nr) | 
| 491 |  |  | _RS bHybSigmC      (Nr) | 
| 492 |  |  | _RS dAHybSigF      (Nr) | 
| 493 |  |  | _RS dBHybSigF      (Nr) | 
| 494 |  |  | _RS dBHybSigC      (Nr+1) | 
| 495 |  |  | _RS dAHybSigC      (Nr+1) | 
| 496 |  |  | _RS tanPhiAtU      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 497 |  |  | _RS tanPhiAtV      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 498 |  |  | _RS angleCosC      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 499 |  |  | _RS angleSinC      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 500 |  |  | _RS u2zonDir       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 501 |  |  | _RS v2zonDir       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 502 |  |  | _RS fCori          (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 503 |  |  | _RS fCoriG         (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 504 |  |  | _RS fCoriCos       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 505 |  |  | #ifdef ALLOW_PRESSURE_RELEASE_CODE | 
| 506 |  |  | _RS depthColW      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 507 |  |  | _RS depthColS      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 508 |  |  | #endif | 
| 509 |  |  |  | 
| 510 |  |  | #ifdef ALLOW_DEPTH_CONTROL | 
| 511 |  |  | C--   COMMON /GRID_DEPTH_CTRL/ grid defining variables for Depth Control code. | 
| 512 |  |  | C     xx_r_low  :: in TAF-sense active replacement of R_low | 
| 513 |  |  | COMMON /GRID_DEPTH_CTRL/ | 
| 514 |  |  | &  xx_r_low | 
| 515 |  |  | _RL xx_r_low       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 516 |  |  | #endif /* ALLOW_DEPTH_CONTROL */ | 
| 517 |  |  |  | 
| 518 |  |  | C--   COMMON /GRID_I/ INTEGER valued grid defining variables. | 
| 519 |  |  | C     kSurfC  :: vertical index of the surface tracer cell | 
| 520 |  |  | C     kSurfW  :: vertical index of the surface U point | 
| 521 |  |  | C     kSurfS  :: vertical index of the surface V point | 
| 522 |  |  | C     kLowC   :: index of the r-lowest "wet cell" (2D) | 
| 523 |  |  | C IMPORTANT: kSurfC,W,S = Nr+1 and kLowC = 0 where the fluid column | 
| 524 |  |  | C            is empty (continent) | 
| 525 |  |  | COMMON /GRID_I/ | 
| 526 |  |  | &  kSurfC, kSurfW, kSurfS, | 
| 527 |  |  | &  kLowC | 
| 528 |  |  | INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 529 |  |  | INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 530 |  |  | INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 531 |  |  | INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) | 
| 532 |  |  |  | 
| 533 |  |  | C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |