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

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

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

revision 1.1 by adcroft, Wed Aug 8 16:15:21 2001 UTC revision 1.3 by adcroft, Thu Aug 9 16:26:43 2001 UTC
# Line 3  Line 3 
3    
4  \section{Spatial discretization of the dynamical equations}  \section{Spatial discretization of the dynamical equations}
5    
6    Spatial discretization is carried out using the finite volume
7    method. This amounts to a grid-point method (namely second-order
8    centered finite difference) in the fluid interior but allows
9    boundaries to intersect a regular grid allowing a more accurate
10    representation of the position of the boundary. We treat the
11    horizontal and veritical directions as seperable and thus slightly
12    differently.
13    
14    Initialization of grid data is controlled by subroutine {\em
15    INI\_GRID} which in calls {\em INI\_VERTICAL\_GRID} to initialize the
16    vertical grid, and then either of {\em INI\_CARTESIAN\_GRID}, {\em
17    INI\_SPHERICAL\_POLAR\_GRID} or {\em INI\_CURV\-ILINEAR\_GRID} to
18    initialize the horizontal grid for cartesian, spherical-polar or
19    curvilinear coordinates respectively.
20    
21    The reciprocals of all grid quantities are pre-calculated and this is
22    done in subroutine {\em INI\_MASKS\_ETC} which is called later by
23    subroutine {\em INITIALIZE\_FIXED}.
24    
25    All grid descriptors are global arrays and stored in common blocks in
26    {\em GRID.h} and a generally declared as {\em \_RS}.
27    
28    \fbox{ \begin{minipage}{4.75in}
29    {\em S/R INI\_GRID} ({\em model/src/ini\_grid.F})
30    
31    {\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F})
32    
33    grid data: ({\em model/inc/GRID.h})
34    \end{minipage} }
35    
36    
37    \subsection{The finite volume method: finite volumes versus finite difference}
38    
39    The finite volume method is used to discretize the equations in
40    space. The expression ``finite volume'' actually has two meanings; one
41    is the method of cut or instecting boundaries (shaved or lopped cells
42    in our terminology) and the other is non-linear interpolation methods
43    that can deal with non-smooth solutions such as shocks (i.e. flux
44    limiters for advection). Both make use of the integral form of the
45    conservation laws to which the {\it weak solution} is a solution on
46    each finite volume of (sub-domain). The weak solution can be
47    constructed outof piece-wise constant elements or be
48    differentiable. The differentiable equations can not be satisfied by
49    piece-wise constant functions.
50    
51    As an example, the 1-D constant coefficient advection-diffusion
52    equation:
53    \begin{displaymath}
54    \partial_t \theta + \partial_x ( u \theta - \kappa \partial_x \theta ) = 0
55    \end{displaymath}
56    can be discretized by integrating over finite sub-domains, i.e.
57    the lengths $\Delta x_i$:
58    \begin{displaymath}
59    \Delta x \partial_t \theta + \delta_i ( F ) = 0
60    \end{displaymath}
61    is exact if $\theta(x)$ is peice-wise constant over the interval
62    $\Delta x_i$ or more generally if $\theta_i$ is defined as the average
63    over the interval $\Delta x_i$.
64    
65    The flux, $F_{i-1/2}$, must be approximated:
66    \begin{displaymath}
67    F = u \overline{\theta} - \frac{\kappa}{\Delta x_c} \partial_i \theta
68    \end{displaymath}
69    and this is where truncation errors can enter the solution. The
70    method for obtaining $\overline{\theta}$ is unspecified and a wide
71    range of possibilities exist including centered and upwind
72    interpolation, polynomial fits based on the the volume average
73    definitions of quantities and non-linear interpolation such as
74    flux-limiters.
75    
76    Choosing simple centered second-order interpolation and differencing
77    recovers the same ODE's resulting from finite differencing for the
78    interior of a fluid. Differences arise at boundaries where a boundary
79    is not positioned on a regular or smoothly varying grid. This method
80    is used to represent the topography using lopped cell, see
81    \cite{Adcroft98}. Subtle difference also appear in more than one
82    dimension away from boundaries. This happens because the each
83    direction is discretized independantly in the finite difference method
84    while the integrating over finite volume implicitly treats all
85    directions simultaneously. Illustration of this is given in
86    \cite{Adcroft02}.
87    
88  \subsection{C grid staggering of variables}  \subsection{C grid staggering of variables}
89    
90  \begin{figure}  \begin{figure}
91  \centerline{ \resizebox{!}{2in}{ \includegraphics{part2/cgrid3d.eps}} }  \centerline{ \resizebox{!}{2in}{ \includegraphics{part2/cgrid3d.eps}} }
 \label{fig-cgrid3d}  
92  \caption{Three dimensional staggering of velocity components. This  \caption{Three dimensional staggering of velocity components. This
93  facilitates the natural discretization of the continuity and tracer  facilitates the natural discretization of the continuity and tracer
94  equations. }  equations. }
95    \label{fig:cgrid3d}
96  \end{figure}  \end{figure}
97    
98    The basic algorithm employed for stepping forward the momentum
99    equations is based on retaining non-divergence of the flow at all
100    times. This is most naturally done if the components of flow are
101    staggered in space in the form of an Arakawa C grid \cite{Arakawa70}.
102    
103    Fig. \ref{fig:cgrid3d} shows the components of flow ($u$,$v$,$w$)
104    staggered in space such that the zonal component falls on the
105    interface between continiuty cells in the zonal direction. Similarly
106    for the meridional and vertical directions.  The continiuty cell is
107    synonymous with tracer cells (they are one and the same).
108    
109    
110    
111    
112  \subsection{Horizontal grid}  \subsection{Horizontal grid}
113    
114  \begin{figure}  \begin{figure}
115  \centerline{ \begin{tabular}{cc}  \centerline{ \begin{tabular}{cc}
116    \resizebox{!}{2in}{ \includegraphics{part2/hgrid-Ac.eps}}    \raisebox{1.5in}{a)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Ac.eps}}
117  & \resizebox{!}{2in}{ \includegraphics{part2/hgrid-Az.eps}}  & \raisebox{1.5in}{b)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Az.eps}}
118  \\  \\
119    \resizebox{!}{2in}{ \includegraphics{part2/hgrid-Au.eps}}    \raisebox{1.5in}{c)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Au.eps}}
120  & \resizebox{!}{2in}{ \includegraphics{part2/hgrid-Av.eps}}  & \raisebox{1.5in}{d)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Av.eps}}
121  \end{tabular} }  \end{tabular} }
122  \label{fig-hgrid}  \caption{
123  \caption{Three dimensional staggering of velocity components. This  Staggering of horizontal grid descriptors (lengths and areas). The
124  facilitates the natural discretization of the continuity and tracer  grid lines indicate the tracer cell boundaries and are the reference
125  equations. }  grid for all panels. a) The area of a tracer cell, $A_c$, is bordered
126    by the lengths $\Delta x_g$ and $\Delta y_g$. b) The area of a
127    vorticity cell, $A_\zeta$, is bordered by the lengths $\Delta x_c$ and
128    $\Delta y_c$. c) The area of a u cell, $A_c$, is bordered by the
129    lengths $\Delta x_v$ and $\Delta y_f$. d) The area of a v cell, $A_c$,
130    is bordered by the lengths $\Delta x_f$ and $\Delta y_u$.}
131    \label{fig:hgrid}
132  \end{figure}  \end{figure}
133    
134    The model domain is decomposed into tiles and within each tile a
135    quasi-regular grid is used. A tile is the basic unit of domain
136    decomposition for parallelization but may be used whether parallized
137    or not; see section \ref{sect:tiles} for more details. Although the
138    tiles may be patched together in an unstructured manner
139    (i.e. irregular or non-tessilating pattern), the interior of tiles is
140    a structered grid of quadrilateral cells. The horizontal coordinate
141    system is orthogonal curvilinear meaning we can not necessarily treat
142    the two horizontal directions as seperable. Instead, each cell in the
143    horizontal grid is described by the length of it's sides and it's
144    area.
145    
146    The grid information is quite general and describes any of the
147    available coordinates systems, cartesian, spherical-polar or
148    curvilinear. All that is necessary to distinguish between the
149    coordinate systems is to initialize the grid data (discriptors)
150    appropriately.
151    
152    In the following, we refer to the orientation of quantities on the
153    computational grid using geographic terminology such as points of the
154    compass.
155    \marginpar{Caution!}
156    This is purely for convenience but should note be confused
157    with the actual geographic orientation of model quantities.
158    
159    Fig.~\ref{fig:hgrid}a shows the tracer cell (synonymous with the
160    continuity cell). The length of the southern edge, $\Delta x_g$,
161    western edge, $\Delta y_g$ and surface area, $A_c$, presented in the
162    vertical are stored in arrays {\bf DXg}, {\bf DYg} and {\bf rAc}.
163    \marginpar{$A_c$: {\bf rAc}}
164    \marginpar{$\Delta x_g$: {\bf DXg}}
165    \marginpar{$\Delta y_g$: {\bf DYg}}
166    The ``g'' suffix indicates that the lengths are along the defining
167    grid boundaries. The ``c'' suffix associates the quantity with the
168    cell centers. The quantities are staggered in space and the indexing
169    is such that {\bf DXg(i,j)} is positioned to the south of {\bf
170    rAc(i,j)} and {\bf DYg(i,j)} positioned to the west.
171    
172    Fig.~\ref{fig:hgrid}b shows the vorticity cell. The length of the
173    southern edge, $\Delta x_c$, western edge, $\Delta y_c$ and surface
174    area, $A_\zeta$, presented in the vertical are stored in arrays {\bf
175    DXg}, {\bf DYg} and {\bf rAz}.
176    \marginpar{$A_\zeta$: {\bf rAz}}
177    \marginpar{$\Delta x_c$: {\bf DXc}}
178    \marginpar{$\Delta y_c$: {\bf DYc}}
179    The ``z'' suffix indicates that the lengths are measured between the
180    cell centers and the ``$\zeta$'' suffix associates points with the
181    vorticity points. The quantities are staggered in space and the
182    indexing is such that {\bf DXc(i,j)} is positioned to the north of
183    {\bf rAc(i,j)} and {\bf DYc(i,j)} positioned to the east.
184    
185    Fig.~\ref{fig:hgrid}c shows the ``u'' or western (w) cell. The length of
186    the southern edge, $\Delta x_v$, eastern edge, $\Delta y_f$ and
187    surface area, $A_w$, presented in the vertical are stored in arrays
188    {\bf DXv}, {\bf DYf} and {\bf rAw}.
189    \marginpar{$A_w$: {\bf rAw}}
190    \marginpar{$\Delta x_v$: {\bf DXv}}
191    \marginpar{$\Delta y_f$: {\bf DYf}}
192    The ``v'' suffix indicates that the length is measured between the
193    v-points, the ``f'' suffix indicates that the length is measured
194    between the (tracer) cell faces and the ``w'' suffix associates points
195    with the u-points (w stands for west). The quantities are staggered in
196    space and the indexing is such that {\bf DXv(i,j)} is positioned to
197    the south of {\bf rAw(i,j)} and {\bf DYf(i,j)} positioned to the east.
198    
199    Fig.~\ref{fig:hgrid}d shows the ``v'' or southern (s) cell. The length of
200    the northern edge, $\Delta x_f$, western edge, $\Delta y_u$ and
201    surface area, $A_s$, presented in the vertical are stored in arrays
202    {\bf DXf}, {\bf DYu} and {\bf rAs}.
203    \marginpar{$A_s$: {\bf rAs}}
204    \marginpar{$\Delta x_f$: {\bf DXf}}
205    \marginpar{$\Delta y_u$: {\bf DYu}}
206    The ``u'' suffix indicates that the length is measured between the
207    u-points, the ``f'' suffix indicates that the length is measured
208    between the (tracer) cell faces and the ``s'' suffix associates points
209    with the v-points (s stands for south). The quantities are staggered
210    in space and the indexing is such that {\bf DXf(i,j)} is positioned to
211    the north of {\bf rAs(i,j)} and {\bf DYu(i,j)} positioned to the west.
212    
213    \fbox{ \begin{minipage}{4.75in}
214    {\em S/R INI\_CARTESIAN\_GRID} ({\em
215    model/src/ini\_cartesian\_grid.F})
216    
217    {\em S/R INI\_SPHERICAL\_POLAR\_GRID} ({\em
218    model/src/ini\_spherical\_polar\_grid.F})
219    
220    {\em S/R INI\_CURVILINEAR\_GRID} ({\em
221    model/src/ini\_curvilinear\_grid.F})
222    
223    $A_c$, $A_\zeta$, $A_w$, $A_s$: {\bf rAc}, {\bf rAz}, {\bf rAw}, {\bf rAs}
224    ({\em GRID.h})
225    
226    $\Delta x_g$, $\Delta y_g$: {\bf DXg}, {\bf DYg} ({\em GRID.h})
227    
228    $\Delta x_c$, $\Delta y_c$: {\bf DXc}, {\bf DYc} ({\em GRID.h})
229    
230    $\Delta x_f$, $\Delta y_f$: {\bf DXf}, {\bf DYf} ({\em GRID.h})
231    
232    $\Delta x_v$, $\Delta y_u$: {\bf DXv}, {\bf DYu} ({\em GRID.h})
233    
234    \end{minipage} }
235    
236    \subsubsection{Reciprocals of horizontal grid descriptors}
237    
238    %\marginpar{$A_c^{-1}$: {\bf RECIP\_rAc}}
239    %\marginpar{$A_\zeta^{-1}$: {\bf RECIP\_rAz}}
240    %\marginpar{$A_w^{-1}$: {\bf RECIP\_rAw}}
241    %\marginpar{$A_s^{-1}$: {\bf RECIP\_rAs}}
242    Lengths and areas appear in the denominator of expressions as much as
243    in the numerator. For efficiency and portability, we pre-calculate the
244    reciprocal of the horizontal grid quantities so that in-line divisions
245    can be avoided.
246    
247    %\marginpar{$\Delta x_g^{-1}$: {\bf RECIP\_DXg}}
248    %\marginpar{$\Delta y_g^{-1}$: {\bf RECIP\_DYg}}
249    %\marginpar{$\Delta x_c^{-1}$: {\bf RECIP\_DXc}}
250    %\marginpar{$\Delta y_c^{-1}$: {\bf RECIP\_DYc}}
251    %\marginpar{$\Delta x_f^{-1}$: {\bf RECIP\_DXf}}
252    %\marginpar{$\Delta y_f^{-1}$: {\bf RECIP\_DYf}}
253    %\marginpar{$\Delta x_v^{-1}$: {\bf RECIP\_DXv}}
254    %\marginpar{$\Delta y_u^{-1}$: {\bf RECIP\_DYu}}
255    For each grid descriptor (array) there is a reciprocal named using the
256    prefix {\bf RECIP\_}. This doubles the amount of storage in {\em
257    GRID.h} but they are all only 2-D descriptors.
258    
259    \fbox{ \begin{minipage}{4.75in}
260    {\em S/R INI\_MASKS\_ETC} ({\em
261    model/src/ini\_masks\_etc.F})
262    
263    $A_c^{-1}$: {\bf RECIP\_Ac} ({\em GRID.h})
264    
265    $A_\zeta^{-1}$: {\bf RECIP\_Az} ({\em GRID.h})
266    
267    $A_w^{-1}$: {\bf RECIP\_Aw} ({\em GRID.h})
268    
269    $A_s^{-1}$: {\bf RECIP\_As} ({\em GRID.h})
270    
271    $\Delta x_g^{-1}$, $\Delta y_g^{-1}$: {\bf RECIP\_DXg}, {\bf RECIP\_DYg} ({\em GRID.h})
272    
273    $\Delta x_c^{-1}$, $\Delta y_c^{-1}$: {\bf RECIP\_DXc}, {\bf RECIP\_DYc} ({\em GRID.h})
274    
275    $\Delta x_f^{-1}$, $\Delta y_f^{-1}$: {\bf RECIP\_DXf}, {\bf RECIP\_DYf} ({\em GRID.h})
276    
277    $\Delta x_v^{-1}$, $\Delta y_u^{-1}$: {\bf RECIP\_DXv}, {\bf RECIP\_DYu} ({\em GRID.h})
278    
279    \end{minipage} }
280    
281    \subsubsection{Cartesian coordinates}
282    
283    Cartesian coordinates are selected when the logical flag {\bf
284    using\-Cartes\-ianGrid} in namelist {\em PARM04} is set to true. The grid
285    spacing can be set to uniform via scalars {\bf dXspacing} and {\bf
286    dYspacing} in namelist {\em PARM04} or to variable resolution by the
287    vectors {\bf DELX} and {\bf DELY}. Units are normally
288    meters. Non-dimensional coordinates can be used by interpretting the
289    gravitational constant as the Rayleigh number.
290    
291    \subsubsection{Spherical-polar coordinates}
292    
293    Spherical coordinates are selected when the logical flag {\bf
294    using\-Spherical\-PolarGrid} in namelist {\em PARM04} is set to true. The
295    grid spacing can be set to uniform via scalars {\bf dXspacing} and
296    {\bf dYspacing} in namelist {\em PARM04} or to variable resolution by
297    the vectors {\bf DELX} and {\bf DELY}. Units of these namelist
298    variables are alway degrees. The horizontal grid descriptors are
299    calculated from these namelist variables have units of meters.
300    
301    \subsubsection{Curvilinear coordinates}
302    
303    Curvilinear coordinates are selected when the logical flag {\bf
304    using\-Curvil\-inear\-Grid} in namelist {\em PARM04} is set to true. The
305    grid spacing can not be set via the namelist. Instead, the grid
306    descriptors are read from data files, one for each descriptor. As for
307    other grids, the horizontal grid descriptors have units of meters.
308    
309    
310  \subsection{Vertical grid}  \subsection{Vertical grid}
311    
312  \begin{figure}  \begin{figure}
313  \centerline{ \begin{tabular}{cc}  \centerline{ \begin{tabular}{cc}
314    \raisebox{4in}{a)}    \raisebox{4in}{a)} \resizebox{!}{4in}{
315    \resizebox{!}{4in}{ \includegraphics{part2/vgrid-cellcentered.eps}}    \includegraphics{part2/vgrid-cellcentered.eps}} & \raisebox{4in}{b)}
316  &    \resizebox{!}{4in}{ \includegraphics{part2/vgrid-accurate.eps}}
  \raisebox{4in}{b)}  
  \resizebox{!}{4in}{ \includegraphics{part2/vgrid-accurate.eps}}  
317  \end{tabular} }  \end{tabular} }
 \label{fig-vgrid}  
318  \caption{Two versions of the vertical grid. a) The cell centered  \caption{Two versions of the vertical grid. a) The cell centered
319  approach where the interface depths are specified and the tracer  approach where the interface depths are specified and the tracer
320  points centered in between the interfaces. b) The interface centered  points centered in between the interfaces. b) The interface centered
321  approach where tracer levels are specified and the w-interfaces are  approach where tracer levels are specified and the w-interfaces are
322  centered in between.}  centered in between.}
323    \label{fig:vgrid}
324    \end{figure}
325    
326    As for the horizontal grid, we use the suffixes ``c'' and ``f'' to
327    indicates faces and centers. Fig.~\ref{fig:vgrid}a shows the default
328    vertical grid used by the model.
329    \marginpar{$\Delta r_f$: {\bf DRf}}
330    \marginpar{$\Delta r_c$: {\bf DRc}}
331    $\Delta r_f$ is the difference in $r$
332    (vertical coordinate) between the faces (i.e. $\Delta r_f \equiv -
333    \delta_k r$ where the minus sign appears due to the convention that the
334    surface layer has index $k=1$.).
335    
336    The vertical grid is calculated in subroutine {\em
337    INI\_VERTICAL\_GRID} and specified via the vector {\bf DELR} in
338    namelist {\em PARM04}. The units of ``r'' are either meters or Pascals
339    depending on the isomorphism being used which in turn is dependent
340    only on the choise of equation of state.
341    
342    There are alternative namelist vectors {\bf DELZ} and {\bf DELP} which
343    dictate whether z- or
344    \marginpar{Caution!}
345    p- coordinates are to be used but we intend to
346    phase this out since they are redundant.
347    
348    The reciprocals $\Delta r_f^{-1}$ and $\Delta r_c^{-1}$ are
349    pre-calculated (also in subroutine {\em INI\_VERTICAL\_GRID}). All
350    vertical grid descriptors are stored in common blocks in {\em GRID.h}.
351    
352    The above grid (Fig.~\ref{fig:vgrid}a) is known as the cell centered
353    approach because the tracer points are at cell centers; the cell
354    centers are mid-way between the cell interfaces. An alternative, the
355    vertex or interface centered approach, is shown in
356    Fig.~\ref{fig:vgrid}b. Here, the interior interfaces are positioned
357    mid-way between the tracer nodes (no longer cell centers). This
358    approach is formally more accurate for evaluation of hydrostatic
359    pressure and vertical advection but historically the cell centered
360    approach has been used. An alternative form of subroutine {\em
361    INI\_VERTICAL\_GRID} is used to select the interface centered approach
362    but no run time option is currently available.
363    
364    \fbox{ \begin{minipage}{4.75in}
365    {\em S/R INI\_VERTICAL\_GRID} ({\em
366    model/src/ini\_vertical\_grid.F})
367    
368    $\Delta r_f$: {\bf DRf} ({\em GRID.h})
369    
370    $\Delta r_c$: {\bf DRc} ({\em GRID.h})
371    
372    $\Delta r_f^{-1}$: {\bf RECIP\_DRf} ({\em GRID.h})
373    
374    $\Delta r_c^{-1}$: {\bf RECIP\_DRc} ({\em GRID.h})
375    
376    \end{minipage} }
377    
378    
379    \subsection{Topography: partially filled cells}
380    
381    \begin{figure}
382    \centerline{
383    \resizebox{4.5in}{!}{\includegraphics{part2/vgrid-xz.eps}}
384    }
385    \caption{
386    A schematic of the x-r plane showing the location of the
387    non-dimensional fractions $h_c$ and $h_w$. The physical thickness of a
388    tracer cell is given by $h_c(i,j,k) \Delta r_f(k)$ and the physical
389    thickness of the open side is given by $h_w(i,j,k) \Delta r_f(k)$.}
390    \label{fig:hfacs}
391  \end{figure}  \end{figure}
392    
393    \cite{Adcroft97} presented two alternatives to the step-wise finite
394    difference representation of topography. The method is known to the
395    engineering community as {\em intersecting boundary method}. It
396    involves allowing the boundary to intersect a grid of cells thereby
397    modifying the shape of those cells intersected. We suggested allowing
398    the topgoraphy to take on a peice-wise linear representation (shaved
399    cells) or a simpler piecewise constant representaion (partial step).
400    Both show dramatic improvements in solution compared to the
401    traditional full step representation, the piece-wise linear being the
402    best. However, the storage requirements are excessive so the simpler
403    piece-wise constant or partial-step method is all that is currently
404    supported.
405    
406    Fig.~\ref{fig:hfacs} shows a schematic of the x-r plane indicating how
407    the thickness of a level is determined at tracer and u points.
408    \marginpar{$h_c$: {\bf hFacC}}
409    \marginpar{$h_w$: {\bf hFacW}}
410    \marginpar{$h_s$: {\bf hFacS}}
411    The physical thickness of a tracer cell is given by $h_c(i,j,k) \Delta
412    r_f(k)$ and the physical thickness of the open side is given by
413    $h_w(i,j,k) \Delta r_f(k)$. Three 3-D discriptors $h_c$, $h_w$ and
414    $h_s$ are used to describe the geometry: {\bf hFacC}, {\bf hFacW} and
415    {\bf hFacS} respectively. These are calculated in subroutine {\em
416    INI\_MASKS\_ETC} along with there reciprocals {\bf RECIP\_hFacC}, {\bf
417    RECIP\_hFacW} and {\bf RECIP\_hFacS}.
418    
419    The non-dimensional fractions (or h-facs as we call them) are
420    calculated from the model depth array and then processed to avoid tiny
421    volumes. The rule is that if a fraction is less than {\bf hFacMin}
422    then it is rounded to the nearer of $0$ or {\bf hFacMin} or if the
423    physical thickness is less than {\bf hFacMinDr} then it is similarly
424    rounded. The larger of the two methods is used when there is a
425    conflict. By setting {\bf hFacMinDr} equal to or larger than the
426    thinnest nominal layers, $\min{(\Delta z_f)}$, but setting {\bf
427    hFacMin} to some small fraction then the model will only lop thick
428    layers but retain stability based on the thinnest unlopped thickness;
429    $\min{(\Delta z_f,\mbox{\bf hFacMinDr})}$.
430    
431    \fbox{ \begin{minipage}{4.75in}
432    {\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F})
433    
434    $h_c$: {\bf hFacC} ({\em GRID.h})
435    
436    $h_w$: {\bf hFacW} ({\em GRID.h})
437    
438    $h_s$: {\bf hFacS} ({\em GRID.h})
439    
440    $h_c^{-1}$: {\bf RECIP\_hFacC} ({\em GRID.h})
441    
442    $h_w^{-1}$: {\bf RECIP\_hFacW} ({\em GRID.h})
443    
444    $h_s^{-1}$: {\bf RECIP\_hFacS} ({\em GRID.h})
445    
446    \end{minipage} }
447    
448    
449  \subsection{Continuity and horizontal pressure gradient terms}  \subsection{Continuity and horizontal pressure gradient terms}
450    
# Line 59  continuity equation which can be summari Line 457  continuity equation which can be summari
457  \delta_i \Delta y_g \Delta r_f h_w u +  \delta_i \Delta y_g \Delta r_f h_w u +
458  \delta_j \Delta x_g \Delta r_f h_s v +  \delta_j \Delta x_g \Delta r_f h_s v +
459  \delta_k {\cal A}_c w & = & {\cal A}_c \delta_k (P-E)_{r=0}  \delta_k {\cal A}_c w & = & {\cal A}_c \delta_k (P-E)_{r=0}
460    \label{eq:discrete-continuity}
461  \end{eqnarray}  \end{eqnarray}
462  where the continuity equation has been most naturally discretized by  where the continuity equation has been most naturally discretized by
463  staggering the three components of velocity as shown in  staggering the three components of velocity as shown in
# Line 154  These terms are calculated in routines c Line 553  These terms are calculated in routines c
553  CALC\_MOM\_RHS} a collected into the global arrays {\bf Gu}, {\bf Gv},  CALC\_MOM\_RHS} a collected into the global arrays {\bf Gu}, {\bf Gv},
554  and {\bf Gw}.  and {\bf Gw}.
555    
556  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
557  {\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_fluxform/calc\_mom\_rhs.F})  {\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_fluxform/calc\_mom\_rhs.F})
558    
559  $G_u$: {\bf Gu} ({\em DYNVARS.h})  $G_u$: {\bf Gu} ({\em DYNVARS.h})
# Line 199  conservation of second moments, derived Line 598  conservation of second moments, derived
598  $u^2$ and $v^2$ and $w^2$ so that advection of momentum correctly  $u^2$ and $v^2$ and $w^2$ so that advection of momentum correctly
599  conserves kinetic energy.  conserves kinetic energy.
600    
601  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
602  {\em S/R MOM\_U\_ADV\_UU} ({\em mom\_u\_adv\_uu.F})  {\em S/R MOM\_U\_ADV\_UU} ({\em mom\_u\_adv\_uu.F})
603    
604  {\em S/R MOM\_U\_ADV\_VU} ({\em mom\_u\_adv\_vu.F})  {\em S/R MOM\_U\_ADV\_VU} ({\em mom\_u\_adv\_vu.F})
# Line 263  compatibility testing (set run-time logi Line 662  compatibility testing (set run-time logi
662  useNonconservingCoriolis} to {\em true} which otherwise defaults to  useNonconservingCoriolis} to {\em true} which otherwise defaults to
663  {\em false}).  {\em false}).
664    
665  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
666  {\em S/R MOM\_CDSCHEME} ({\em mom\_cdscheme.F})  {\em S/R MOM\_CDSCHEME} ({\em mom\_cdscheme.F})
667    
668  {\em S/R MOM\_U\_CORIOLIS} ({\em mom\_u\_coriolis.F})  {\em S/R MOM\_U\_CORIOLIS} ({\em mom\_u\_coriolis.F})
# Line 304  G_v^{metric} & = & \frac{ \overline{u}^{ Line 703  G_v^{metric} & = & \frac{ \overline{u}^{
703  where $\tan{\phi}$ is evaluated at the $u$ and $v$ points  where $\tan{\phi}$ is evaluated at the $u$ and $v$ points
704  respectively.  respectively.
705    
706  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
707  {\em S/R MOM\_U\_METRIC\_SPHERE} ({\em mom\_u\_metric\_sphere.F})  {\em S/R MOM\_U\_METRIC\_SPHERE} ({\em mom\_u\_metric\_sphere.F})
708    
709  {\em S/R MOM\_V\_METRIC\_SPHERE} ({\em mom\_v\_metric\_sphere.F})  {\em S/R MOM\_V\_METRIC\_SPHERE} ({\em mom\_v\_metric\_sphere.F})
# Line 339  G_w^{metric} & = & Line 738  G_w^{metric} & = &
738    \frac{1}{a} ( {\overline{u}^{ik}}^2 + {\overline{v}^{jk}}^2 )    \frac{1}{a} ( {\overline{u}^{ik}}^2 + {\overline{v}^{jk}}^2 )
739  \end{eqnarray}  \end{eqnarray}
740    
741  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
742  {\em S/R MOM\_U\_METRIC\_NH} ({\em mom\_u\_metric\_nh.F})  {\em S/R MOM\_U\_METRIC\_NH} ({\em mom\_u\_metric\_nh.F})
743    
744  {\em S/R MOM\_V\_METRIC\_NH} ({\em mom\_v\_metric\_nh.F})  {\em S/R MOM\_V\_METRIC\_NH} ({\em mom\_v\_metric\_nh.F})
# Line 391  The Laplacian viscosity coefficient, $A_ Line 790  The Laplacian viscosity coefficient, $A_
790  of $m^2 s^{-1}$. The bi-harmonic viscosity coefficient, $A_4$ ({\bf  of $m^2 s^{-1}$. The bi-harmonic viscosity coefficient, $A_4$ ({\bf
791  viscA4}), has units of $m^4 s^{-1}$.  viscA4}), has units of $m^4 s^{-1}$.
792    
793  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
794  {\em S/R MOM\_U\_XVISCFLUX} ({\em mom\_u\_xviscflux.F})  {\em S/R MOM\_U\_XVISCFLUX} ({\em mom\_u\_xviscflux.F})
795    
796  {\em S/R MOM\_U\_YVISCFLUX} ({\em mom\_u\_yviscflux.F})  {\em S/R MOM\_U\_YVISCFLUX} ({\em mom\_u\_yviscflux.F})
# Line 434  In fact, the above discretization is not Line 833  In fact, the above discretization is not
833  assumes that the bathymetry at velocity points is deeper than at  assumes that the bathymetry at velocity points is deeper than at
834  neighbouring vorticity points, e.g. $1-h_w < 1-h_\zeta$  neighbouring vorticity points, e.g. $1-h_w < 1-h_\zeta$
835    
836  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
837  {\em S/R MOM\_U\_SIDEDRAG} ({\em mom\_u\_sidedrag.F})  {\em S/R MOM\_U\_SIDEDRAG} ({\em mom\_u\_sidedrag.F})
838    
839  {\em S/R MOM\_V\_SIDEDRAG} ({\em mom\_v\_sidedrag.F})  {\em S/R MOM\_V\_SIDEDRAG} ({\em mom\_v\_sidedrag.F})
# Line 471  is even less consistent than for the hyd Line 870  is even less consistent than for the hyd
870  \cite{Waojz}). It is well known how to do this properly (see Griffies  \cite{Waojz}). It is well known how to do this properly (see Griffies
871  \cite{Griffies}) and is on the list of to-do's.  \cite{Griffies}) and is on the list of to-do's.
872    
873  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
874  {\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F})  {\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F})
875    
876  {\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F})  {\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F})
# Line 509  $r_b$ ({\bf bottomDragLinear}) has units Line 908  $r_b$ ({\bf bottomDragLinear}) has units
908  of the order 0.0002 $m s^{-1}$. $C_d$ ({\bf bottomDragQuadratic}) is  of the order 0.0002 $m s^{-1}$. $C_d$ ({\bf bottomDragQuadratic}) is
909  dimensionless with typical values in the range 0.001--0.003.  dimensionless with typical values in the range 0.001--0.003.
910    
911  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
912  {\em S/R MOM\_U\_BOTTOMDRAG} ({\em mom\_u\_bottomdrag.F})  {\em S/R MOM\_U\_BOTTOMDRAG} ({\em mom\_u\_bottomdrag.F})
913    
914  {\em S/R MOM\_V\_BOTTOMDRAG} ({\em mom\_v\_bottomdrag.F})  {\em S/R MOM\_V\_BOTTOMDRAG} ({\em mom\_v\_bottomdrag.F})
# Line 609  G_w & = & G_w^{fu} + G_w^{\zeta_1 v} + G Line 1008  G_w & = & G_w^{fu} + G_w^{\zeta_1 v} + G
1008  + G_w^{h-dissip} + G_w^{v-dissip}  + G_w^{h-dissip} + G_w^{v-dissip}
1009  \end{eqnarray}  \end{eqnarray}
1010    
1011  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1012  {\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_vecinv/calc\_mom\_rhs.F})  {\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_vecinv/calc\_mom\_rhs.F})
1013    
1014  $G_u$: {\bf Gu} ({\em DYNVARS.h})  $G_u$: {\bf Gu} ({\em DYNVARS.h})
# Line 634  Relative vorticity is defined: Line 1033  Relative vorticity is defined:
1033  where ${\cal A}_\zeta$ is the area of the vorticity cell presented in  where ${\cal A}_\zeta$ is the area of the vorticity cell presented in
1034  the vertical and $\Gamma$ is the circulation about that cell.  the vertical and $\Gamma$ is the circulation about that cell.
1035    
1036  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1037  {\em S/R MOM\_VI\_CALC\_RELVORT3} ({\em mom\_vi\_calc\_relvort3.F})  {\em S/R MOM\_VI\_CALC\_RELVORT3} ({\em mom\_vi\_calc\_relvort3.F})
1038    
1039  $\zeta_3$: {\bf vort3} (local to {\em calc\_mom\_rhs.F})  $\zeta_3$: {\bf vort3} (local to {\em calc\_mom\_rhs.F})
# Line 649  KE = \frac{1}{2} ( \overline{ u^2 }^i + Line 1048  KE = \frac{1}{2} ( \overline{ u^2 }^i +
1048  + \epsilon_{nh} \overline{ w^2 }^k )  + \epsilon_{nh} \overline{ w^2 }^k )
1049  \end{equation}  \end{equation}
1050    
1051  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1052  {\em S/R MOM\_VI\_CALC\_KE} ({\em mom\_vi\_calc\_ke.F})  {\em S/R MOM\_VI\_CALC\_KE} ({\em mom\_vi\_calc\_ke.F})
1053    
1054  $KE$: {\bf KE} (local to {\em calc\_mom\_rhs.F})  $KE$: {\bf KE} (local to {\em calc\_mom\_rhs.F})
# Line 705  advection of absolute vorticity. Current Line 1104  advection of absolute vorticity. Current
1104  relative/absolute vorticity, centered/upwind/high order advection is  relative/absolute vorticity, centered/upwind/high order advection is
1105  available only through commented subroutine calls.  available only through commented subroutine calls.
1106    
1107  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1108  {\em S/R MOM\_VI\_CORIOLIS} ({\em mom\_vi\_coriolis.F})  {\em S/R MOM\_VI\_CORIOLIS} ({\em mom\_vi\_coriolis.F})
1109    
1110  {\em S/R MOM\_VI\_U\_CORIOLIS} ({\em mom\_vi\_u\_coriolis.F})  {\em S/R MOM\_VI\_U\_CORIOLIS} ({\em mom\_vi\_u\_coriolis.F})
# Line 736  G_v^{\zeta_1 w} & = & Line 1135  G_v^{\zeta_1 w} & = &
1135  }^k  }^k
1136  \end{eqnarray}  \end{eqnarray}
1137    
1138  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1139  {\em S/R MOM\_VI\_U\_VERTSHEAR} ({\em mom\_vi\_u\_vertshear.F})  {\em S/R MOM\_VI\_U\_VERTSHEAR} ({\em mom\_vi\_u\_vertshear.F})
1140    
1141  {\em S/R MOM\_VI\_V\_VERTSHEAR} ({\em mom\_vi\_v\_vertshear.F})  {\em S/R MOM\_VI\_V\_VERTSHEAR} ({\em mom\_vi\_v\_vertshear.F})
# Line 759  G_v^{\partial_y B} & = & Line 1158  G_v^{\partial_y B} & = &
1158  %\frac{1}{\Delta r_c} h_c \delta_k ( \phi' + KE )  %\frac{1}{\Delta r_c} h_c \delta_k ( \phi' + KE )
1159  \end{eqnarray}  \end{eqnarray}
1160    
1161  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1162  {\em S/R MOM\_VI\_U\_GRAD\_KE} ({\em mom\_vi\_u\_grad\_ke.F})  {\em S/R MOM\_VI\_U\_GRAD\_KE} ({\em mom\_vi\_u\_grad\_ke.F})
1163    
1164  {\em S/R MOM\_VI\_V\_GRAD\_KE} ({\em mom\_vi\_v\_grad\_ke.F})  {\em S/R MOM\_VI\_V\_GRAD\_KE} ({\em mom\_vi\_v\_grad\_ke.F})
# Line 782  D = \frac{1}{{\cal A}_c h_c} ( Line 1181  D = \frac{1}{{\cal A}_c h_c} (
1181  + \delta_j \Delta x_g h_s v )  + \delta_j \Delta x_g h_s v )
1182  \end{equation}  \end{equation}
1183    
1184  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1185  {\em S/R MOM\_VI\_CALC\_HDIV} ({\em mom\_vi\_calc\_hdiv.F})  {\em S/R MOM\_VI\_CALC\_HDIV} ({\em mom\_vi\_calc\_hdiv.F})
1186    
1187  $D$: {\bf hDiv} (local to {\em calc\_mom\_rhs.F})  $D$: {\bf hDiv} (local to {\em calc\_mom\_rhs.F})
# Line 813  D^* & = & \frac{1}{{\cal A}_c h_c} ( Line 1212  D^* & = & \frac{1}{{\cal A}_c h_c} (
1212  - \delta_j \Delta x_c \nabla^2 u )  - \delta_j \Delta x_c \nabla^2 u )
1213  \end{eqnarray}  \end{eqnarray}
1214    
1215  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1216  {\em S/R MOM\_VI\_HDISSIP} ({\em mom\_vi\_hdissip.F})  {\em S/R MOM\_VI\_HDISSIP} ({\em mom\_vi\_hdissip.F})
1217    
1218  $G_u^{h-dissip}$: {\bf uDiss} (local to {\em calc\_mom\_rhs.F})  $G_u^{h-dissip}$: {\bf uDiss} (local to {\em calc\_mom\_rhs.F})
# Line 839  In the interior the vertical stresses ar Line 1238  In the interior the vertical stresses ar
1238  \tau_{23} & = & A_v \frac{1}{\Delta r_c} \delta_k v  \tau_{23} & = & A_v \frac{1}{\Delta r_c} \delta_k v
1239  \end{eqnarray}  \end{eqnarray}
1240    
1241  \fbox{ \begin{minipage}{4.25in}  \fbox{ \begin{minipage}{4.75in}
1242  {\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F})  {\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F})
1243    
1244  {\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F})  {\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F})

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22