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

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

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


Revision 1.27 - (hide annotations) (download)
Wed Apr 6 18:22:11 2005 UTC (19 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57g_pre, checkpoint57g_post, checkpoint57i_post, checkpoint57f_post, checkpoint57h_pre, checkpoint57h_post, checkpoint57h_done
Changes since 1.26: +10 -2 lines
File MIME type: text/plain
move Coriolis array from PARAMS.h to GRID.h

1 jmc 1.27 C $Header: /u/gcmpack/MITgcm/model/inc/GRID.h,v 1.26 2004/07/24 01:26:26 heimbach Exp $
2 adcroft 1.15 C $Name: $
3 cnh 1.1 C
4 cnh 1.16 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 adcroft 1.17 C | \+/ /|\ /|\ .
108 cnh 1.16 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 adcroft 1.17 C |/|\ .
149 cnh 1.16 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 adcroft 1.17 C | /+\ .
235 cnh 1.16 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 adcroft 1.17 C | /+\ .
291 cnh 1.16 C | +
292     C | +
293     C | "WB"
294     C |
295     C *==========================================================*
296     C \ev
297     CEOP
298 cnh 1.3
299     C Macros that override/modify standard definitions
300     #include "GRID_MACROS.h"
301    
302 cnh 1.1 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 cnh 1.5 C drC - Cell center separation along Z axis ( units of r ).
313     C drF - Cell face separation along Z axis ( units of r ).
314 adcroft 1.15 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 adcroft 1.21 C klowC - index of the lowest "wet cell" (2D)
318 cnh 1.1 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 jmc 1.23 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 cnh 1.6 C rkFac - Vertical coordinate to vertical index orientation.
327 cnh 1.7 C ( -1 same orientation, 1 opposite orientation )
328 jmc 1.18 C maskH - cell Center full-column mask (= 2D mask)
329 adcroft 1.15 C maskC - cell Center land mask
330 cnh 1.1 C maskW - West face land mask
331     C maskS - South face land mask
332 cnh 1.5 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 adcroft 1.15 C recip_Rcol - Inverse of cell center column thickness (1/r_unit)
343 cnh 1.5 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 cnh 1.1 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 adcroft 1.13 C yG - Y-coordinate of corner of cell ( c-grid vorticity point) f[X,Y].
354 cnh 1.4 C xC0, yC0 - West edge x coord ( metres or degrees )
355     C South edge y coord ( metres or degrees )
356 cnh 1.5 C rA - R-face are f[X,Y] ( m^2 ).
357 cnh 1.1 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 cnh 1.5 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 cnh 1.4 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 jmc 1.27 C fCori :: Coriolis parameter at grid Center point
368     C fCoriG :: Coriolis parameter at grid Corner point
369     C fCoriCos :: Coriolis Cos(phi) parameter at grid Center point (for NH)
370 mlosch 1.20 COMMON /GRID_I/ klowC
371     INTEGER klowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
372    
373 cnh 1.1 COMMON /GRID_R/
374 heimbach 1.26 & cosfacU,cosfacV,sqcosfacU,sqcosfacV,
375     & gravitySign,rkFac, recip_rkFac,
376 adcroft 1.15 & dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
377     & R_low,Ro_surf,HFacC,HFacW,HFacS,
378 cnh 1.5 & recip_dxC,recip_dxF,recip_dxG,recip_dxV,
379     & recip_dyC,recip_dyF,recip_dyG,recip_dyU,
380 adcroft 1.15 & recip_Rcol,
381 cnh 1.5 & recip_hFacC,recip_hFacW,recip_hFacS,
382     & saFac,
383 adcroft 1.15 & xC,yC,rA,rAw,rAs,rAz,xG,yG,
384 jmc 1.18 & maskH, maskC,maskW,maskS,
385     & recip_rA,recip_rAw,recip_rAs,recip_rAz,
386 adcroft 1.15 & tanPhiAtU, tanPhiAtV,
387     & drC,drF,recip_drC,recip_drF,rC,rF,
388 jmc 1.27 & xC0, yC0,
389     & fCori, fCoriG, fCoriCos
390 heimbach 1.26 _RL cosfacU(1-Oly:sNy+Oly,nSx,nSy)
391     _RL cosfacV(1-Oly:sNy+Oly,nSx,nSy)
392     _RL sqcosfacU(1-Oly:sNy+Oly,nSx,nSy)
393     _RL sqcosfacV(1-Oly:sNy+Oly,nSx,nSy)
394     _RL gravitySign
395     _RL rkFac
396     _RL recip_rkFac
397 cnh 1.5 _RS dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
398     _RS dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
399     _RS dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
400     _RS dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
401     _RS dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
402     _RS dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
403     _RS dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
404     _RS dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
405 adcroft 1.15 _RS R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
406     _RS Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
407 cnh 1.6 _RS HFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
408     _RS HFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
409     _RS HFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
410 cnh 1.5 _RS recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
411     _RS recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
412     _RS recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
413     _RS recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
414     _RS recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
415     _RS recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
416     _RS recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
417     _RS recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
418 adcroft 1.15 _RS recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
419 cnh 1.6 _RS recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
420     _RS recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
421     _RS recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
422 cnh 1.5 _RS xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
423 adcroft 1.13 _RS xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
424 cnh 1.5 _RS yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
425 adcroft 1.13 _RS yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
426 cnh 1.5 _RS rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
427 adcroft 1.11 _RS rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
428     _RS rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
429 adcroft 1.13 _RS rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
430     _RS recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
431     _RS recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
432     _RS recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
433     _RS recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
434 jmc 1.18 _RS maskH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
435 adcroft 1.15 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
436 cnh 1.6 _RS maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
437     _RS maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
438 cnh 1.5 _RS tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
439     _RS tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
440 adcroft 1.15 _RS drC (1:Nr)
441     _RS drF (1:Nr)
442     _RS recip_drC (1:Nr)
443     _RS recip_drF (1:Nr)
444     _RS saFac (1:Nr)
445     _RS rC (1:Nr)
446     _RS rF (1:Nr+1)
447     _RS xC0
448     _RS yC0
449 jmc 1.27 _RS fCori(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
450     _RS fCoriG(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
451     _RS fCoriCos(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
452    
453 adcroft 1.12
454     #ifdef ALLOW_NONHYDROSTATIC
455     COMMON /GRID_NH/
456     & recip_hFacU
457     _RS recip_hFacU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
458     #endif

  ViewVC Help
Powered by ViewVC 1.1.22