/[MITgcm]/MITgcm/model/inc/GRID.h
ViewVC logotype

Contents of /MITgcm/model/inc/GRID.h

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


Revision 1.26 - (show annotations) (download)
Sat Jul 24 01:26:26 2004 UTC (19 years, 10 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint57b_post, checkpoint56b_post, checkpoint54d_post, checkpoint54e_post, checkpoint57d_post, checkpoint55, checkpoint57, checkpoint56, checkpoint54f_post, checkpoint55i_post, checkpoint55c_post, checkpoint57a_post, checkpoint55g_post, checkpoint57c_post, checkpoint55d_post, checkpoint55d_pre, checkpoint57c_pre, checkpoint55j_post, checkpoint55h_post, checkpoint57e_post, checkpoint55b_post, checkpoint55f_post, eckpoint57e_pre, checkpoint56a_post, checkpoint57f_pre, checkpoint56c_post, checkpoint57a_pre, checkpoint55a_post, checkpoint55e_post
Changes since 1.25: +11 -11 lines
File MIME type: text/plain
Re-arranging common block GRID_R (_RL first, then _RS)
to please compiler optim.

1 C $Header: /u/gcmpack/MITgcm/model/inc/GRID.h,v 1.25 2003/11/12 00:02:44 dimitri 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
303 C-- COMMON /GRID_R/ REAL valued grid defining variables.
304 C dxC - Cell center separation in X across western cell wall (m)
305 C dxG - Cell face separation in X along southern cell wall (m)
306 C dxF - Cell face separation in X thru cell center (m)
307 C dxV - V-point separation in X across south-west corner of cell (m)
308 C dyC - Cell center separation in Y across southern cell wall (m)
309 C dyG - Cell face separation in Y along western cell wall (m)
310 C dyF - Cell face separation in Y thru cell center (m)
311 C dyU - U-point separation in Y across south-west corner of cell (m)
312 C drC - Cell center separation along Z axis ( units of r ).
313 C drF - Cell face separation along Z axis ( units of r ).
314 C Rcolumn -Total thickness (in r_unit) of the fluid column
315 C R_low - base of fluid in r_unit (Depth(m) / Pressure(Pa) at top Atmos.)
316 C Ro_surf- surface reference (at rest) position, r_unit.
317 C klowC - index of the lowest "wet cell" (2D)
318 C hFac - Fraction of cell in vertical which is open i.e how
319 C "lopped" a cell is (dimensionless scale factor).
320 C Note: The code needs terms like MIN(hFac,hFac(I+1))
321 C On some platforms it may be better to precompute
322 C hFacW, hFacE, ... here than do MIN on the fly.
323 C gravitySign - indicates the direction of gravity relative to R direction
324 C (= -1 for R=Z (Z increases upward, -gravity direction )
325 C (= +1 for R=P (P increases downward, +gravity direction)
326 C rkFac - Vertical coordinate to vertical index orientation.
327 C ( -1 same orientation, 1 opposite orientation )
328 C maskH - cell Center full-column mask (= 2D mask)
329 C maskC - cell Center land mask
330 C maskW - West face land mask
331 C maskS - South face land mask
332 C recip_dxC - Recipricol of dxC
333 C recip_dxG - Recipricol of dxG
334 C recip_dxF - Recipricol of dxF
335 C recip_dxV - Recipricol of dxV
336 C recip_dyC - Recipricol of dxC
337 C recip_dyG - Recipricol of dyG
338 C recip_dyF - Recipricol of dyF
339 C recip_dyU - Recipricol of dyU
340 C recip_drC - Recipricol of drC
341 C recip_drF - Recipricol of drF
342 C recip_Rcol - Inverse of cell center column thickness (1/r_unit)
343 C recip_hFacC - Inverse of cell open-depth f[X,Y,Z] ( dimensionless ).
344 C recip_hFacW rhFacC center, rhFacW west, rhFacS south.
345 C recip_hFacS Note: This is precomputed here because it involves division.
346 C saFac - Shallow atmosphere factor (dimensionless scale factor).
347 C xC - X-coordinate of center of cell f[X,Y]. The units of xc, yc
348 C depend on the grid. They are not used in differencing or
349 C averaging but are just a convient quantity for I/O,
350 C diagnostics etc.. As such xc is in m for cartesian
351 C coordinates but degrees for spherical polar.
352 C yC - Y-coordinate of center of cell f[X,Y].
353 C yG - Y-coordinate of corner of cell ( c-grid vorticity point) f[X,Y].
354 C xC0, yC0 - West edge x coord ( metres or degrees )
355 C South edge y coord ( metres or degrees )
356 C rA - R-face are f[X,Y] ( m^2 ).
357 C Note: In a cartesian framework zA is simply dx*dy,
358 C however we use zA to allow for non-globally
359 C orthogonal coordinate frames (with appropriate
360 C metric terms).
361 C rC - R-coordinate of center of cell f[Z] (units of r).
362 C rF - R-coordinate of face of cell f[Z] (units of r).
363 C tanPhiAtU - tan of the latitude at U point. Used for spherical polar
364 C metric term in U equation.
365 C tanPhiAtV - tan of the latitude at V point. Used for spherical polar
366 C metric term in V equation.
367 COMMON /GRID_I/ klowC
368 INTEGER klowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
369
370 COMMON /GRID_R/
371 & cosfacU,cosfacV,sqcosfacU,sqcosfacV,
372 & gravitySign,rkFac, recip_rkFac,
373 & dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
374 & R_low,Ro_surf,HFacC,HFacW,HFacS,
375 & recip_dxC,recip_dxF,recip_dxG,recip_dxV,
376 & recip_dyC,recip_dyF,recip_dyG,recip_dyU,
377 & recip_Rcol,
378 & recip_hFacC,recip_hFacW,recip_hFacS,
379 & saFac,
380 & xC,yC,rA,rAw,rAs,rAz,xG,yG,
381 & maskH, maskC,maskW,maskS,
382 & recip_rA,recip_rAw,recip_rAs,recip_rAz,
383 & tanPhiAtU, tanPhiAtV,
384 & drC,drF,recip_drC,recip_drF,rC,rF,
385 & xC0, yC0
386 _RL cosfacU(1-Oly:sNy+Oly,nSx,nSy)
387 _RL cosfacV(1-Oly:sNy+Oly,nSx,nSy)
388 _RL sqcosfacU(1-Oly:sNy+Oly,nSx,nSy)
389 _RL sqcosfacV(1-Oly:sNy+Oly,nSx,nSy)
390 _RL gravitySign
391 _RL rkFac
392 _RL recip_rkFac
393 _RS dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
394 _RS dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
395 _RS dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
396 _RS dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
397 _RS dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
398 _RS dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
399 _RS dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
400 _RS dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
401 _RS R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
402 _RS Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
403 _RS HFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
404 _RS HFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
405 _RS HFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
406 _RS recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
407 _RS recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
408 _RS recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
409 _RS recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
410 _RS recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
411 _RS recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
412 _RS recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
413 _RS recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
414 _RS recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
415 _RS recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
416 _RS recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
417 _RS recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
418 _RS xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
419 _RS xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
420 _RS yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
421 _RS yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
422 _RS rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
423 _RS rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
424 _RS rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
425 _RS rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
426 _RS recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
427 _RS recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
428 _RS recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
429 _RS recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
430 _RS maskH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
431 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
432 _RS maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
433 _RS maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
434 _RS tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
435 _RS tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
436 _RS drC (1:Nr)
437 _RS drF (1:Nr)
438 _RS recip_drC (1:Nr)
439 _RS recip_drF (1:Nr)
440 _RS saFac (1:Nr)
441 _RS rC (1:Nr)
442 _RS rF (1:Nr+1)
443 _RS xC0
444 _RS yC0
445
446 #ifdef ALLOW_NONHYDROSTATIC
447 COMMON /GRID_NH/
448 & recip_hFacU
449 _RS recip_hFacU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
450 #endif

  ViewVC Help
Powered by ViewVC 1.1.22