/[MITgcm]/manual/s_algorithm/text/spatial-discrete.tex
ViewVC logotype

Contents of /manual/s_algorithm/text/spatial-discrete.tex

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


Revision 1.18 - (show annotations) (download) (as text)
Sun Oct 17 04:14:21 2004 UTC (20 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57l_post
Changes since 1.17: +2 -2 lines
File MIME type: application/x-tex
fix details left from previous modifications.

1 % $Header: /u/gcmpack/manual/part2/spatial-discrete.tex,v 1.17 2004/10/16 03:40:12 edhill Exp $
2 % $Name: $
3
4 \section{Spatial discretization of the dynamical equations}
5 \begin{rawhtml}
6 <!-- CMIREDIR:spatial_discretization_of_dyn_eq: -->
7 \end{rawhtml}
8
9 Spatial discretization is carried out using the finite volume
10 method. This amounts to a grid-point method (namely second-order
11 centered finite difference) in the fluid interior but allows
12 boundaries to intersect a regular grid allowing a more accurate
13 representation of the position of the boundary. We treat the
14 horizontal and vertical directions as separable and differently.
15
16 \input{part2/notation}
17
18
19 \subsection{The finite volume method: finite volumes versus finite difference}
20 \begin{rawhtml}
21 <!-- CMIREDIR:finite_volume: -->
22 \end{rawhtml}
23
24
25
26 The finite volume method is used to discretize the equations in
27 space. The expression ``finite volume'' actually has two meanings; one
28 is the method of embedded or intersecting boundaries (shaved or lopped
29 cells in our terminology) and the other is non-linear interpolation
30 methods that can deal with non-smooth solutions such as shocks
31 (i.e. flux limiters for advection). Both make use of the integral form
32 of the conservation laws to which the {\it weak solution} is a
33 solution on each finite volume of (sub-domain). The weak solution can
34 be constructed out of piece-wise constant elements or be
35 differentiable. The differentiable equations can not be satisfied by
36 piece-wise constant functions.
37
38 As an example, the 1-D constant coefficient advection-diffusion
39 equation:
40 \begin{displaymath}
41 \partial_t \theta + \partial_x ( u \theta - \kappa \partial_x \theta ) = 0
42 \end{displaymath}
43 can be discretized by integrating over finite sub-domains, i.e.
44 the lengths $\Delta x_i$:
45 \begin{displaymath}
46 \Delta x \partial_t \theta + \delta_i ( F ) = 0
47 \end{displaymath}
48 is exact if $\theta(x)$ is piece-wise constant over the interval
49 $\Delta x_i$ or more generally if $\theta_i$ is defined as the average
50 over the interval $\Delta x_i$.
51
52 The flux, $F_{i-1/2}$, must be approximated:
53 \begin{displaymath}
54 F = u \overline{\theta} - \frac{\kappa}{\Delta x_c} \partial_i \theta
55 \end{displaymath}
56 and this is where truncation errors can enter the solution. The
57 method for obtaining $\overline{\theta}$ is unspecified and a wide
58 range of possibilities exist including centered and upwind
59 interpolation, polynomial fits based on the the volume average
60 definitions of quantities and non-linear interpolation such as
61 flux-limiters.
62
63 Choosing simple centered second-order interpolation and differencing
64 recovers the same ODE's resulting from finite differencing for the
65 interior of a fluid. Differences arise at boundaries where a boundary
66 is not positioned on a regular or smoothly varying grid. This method
67 is used to represent the topography using lopped cell, see
68 \cite{adcroft:97}. Subtle difference also appear in more than one
69 dimension away from boundaries. This happens because the each
70 direction is discretized independently in the finite difference method
71 while the integrating over finite volume implicitly treats all
72 directions simultaneously. Illustration of this is given in
73 \cite{ac:02}.
74
75 \subsection{C grid staggering of variables}
76
77 \begin{figure}
78 \begin{center}
79 \resizebox{!}{2in}{ \includegraphics{part2/cgrid3d.eps}}
80 \end{center}
81 \caption{Three dimensional staggering of velocity components. This
82 facilitates the natural discretization of the continuity and tracer
83 equations. }
84 \label{fig:cgrid3d}
85 \end{figure}
86
87 The basic algorithm employed for stepping forward the momentum
88 equations is based on retaining non-divergence of the flow at all
89 times. This is most naturally done if the components of flow are
90 staggered in space in the form of an Arakawa C grid \cite{arakawa:77}.
91
92 Fig. \ref{fig:cgrid3d} shows the components of flow ($u$,$v$,$w$)
93 staggered in space such that the zonal component falls on the
94 interface between continuity cells in the zonal direction. Similarly
95 for the meridional and vertical directions. The continuity cell is
96 synonymous with tracer cells (they are one and the same).
97
98
99
100 \subsection{Grid initialization and data}
101
102 Initialization of grid data is controlled by subroutine {\em
103 INI\_GRID} which in calls {\em INI\_VERTICAL\_GRID} to initialize the
104 vertical grid, and then either of {\em INI\_CARTESIAN\_GRID}, {\em
105 INI\_SPHERICAL\_POLAR\_GRID} or {\em INI\_CURV\-ILINEAR\_GRID} to
106 initialize the horizontal grid for cartesian, spherical-polar or
107 curvilinear coordinates respectively.
108
109 The reciprocals of all grid quantities are pre-calculated and this is
110 done in subroutine {\em INI\_MASKS\_ETC} which is called later by
111 subroutine {\em INITIALIZE\_FIXED}.
112
113 All grid descriptors are global arrays and stored in common blocks in
114 {\em GRID.h} and a generally declared as {\em \_RS}.
115
116 \fbox{ \begin{minipage}{4.75in}
117 {\em S/R INI\_GRID} ({\em model/src/ini\_grid.F})
118
119 {\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F})
120
121 grid data: ({\em model/inc/GRID.h})
122 \end{minipage} }
123
124
125 \subsection{Horizontal grid}
126 \label{sec:spatial_discrete_horizontal_grid}
127
128 \begin{figure}
129 \begin{center}
130 \begin{tabular}{cc}
131 \raisebox{1.5in}{a)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Ac.eps}}
132 & \raisebox{1.5in}{b)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Az.eps}}
133 \\
134 \raisebox{1.5in}{c)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Au.eps}}
135 & \raisebox{1.5in}{d)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Av.eps}}
136 \end{tabular}
137 \end{center}
138 \caption{
139 Staggering of horizontal grid descriptors (lengths and areas). The
140 grid lines indicate the tracer cell boundaries and are the reference
141 grid for all panels. a) The area of a tracer cell, $A_c$, is bordered
142 by the lengths $\Delta x_g$ and $\Delta y_g$. b) The area of a
143 vorticity cell, $A_\zeta$, is bordered by the lengths $\Delta x_c$ and
144 $\Delta y_c$. c) The area of a u cell, $A_c$, is bordered by the
145 lengths $\Delta x_v$ and $\Delta y_f$. d) The area of a v cell, $A_c$,
146 is bordered by the lengths $\Delta x_f$ and $\Delta y_u$.}
147 \label{fig:hgrid}
148 \end{figure}
149
150 The model domain is decomposed into tiles and within each tile a
151 quasi-regular grid is used. A tile is the basic unit of domain
152 decomposition for parallelization but may be used whether parallelized
153 or not; see section \ref{sect:tiles} for more details. Although the
154 tiles may be patched together in an unstructured manner
155 (i.e. irregular or non-tessilating pattern), the interior of tiles is
156 a structured grid of quadrilateral cells. The horizontal coordinate
157 system is orthogonal curvilinear meaning we can not necessarily treat
158 the two horizontal directions as separable. Instead, each cell in the
159 horizontal grid is described by the length of it's sides and it's
160 area.
161
162 The grid information is quite general and describes any of the
163 available coordinates systems, cartesian, spherical-polar or
164 curvilinear. All that is necessary to distinguish between the
165 coordinate systems is to initialize the grid data (descriptors)
166 appropriately.
167
168 In the following, we refer to the orientation of quantities on the
169 computational grid using geographic terminology such as points of the
170 compass.
171 \marginpar{Caution!}
172 This is purely for convenience but should note be confused
173 with the actual geographic orientation of model quantities.
174
175 Fig.~\ref{fig:hgrid}a shows the tracer cell (synonymous with the
176 continuity cell). The length of the southern edge, $\Delta x_g$,
177 western edge, $\Delta y_g$ and surface area, $A_c$, presented in the
178 vertical are stored in arrays {\bf DXg}, {\bf DYg} and {\bf rAc}.
179 \marginpar{$A_c$: {\bf rAc}}
180 \marginpar{$\Delta x_g$: {\bf DXg}}
181 \marginpar{$\Delta y_g$: {\bf DYg}}
182 The ``g'' suffix indicates that the lengths are along the defining
183 grid boundaries. The ``c'' suffix associates the quantity with the
184 cell centers. The quantities are staggered in space and the indexing
185 is such that {\bf DXg(i,j)} is positioned to the south of {\bf
186 rAc(i,j)} and {\bf DYg(i,j)} positioned to the west.
187
188 Fig.~\ref{fig:hgrid}b shows the vorticity cell. The length of the
189 southern edge, $\Delta x_c$, western edge, $\Delta y_c$ and surface
190 area, $A_\zeta$, presented in the vertical are stored in arrays {\bf
191 DXg}, {\bf DYg} and {\bf rAz}.
192 \marginpar{$A_\zeta$: {\bf rAz}}
193 \marginpar{$\Delta x_c$: {\bf DXc}}
194 \marginpar{$\Delta y_c$: {\bf DYc}}
195 The ``z'' suffix indicates that the lengths are measured between the
196 cell centers and the ``$\zeta$'' suffix associates points with the
197 vorticity points. The quantities are staggered in space and the
198 indexing is such that {\bf DXc(i,j)} is positioned to the north of
199 {\bf rAc(i,j)} and {\bf DYc(i,j)} positioned to the east.
200
201 Fig.~\ref{fig:hgrid}c shows the ``u'' or western (w) cell. The length of
202 the southern edge, $\Delta x_v$, eastern edge, $\Delta y_f$ and
203 surface area, $A_w$, presented in the vertical are stored in arrays
204 {\bf DXv}, {\bf DYf} and {\bf rAw}.
205 \marginpar{$A_w$: {\bf rAw}}
206 \marginpar{$\Delta x_v$: {\bf DXv}}
207 \marginpar{$\Delta y_f$: {\bf DYf}}
208 The ``v'' suffix indicates that the length is measured between the
209 v-points, the ``f'' suffix indicates that the length is measured
210 between the (tracer) cell faces and the ``w'' suffix associates points
211 with the u-points (w stands for west). The quantities are staggered in
212 space and the indexing is such that {\bf DXv(i,j)} is positioned to
213 the south of {\bf rAw(i,j)} and {\bf DYf(i,j)} positioned to the east.
214
215 Fig.~\ref{fig:hgrid}d shows the ``v'' or southern (s) cell. The length of
216 the northern edge, $\Delta x_f$, western edge, $\Delta y_u$ and
217 surface area, $A_s$, presented in the vertical are stored in arrays
218 {\bf DXf}, {\bf DYu} and {\bf rAs}.
219 \marginpar{$A_s$: {\bf rAs}}
220 \marginpar{$\Delta x_f$: {\bf DXf}}
221 \marginpar{$\Delta y_u$: {\bf DYu}}
222 The ``u'' suffix indicates that the length is measured between the
223 u-points, the ``f'' suffix indicates that the length is measured
224 between the (tracer) cell faces and the ``s'' suffix associates points
225 with the v-points (s stands for south). The quantities are staggered
226 in space and the indexing is such that {\bf DXf(i,j)} is positioned to
227 the north of {\bf rAs(i,j)} and {\bf DYu(i,j)} positioned to the west.
228
229 \fbox{ \begin{minipage}{4.75in}
230 {\em S/R INI\_CARTESIAN\_GRID} ({\em
231 model/src/ini\_cartesian\_grid.F})
232
233 {\em S/R INI\_SPHERICAL\_POLAR\_GRID} ({\em
234 model/src/ini\_spherical\_polar\_grid.F})
235
236 {\em S/R INI\_CURVILINEAR\_GRID} ({\em
237 model/src/ini\_curvilinear\_grid.F})
238
239 $A_c$, $A_\zeta$, $A_w$, $A_s$: {\bf rAc}, {\bf rAz}, {\bf rAw}, {\bf rAs}
240 ({\em GRID.h})
241
242 $\Delta x_g$, $\Delta y_g$: {\bf DXg}, {\bf DYg} ({\em GRID.h})
243
244 $\Delta x_c$, $\Delta y_c$: {\bf DXc}, {\bf DYc} ({\em GRID.h})
245
246 $\Delta x_f$, $\Delta y_f$: {\bf DXf}, {\bf DYf} ({\em GRID.h})
247
248 $\Delta x_v$, $\Delta y_u$: {\bf DXv}, {\bf DYu} ({\em GRID.h})
249
250 \end{minipage} }
251
252 \subsubsection{Reciprocals of horizontal grid descriptors}
253
254 %\marginpar{$A_c^{-1}$: {\bf RECIP\_rAc}}
255 %\marginpar{$A_\zeta^{-1}$: {\bf RECIP\_rAz}}
256 %\marginpar{$A_w^{-1}$: {\bf RECIP\_rAw}}
257 %\marginpar{$A_s^{-1}$: {\bf RECIP\_rAs}}
258 Lengths and areas appear in the denominator of expressions as much as
259 in the numerator. For efficiency and portability, we pre-calculate the
260 reciprocal of the horizontal grid quantities so that in-line divisions
261 can be avoided.
262
263 %\marginpar{$\Delta x_g^{-1}$: {\bf RECIP\_DXg}}
264 %\marginpar{$\Delta y_g^{-1}$: {\bf RECIP\_DYg}}
265 %\marginpar{$\Delta x_c^{-1}$: {\bf RECIP\_DXc}}
266 %\marginpar{$\Delta y_c^{-1}$: {\bf RECIP\_DYc}}
267 %\marginpar{$\Delta x_f^{-1}$: {\bf RECIP\_DXf}}
268 %\marginpar{$\Delta y_f^{-1}$: {\bf RECIP\_DYf}}
269 %\marginpar{$\Delta x_v^{-1}$: {\bf RECIP\_DXv}}
270 %\marginpar{$\Delta y_u^{-1}$: {\bf RECIP\_DYu}}
271 For each grid descriptor (array) there is a reciprocal named using the
272 prefix {\bf RECIP\_}. This doubles the amount of storage in {\em
273 GRID.h} but they are all only 2-D descriptors.
274
275 \fbox{ \begin{minipage}{4.75in}
276 {\em S/R INI\_MASKS\_ETC} ({\em
277 model/src/ini\_masks\_etc.F})
278
279 $A_c^{-1}$: {\bf RECIP\_Ac} ({\em GRID.h})
280
281 $A_\zeta^{-1}$: {\bf RECIP\_Az} ({\em GRID.h})
282
283 $A_w^{-1}$: {\bf RECIP\_Aw} ({\em GRID.h})
284
285 $A_s^{-1}$: {\bf RECIP\_As} ({\em GRID.h})
286
287 $\Delta x_g^{-1}$, $\Delta y_g^{-1}$: {\bf RECIP\_DXg}, {\bf RECIP\_DYg} ({\em GRID.h})
288
289 $\Delta x_c^{-1}$, $\Delta y_c^{-1}$: {\bf RECIP\_DXc}, {\bf RECIP\_DYc} ({\em GRID.h})
290
291 $\Delta x_f^{-1}$, $\Delta y_f^{-1}$: {\bf RECIP\_DXf}, {\bf RECIP\_DYf} ({\em GRID.h})
292
293 $\Delta x_v^{-1}$, $\Delta y_u^{-1}$: {\bf RECIP\_DXv}, {\bf RECIP\_DYu} ({\em GRID.h})
294
295 \end{minipage} }
296
297 \subsubsection{Cartesian coordinates}
298
299 Cartesian coordinates are selected when the logical flag {\bf
300 using\-Cartes\-ianGrid} in namelist {\em PARM04} is set to true. The grid
301 spacing can be set to uniform via scalars {\bf dXspacing} and {\bf
302 dYspacing} in namelist {\em PARM04} or to variable resolution by the
303 vectors {\bf DELX} and {\bf DELY}. Units are normally
304 meters. Non-dimensional coordinates can be used by interpreting the
305 gravitational constant as the Rayleigh number.
306
307 \subsubsection{Spherical-polar coordinates}
308
309 Spherical coordinates are selected when the logical flag {\bf
310 using\-Spherical\-PolarGrid} in namelist {\em PARM04} is set to true. The
311 grid spacing can be set to uniform via scalars {\bf dXspacing} and
312 {\bf dYspacing} in namelist {\em PARM04} or to variable resolution by
313 the vectors {\bf DELX} and {\bf DELY}. Units of these namelist
314 variables are alway degrees. The horizontal grid descriptors are
315 calculated from these namelist variables have units of meters.
316
317 \subsubsection{Curvilinear coordinates}
318
319 Curvilinear coordinates are selected when the logical flag {\bf
320 using\-Curvil\-inear\-Grid} in namelist {\em PARM04} is set to true. The
321 grid spacing can not be set via the namelist. Instead, the grid
322 descriptors are read from data files, one for each descriptor. As for
323 other grids, the horizontal grid descriptors have units of meters.
324
325
326 \subsection{Vertical grid}
327
328 \begin{figure}
329 \begin{center}
330 \begin{tabular}{cc}
331 \raisebox{4in}{a)} \resizebox{!}{4in}{
332 \includegraphics{part2/vgrid-cellcentered.eps}} & \raisebox{4in}{b)}
333 \resizebox{!}{4in}{ \includegraphics{part2/vgrid-accurate.eps}}
334 \end{tabular}
335 \end{center}
336 \caption{Two versions of the vertical grid. a) The cell centered
337 approach where the interface depths are specified and the tracer
338 points centered in between the interfaces. b) The interface centered
339 approach where tracer levels are specified and the w-interfaces are
340 centered in between.}
341 \label{fig:vgrid}
342 \end{figure}
343
344 As for the horizontal grid, we use the suffixes ``c'' and ``f'' to
345 indicates faces and centers. Fig.~\ref{fig:vgrid}a shows the default
346 vertical grid used by the model.
347 \marginpar{$\Delta r_f$: {\bf DRf}}
348 \marginpar{$\Delta r_c$: {\bf DRc}}
349 $\Delta r_f$ is the difference in $r$
350 (vertical coordinate) between the faces (i.e. $\Delta r_f \equiv -
351 \delta_k r$ where the minus sign appears due to the convention that the
352 surface layer has index $k=1$.).
353
354 The vertical grid is calculated in subroutine {\em
355 INI\_VERTICAL\_GRID} and specified via the vector {\bf DELR} in
356 namelist {\em PARM04}. The units of ``r'' are either meters or Pascals
357 depending on the isomorphism being used which in turn is dependent
358 only on the choice of equation of state.
359
360 There are alternative namelist vectors {\bf DELZ} and {\bf DELP} which
361 dictate whether z- or
362 \marginpar{Caution!}
363 p- coordinates are to be used but we intend to
364 phase this out since they are redundant.
365
366 The reciprocals $\Delta r_f^{-1}$ and $\Delta r_c^{-1}$ are
367 pre-calculated (also in subroutine {\em INI\_VERTICAL\_GRID}). All
368 vertical grid descriptors are stored in common blocks in {\em GRID.h}.
369
370 The above grid (Fig.~\ref{fig:vgrid}a) is known as the cell centered
371 approach because the tracer points are at cell centers; the cell
372 centers are mid-way between the cell interfaces.
373 This discretization is selected when the thickness of the
374 levels are provided ({\bf delR}, parameter file {\em data},
375 namelist {\em PARM04})
376 An alternative, the vertex or interface centered approach, is shown in
377 Fig.~\ref{fig:vgrid}b. Here, the interior interfaces are positioned
378 mid-way between the tracer nodes (no longer cell centers). This
379 approach is formally more accurate for evaluation of hydrostatic
380 pressure and vertical advection but historically the cell centered
381 approach has been used. An alternative form of subroutine {\em
382 INI\_VERTICAL\_GRID} is used to select the interface centered approach
383 This form requires to specify $Nr+1$ vertical distances {\bf delRc}
384 (parameter file {\em data}, namelist {\em PARM04}, e.g.
385 {\em verification/ideal\_2D\_oce/input/data})
386 corresponding to surface to center, $Nr-1$ center to center, and center to
387 bottom distances.
388 %but no run time option is currently available.
389
390 \fbox{ \begin{minipage}{4.75in}
391 {\em S/R INI\_VERTICAL\_GRID} ({\em
392 model/src/ini\_vertical\_grid.F})
393
394 $\Delta r_f$: {\bf DRf} ({\em GRID.h})
395
396 $\Delta r_c$: {\bf DRc} ({\em GRID.h})
397
398 $\Delta r_f^{-1}$: {\bf RECIP\_DRf} ({\em GRID.h})
399
400 $\Delta r_c^{-1}$: {\bf RECIP\_DRc} ({\em GRID.h})
401
402 \end{minipage} }
403
404
405 \subsection{Topography: partially filled cells}
406 \begin{rawhtml}
407 <!-- CMIREDIR:topo_partial_cells: -->
408 \end{rawhtml}
409
410 \begin{figure}
411 \begin{center}
412 \resizebox{4.5in}{!}{\includegraphics{part2/vgrid-xz.eps}}
413 \end{center}
414 \caption{
415 A schematic of the x-r plane showing the location of the
416 non-dimensional fractions $h_c$ and $h_w$. The physical thickness of a
417 tracer cell is given by $h_c(i,j,k) \Delta r_f(k)$ and the physical
418 thickness of the open side is given by $h_w(i,j,k) \Delta r_f(k)$.}
419 \label{fig:hfacs}
420 \end{figure}
421
422 \cite{adcroft:97} presented two alternatives to the step-wise finite
423 difference representation of topography. The method is known to the
424 engineering community as {\em intersecting boundary method}. It
425 involves allowing the boundary to intersect a grid of cells thereby
426 modifying the shape of those cells intersected. We suggested allowing
427 the topography to take on a piece-wise linear representation (shaved
428 cells) or a simpler piecewise constant representation (partial step).
429 Both show dramatic improvements in solution compared to the
430 traditional full step representation, the piece-wise linear being the
431 best. However, the storage requirements are excessive so the simpler
432 piece-wise constant or partial-step method is all that is currently
433 supported.
434
435 Fig.~\ref{fig:hfacs} shows a schematic of the x-r plane indicating how
436 the thickness of a level is determined at tracer and u points.
437 \marginpar{$h_c$: {\bf hFacC}}
438 \marginpar{$h_w$: {\bf hFacW}}
439 \marginpar{$h_s$: {\bf hFacS}}
440 The physical thickness of a tracer cell is given by $h_c(i,j,k) \Delta
441 r_f(k)$ and the physical thickness of the open side is given by
442 $h_w(i,j,k) \Delta r_f(k)$. Three 3-D descriptors $h_c$, $h_w$ and
443 $h_s$ are used to describe the geometry: {\bf hFacC}, {\bf hFacW} and
444 {\bf hFacS} respectively. These are calculated in subroutine {\em
445 INI\_MASKS\_ETC} along with there reciprocals {\bf RECIP\_hFacC}, {\bf
446 RECIP\_hFacW} and {\bf RECIP\_hFacS}.
447
448 The non-dimensional fractions (or h-facs as we call them) are
449 calculated from the model depth array and then processed to avoid tiny
450 volumes. The rule is that if a fraction is less than {\bf hFacMin}
451 then it is rounded to the nearer of $0$ or {\bf hFacMin} or if the
452 physical thickness is less than {\bf hFacMinDr} then it is similarly
453 rounded. The larger of the two methods is used when there is a
454 conflict. By setting {\bf hFacMinDr} equal to or larger than the
455 thinnest nominal layers, $\min{(\Delta z_f)}$, but setting {\bf
456 hFacMin} to some small fraction then the model will only lop thick
457 layers but retain stability based on the thinnest unlopped thickness;
458 $\min{(\Delta z_f,\mbox{\bf hFacMinDr})}$.
459
460 \fbox{ \begin{minipage}{4.75in}
461 {\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F})
462
463 $h_c$: {\bf hFacC} ({\em GRID.h})
464
465 $h_w$: {\bf hFacW} ({\em GRID.h})
466
467 $h_s$: {\bf hFacS} ({\em GRID.h})
468
469 $h_c^{-1}$: {\bf RECIP\_hFacC} ({\em GRID.h})
470
471 $h_w^{-1}$: {\bf RECIP\_hFacW} ({\em GRID.h})
472
473 $h_s^{-1}$: {\bf RECIP\_hFacS} ({\em GRID.h})
474
475 \end{minipage} }
476
477
478 \section{Continuity and horizontal pressure gradient terms}
479 \begin{rawhtml}
480 <!-- CMIREDIR:continuity_and_horizontal_pressure: -->
481 \end{rawhtml}
482
483
484 The core algorithm is based on the ``C grid'' discretization of the
485 continuity equation which can be summarized as:
486 \begin{eqnarray}
487 \partial_t u + \frac{1}{\Delta x_c} \delta_i \left. \frac{ \partial \Phi}{\partial r}\right|_{s} \eta + \frac{\epsilon_{nh}}{\Delta x_c} \delta_i \Phi_{nh}' & = & G_u - \frac{1}{\Delta x_c} \delta_i \Phi_h' \label{eq:discrete-momu} \\
488 \partial_t v + \frac{1}{\Delta y_c} \delta_j \left. \frac{ \partial \Phi}{\partial r}\right|_{s} \eta + \frac{\epsilon_{nh}}{\Delta y_c} \delta_j \Phi_{nh}' & = & G_v - \frac{1}{\Delta y_c} \delta_j \Phi_h' \label{eq:discrete-momv} \\
489 \epsilon_{nh} \left( \partial_t w + \frac{1}{\Delta r_c} \delta_k \Phi_{nh}' \right) & = & \epsilon_{nh} G_w + \overline{b}^k - \frac{1}{\Delta r_c} \delta_k \Phi_{h}' \label{eq:discrete-momw} \\
490 \delta_i \Delta y_g \Delta r_f h_w u +
491 \delta_j \Delta x_g \Delta r_f h_s v +
492 \delta_k {\cal A}_c w & = & {\cal A}_c \delta_k (P-E)_{r=0}
493 \label{eq:discrete-continuity}
494 \end{eqnarray}
495 where the continuity equation has been most naturally discretized by
496 staggering the three components of velocity as shown in
497 Fig.~\ref{fig:cgrid3d}. The grid lengths $\Delta x_c$ and $\Delta y_c$
498 are the lengths between tracer points (cell centers). The grid lengths
499 $\Delta x_g$, $\Delta y_g$ are the grid lengths between cell
500 corners. $\Delta r_f$ and $\Delta r_c$ are the distance (in units of
501 $r$) between level interfaces (w-level) and level centers (tracer
502 level). The surface area presented in the vertical is denoted ${\cal
503 A}_c$. The factors $h_w$ and $h_s$ are non-dimensional fractions
504 (between 0 and 1) that represent the fraction cell depth that is
505 ``open'' for fluid flow.
506 \marginpar{$h_w$: {\bf hFacW}}
507 \marginpar{$h_s$: {\bf hFacS}}
508
509 The last equation, the discrete continuity equation, can be summed in
510 the vertical to yield the free-surface equation:
511 \begin{equation}
512 {\cal A}_c \partial_t \eta + \delta_i \sum_k \Delta y_g \Delta r_f h_w
513 u + \delta_j \sum_k \Delta x_g \Delta r_f h_s v = {\cal
514 A}_c(P-E)_{r=0} \label{eq:discrete-freesurface}
515 \end{equation}
516 The source term $P-E$ on the rhs of continuity accounts for the local
517 addition of volume due to excess precipitation and run-off over
518 evaporation and only enters the top-level of the {\em ocean} model.
519
520 \section{Hydrostatic balance}
521 \begin{rawhtml}
522 <!-- CMIREDIR:hydrostatic_balance: -->
523 \end{rawhtml}
524
525 The vertical momentum equation has the hydrostatic or
526 quasi-hydrostatic balance on the right hand side. This discretization
527 guarantees that the conversion of potential to kinetic energy as
528 derived from the buoyancy equation exactly matches the form derived
529 from the pressure gradient terms when forming the kinetic energy
530 equation.
531
532 In the ocean, using z-coordinates, the hydrostatic balance terms are
533 discretized:
534 \begin{equation}
535 \epsilon_{nh} \partial_t w
536 + g \overline{\rho'}^k + \frac{1}{\Delta z} \delta_k \Phi_h' = \ldots
537 \label{eq:discrete_hydro_ocean}
538 \end{equation}
539
540 In the atmosphere, using p-coordinates, hydrostatic balance is
541 discretized:
542 \begin{equation}
543 \overline{\theta'}^k + \frac{1}{\Delta \Pi} \delta_k \Phi_h' = 0
544 \label{eq:discrete_hydro_atmos}
545 \end{equation}
546 where $\Delta \Pi$ is the difference in Exner function between the
547 pressure points. The non-hydrostatic equations are not available in
548 the atmosphere.
549
550 The difference in approach between ocean and atmosphere occurs because
551 of the direct use of the ideal gas equation in forming the potential
552 energy conversion term $\alpha \omega$. The form of these conversion
553 terms is discussed at length in \cite{adcroft:02}.
554
555 Because of the different representation of hydrostatic balance between
556 ocean and atmosphere there is no elegant way to represent both systems
557 using an arbitrary coordinate.
558
559 The integration for hydrostatic pressure is made in the positive $r$
560 direction (increasing k-index). For the ocean, this is from the
561 free-surface down and for the atmosphere this is from the ground up.
562
563 The calculations are made in the subroutine {\em
564 CALC\_PHI\_HYD}. Inside this routine, one of other of the
565 atmospheric/oceanic form is selected based on the string variable {\bf
566 buoyancyRelation}.
567

  ViewVC Help
Powered by ViewVC 1.1.22