1 |
% $Header: /u/gcmpack/mitgcmdoc/part2/spatial-discrete.tex,v 1.1.1.1 2001/08/08 16:15:21 adcroft Exp $ |
2 |
% $Name: $ |
3 |
|
4 |
\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 |
involves invocation of the weak formulation (e.g. integral |
42 |
formulation) and the other involves non-linear expressions for |
43 |
interpolation of data (e.g. flux limiters). We use both but they can |
44 |
and will be ddiscussed seperately. The finite volume method discretizes by invoking the weak formulation of the equations or integral form. For example, the 1-D advection-diffusion equation: |
45 |
\begin{displaymath} |
46 |
\partial_t \theta + \partial_x ( u \theta - \kappa \partial_x \theta ) = 0 |
47 |
\end{displaymath} |
48 |
can be discretized by integrating of finite lengths $\Delta x$: |
49 |
\begin{displaymath} |
50 |
\Delta x \partial_t \theta + \delta_i ( F ) = 0 |
51 |
\end{displaymath} |
52 |
is exact but where the flux |
53 |
\begin{displaymath} |
54 |
F = u \overline{\theta} - \frac{\kappa}{\Delta x_c} \partial_i \theta |
55 |
\end{displaymath} |
56 |
is approximate. The method for obtained $\overline{\theta}$ is |
57 |
unspecified and non-lienar finite volume methods can be invoked. |
58 |
|
59 |
.... INCOMPLETE |
60 |
|
61 |
\subsection{C grid staggering of variables} |
62 |
|
63 |
\begin{figure} |
64 |
\centerline{ \resizebox{!}{2in}{ \includegraphics{part2/cgrid3d.eps}} } |
65 |
\caption{Three dimensional staggering of velocity components. This |
66 |
facilitates the natural discretization of the continuity and tracer |
67 |
equations. } |
68 |
\label{fig:cgrid3d} |
69 |
\end{figure} |
70 |
|
71 |
The basic algorithm employed for stepping forward the momentum |
72 |
equations is based on retaining non-divergence of the flow at all |
73 |
times. This is most naturally done if the components of flow are |
74 |
staggered in space in the form of an Arakawa C grid \cite{Arakawa70}. |
75 |
|
76 |
Fig. \ref{fig:cgrid3d} shows the components of flow ($u$,$v$,$w$) |
77 |
staggered in space such that the zonal component falls on the |
78 |
interface between continiuty cells in the zonal direction. Similarly |
79 |
for the meridional and vertical directions. The continiuty cell is |
80 |
synonymous with tracer cells (they are one and the same). |
81 |
|
82 |
|
83 |
|
84 |
|
85 |
\subsection{Horizontal grid} |
86 |
|
87 |
\begin{figure} |
88 |
\centerline{ \begin{tabular}{cc} |
89 |
\raisebox{1.5in}{a)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Ac.eps}} |
90 |
& \raisebox{1.5in}{b)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Az.eps}} |
91 |
\\ |
92 |
\raisebox{1.5in}{c)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Au.eps}} |
93 |
& \raisebox{1.5in}{d)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Av.eps}} |
94 |
\end{tabular} } |
95 |
\caption{ |
96 |
Staggering of horizontal grid descriptors (lengths and areas). The |
97 |
grid lines indicate the tracer cell boundaries and are the reference |
98 |
grid for all panels. a) The area of a tracer cell, $A_c$, is bordered |
99 |
by the lengths $\Delta x_g$ and $\Delta y_g$. b) The area of a |
100 |
vorticity cell, $A_\zeta$, is bordered by the lengths $\Delta x_c$ and |
101 |
$\Delta y_c$. c) The area of a u cell, $A_c$, is bordered by the |
102 |
lengths $\Delta x_v$ and $\Delta y_f$. d) The area of a v cell, $A_c$, |
103 |
is bordered by the lengths $\Delta x_f$ and $\Delta y_u$.} |
104 |
\label{fig:hgrid} |
105 |
\end{figure} |
106 |
|
107 |
The model domain is decomposed into tiles and within each tile a |
108 |
quasi-regular grid is used. A tile is the basic unit of domain |
109 |
decomposition for parallelization but may be used whether parallized |
110 |
or not; see section \ref{sect:tiles} for more details. Although the |
111 |
tiles may be patched together in an unstructured manner |
112 |
(i.e. irregular or non-tessilating pattern), the interior of tiles is |
113 |
a structered grid of quadrilateral cells. The horizontal coordinate |
114 |
system is orthogonal curvilinear meaning we can not necessarily treat |
115 |
the two horizontal directions as seperable. Instead, each cell in the |
116 |
horizontal grid is described by the length of it's sides and it's |
117 |
area. |
118 |
|
119 |
The grid information is quite general and describes any of the |
120 |
available coordinates systems, cartesian, spherical-polar or |
121 |
curvilinear. All that is necessary to distinguish between the |
122 |
coordinate systems is to initialize the grid data (discriptors) |
123 |
appropriately. |
124 |
|
125 |
\marginpar{Caution!} |
126 |
In the following, we refer to the orientation of quantities on the |
127 |
computational grid using geographic terminology such as points of the |
128 |
compass. This is purely for convenience but should note be confused |
129 |
with the actual geographic orientation of model quantities. |
130 |
|
131 |
\marginpar{$A_c$: {\bf rAc}} |
132 |
\marginpar{$\Delta x_g$: {\bf DXg}} |
133 |
\marginpar{$\Delta y_g$: {\bf DYg}} |
134 |
Fig.~\ref{fig:hgrid}a shows the tracer cell (synonymous with the |
135 |
continuity cell). The length of the southern edge, $\Delta x_g$, |
136 |
western edge, $\Delta y_g$ and surface area, $A_c$, presented in the |
137 |
vertical are stored in arrays {\bf DXg}, {\bf DYg} and {\bf rAc}. The |
138 |
``g'' suffix indicates that the lengths are along the defining grid |
139 |
boundaries. The ``c'' suffix associates the quantity with the cell |
140 |
centers. The quantities are staggered in space and the indexing is |
141 |
such that {\bf DXg(i,j)} is positioned to the south of {\bf rAc(i,j)} |
142 |
and {\bf DYg(i,j)} positioned to the west. |
143 |
|
144 |
\marginpar{$A_\zeta$: {\bf rAz}} |
145 |
\marginpar{$\Delta x_c$: {\bf DXc}} |
146 |
\marginpar{$\Delta y_c$: {\bf DYc}} |
147 |
Fig.~\ref{fig:hgrid}b shows the vorticity cell. The length of the |
148 |
southern edge, $\Delta x_c$, western edge, $\Delta y_c$ and surface |
149 |
area, $A_\zeta$, presented in the vertical are stored in arrays {\bf |
150 |
DXg}, {\bf DYg} and {\bf rAz}. The ``z'' suffix indicates that the |
151 |
lengths are measured between the cell centers and the ``$\zeta$'' suffix |
152 |
associates points with the vorticity points. The quantities are |
153 |
staggered in space and the indexing is such that {\bf DXc(i,j)} is |
154 |
positioned to the north of {\bf rAc(i,j)} and {\bf DYc(i,j)} positioned |
155 |
to the east. |
156 |
|
157 |
\marginpar{$A_w$: {\bf rAw}} |
158 |
\marginpar{$\Delta x_v$: {\bf DXv}} |
159 |
\marginpar{$\Delta y_f$: {\bf DYf}} |
160 |
Fig.~\ref{fig:hgrid}c shows the ``u'' or western (w) cell. The length of |
161 |
the southern edge, $\Delta x_v$, eastern edge, $\Delta y_f$ and |
162 |
surface area, $A_w$, presented in the vertical are stored in arrays |
163 |
{\bf DXv}, {\bf DYf} and {\bf rAw}. The ``v'' suffix indicates that |
164 |
the length is measured between the v-points, the ``f'' suffix |
165 |
indicates that the length is measured between the (tracer) cell faces |
166 |
and the ``w'' suffix associates points with the u-points (w stands for |
167 |
west). The quantities are staggered in space and the indexing is such |
168 |
that {\bf DXv(i,j)} is positioned to the south of {\bf rAw(i,j)} and |
169 |
{\bf DYf(i,j)} positioned to the east. |
170 |
|
171 |
\marginpar{$A_s$: {\bf rAs}} |
172 |
\marginpar{$\Delta x_f$: {\bf DXf}} |
173 |
\marginpar{$\Delta y_u$: {\bf DYu}} |
174 |
Fig.~\ref{fig:hgrid}d shows the ``v'' or southern (s) cell. The length of |
175 |
the northern edge, $\Delta x_f$, western edge, $\Delta y_u$ and |
176 |
surface area, $A_s$, presented in the vertical are stored in arrays |
177 |
{\bf DXf}, {\bf DYu} and {\bf rAs}. The ``u'' suffix indicates that |
178 |
the length is measured between the u-points, the ``f'' suffix |
179 |
indicates that the length is measured between the (tracer) cell faces |
180 |
and the ``s'' suffix associates points with the v-points (s stands for |
181 |
south). The quantities are staggered in space and the indexing is such |
182 |
that {\bf DXf(i,j)} is positioned to the north of {\bf rAs(i,j)} and |
183 |
{\bf DYu(i,j)} positioned to the west. |
184 |
|
185 |
\fbox{ \begin{minipage}{4.75in} |
186 |
{\em S/R INI\_CARTESIAN\_GRID} ({\em |
187 |
model/src/ini\_cartesian\_grid.F}) |
188 |
|
189 |
{\em S/R INI\_SPHERICAL\_POLAR\_GRID} ({\em |
190 |
model/src/ini\_spherical\_polar\_grid.F}) |
191 |
|
192 |
{\em S/R INI\_CURVILINEAR\_GRID} ({\em |
193 |
model/src/ini\_curvilinear\_grid.F}) |
194 |
|
195 |
$A_c$, $A_\zeta$, $A_w$, $A_s$: {\bf rAc}, {\bf rAz}, {\bf rAw}, {\bf rAs} |
196 |
({\em GRID.h}) |
197 |
|
198 |
$\Delta x_g$, $\Delta y_g$: {\bf DXg}, {\bf DYg} ({\em GRID.h}) |
199 |
|
200 |
$\Delta x_c$, $\Delta y_c$: {\bf DXc}, {\bf DYc} ({\em GRID.h}) |
201 |
|
202 |
$\Delta x_f$, $\Delta y_f$: {\bf DXf}, {\bf DYf} ({\em GRID.h}) |
203 |
|
204 |
$\Delta x_v$, $\Delta y_u$: {\bf DXv}, {\bf DYu} ({\em GRID.h}) |
205 |
|
206 |
\end{minipage} } |
207 |
|
208 |
\subsubsection{Reciprocals of horizontal grid descriptors} |
209 |
|
210 |
%\marginpar{$A_c^{-1}$: {\bf RECIP\_rAc}} |
211 |
%\marginpar{$A_\zeta^{-1}$: {\bf RECIP\_rAz}} |
212 |
%\marginpar{$A_w^{-1}$: {\bf RECIP\_rAw}} |
213 |
%\marginpar{$A_s^{-1}$: {\bf RECIP\_rAs}} |
214 |
Lengths and areas appear in the denominator of expressions as much as |
215 |
in the numerator. For efficiency and portability, we pre-calculate the |
216 |
reciprocal of the horizontal grid quantities so that in-line divisions |
217 |
can be avoided. |
218 |
|
219 |
%\marginpar{$\Delta x_g^{-1}$: {\bf RECIP\_DXg}} |
220 |
%\marginpar{$\Delta y_g^{-1}$: {\bf RECIP\_DYg}} |
221 |
%\marginpar{$\Delta x_c^{-1}$: {\bf RECIP\_DXc}} |
222 |
%\marginpar{$\Delta y_c^{-1}$: {\bf RECIP\_DYc}} |
223 |
%\marginpar{$\Delta x_f^{-1}$: {\bf RECIP\_DXf}} |
224 |
%\marginpar{$\Delta y_f^{-1}$: {\bf RECIP\_DYf}} |
225 |
%\marginpar{$\Delta x_v^{-1}$: {\bf RECIP\_DXv}} |
226 |
%\marginpar{$\Delta y_u^{-1}$: {\bf RECIP\_DYu}} |
227 |
For each grid descriptor (array) there is a reciprocal named using the |
228 |
prefix {\bf RECIP\_}. This doubles the amount of storage in {\em |
229 |
GRID.h} but they are all only 2-D descriptors. |
230 |
|
231 |
\fbox{ \begin{minipage}{4.75in} |
232 |
{\em S/R INI\_MASKS\_ETC} ({\em |
233 |
model/src/ini\_masks\_etc.F}) |
234 |
|
235 |
$A_c^{-1}$: {\bf RECIP\_Ac} ({\em GRID.h}) |
236 |
|
237 |
$A_\zeta^{-1}$: {\bf RECIP\_Az} ({\em GRID.h}) |
238 |
|
239 |
$A_w^{-1}$: {\bf RECIP\_Aw} ({\em GRID.h}) |
240 |
|
241 |
$A_s^{-1}$: {\bf RECIP\_As} ({\em GRID.h}) |
242 |
|
243 |
$\Delta x_g^{-1}$, $\Delta y_g^{-1}$: {\bf RECIP\_DXg}, {\bf RECIP\_DYg} ({\em GRID.h}) |
244 |
|
245 |
$\Delta x_c^{-1}$, $\Delta y_c^{-1}$: {\bf RECIP\_DXc}, {\bf RECIP\_DYc} ({\em GRID.h}) |
246 |
|
247 |
$\Delta x_f^{-1}$, $\Delta y_f^{-1}$: {\bf RECIP\_DXf}, {\bf RECIP\_DYf} ({\em GRID.h}) |
248 |
|
249 |
$\Delta x_v^{-1}$, $\Delta y_u^{-1}$: {\bf RECIP\_DXv}, {\bf RECIP\_DYu} ({\em GRID.h}) |
250 |
|
251 |
\end{minipage} } |
252 |
|
253 |
\subsubsection{Cartesian coordinates} |
254 |
|
255 |
Cartesian coordinates are selected when the logical flag {\bf |
256 |
using\-Cartes\-ianGrid} in namelist {\em PARM04} is set to true. The grid |
257 |
spacing can be set to uniform via scalars {\bf dXspacing} and {\bf |
258 |
dYspacing} in namelist {\em PARM04} or to variable resolution by the |
259 |
vectors {\bf DELX} and {\bf DELY}. Units are normally |
260 |
meters. Non-dimensional coordinates can be used by interpretting the |
261 |
gravitational constant as the Rayleigh number. |
262 |
|
263 |
\subsubsection{Spherical-polar coordinates} |
264 |
|
265 |
Spherical coordinates are selected when the logical flag {\bf |
266 |
using\-Spherical\-PolarGrid} in namelist {\em PARM04} is set to true. The |
267 |
grid spacing can be set to uniform via scalars {\bf dXspacing} and |
268 |
{\bf dYspacing} in namelist {\em PARM04} or to variable resolution by |
269 |
the vectors {\bf DELX} and {\bf DELY}. Units of these namelist |
270 |
variables are alway degrees. The horizontal grid descriptors are |
271 |
calculated from these namelist variables have units of meters. |
272 |
|
273 |
\subsubsection{Curvilinear coordinates} |
274 |
|
275 |
Curvilinear coordinates are selected when the logical flag {\bf |
276 |
using\-Curvil\-inear\-Grid} in namelist {\em PARM04} is set to true. The |
277 |
grid spacing can not be set via the namelist. Instead, the grid |
278 |
descriptors are read from data files, one for each descriptor. As for |
279 |
other grids, the horizontal grid descriptors have units of meters. |
280 |
|
281 |
|
282 |
\subsection{Vertical grid} |
283 |
|
284 |
\begin{figure} |
285 |
\centerline{ \begin{tabular}{cc} |
286 |
\raisebox{4in}{a)} \resizebox{!}{4in}{ |
287 |
\includegraphics{part2/vgrid-cellcentered.eps}} & \raisebox{4in}{b)} |
288 |
\resizebox{!}{4in}{ \includegraphics{part2/vgrid-accurate.eps}} |
289 |
\end{tabular} } |
290 |
\caption{Two versions of the vertical grid. a) The cell centered |
291 |
approach where the interface depths are specified and the tracer |
292 |
points centered in between the interfaces. b) The interface centered |
293 |
approach where tracer levels are specified and the w-interfaces are |
294 |
centered in between.} |
295 |
\label{fig:vgrid} |
296 |
\end{figure} |
297 |
|
298 |
As for the horizontal grid, we use the suffixes ``c'' and ``f'' to |
299 |
indicates faces and centers. Fig.~\ref{fig:vgrid}a shows the default |
300 |
vertical grid used by the model. |
301 |
\marginpar{$\Delta r_f$: {\bf DRf}} |
302 |
\marginpar{$\Delta r_c$: {\bf DRc}} |
303 |
$\Delta r_f$ is the difference in $r$ |
304 |
(vertical coordinate) between the faces (i.e. $\Delta r_f \equiv - |
305 |
\delta_k r$ where the minus sign appears due to the convention that the |
306 |
surface layer has index $k=1$.). |
307 |
|
308 |
The vertical grid is calculated in subroutine {\em |
309 |
INI\_VERTICAL\_GRID} and specified via the vector {\bf DELR} in |
310 |
namelist {\em PARM04}. The units of ``r'' are either meters or Pascals |
311 |
depending on the isomorphism being used which in turn is dependent |
312 |
only on the choise of equation of state. |
313 |
|
314 |
There are alternative namelist vectors {\bf DELZ} and {\bf DELP} which |
315 |
dictate whether z- or |
316 |
\marginpar{Caution!} |
317 |
p- coordinates are to be used but we intend to |
318 |
phase this out since they are redundant. |
319 |
|
320 |
The reciprocals $\Delta r_f^{-1}$ and $\Delta r_c^{-1}$ are |
321 |
pre-calculated (also in subroutine {\em INI\_VERTICAL\_GRID}). All |
322 |
vertical grid descriptors are stored in common blocks in {\em GRID.h}. |
323 |
|
324 |
The above grid (Fig.~\ref{fig:vgrid}a) is known as the cell centered |
325 |
approach because the tracer points are at cell centers; the cell |
326 |
centers are mid-way between the cell interfaces. An alternative, the |
327 |
vertex or interface centered approach, is shown in |
328 |
Fig.~\ref{fig:vgrid}b. Here, the interior interfaces are positioned |
329 |
mid-way between the tracer nodes (no longer cell centers). This |
330 |
approach is formally more accurate for evaluation of hydrostatic |
331 |
pressure and vertical advection but historically the cell centered |
332 |
approach has been used. An alternative form of subroutine {\em |
333 |
INI\_VERTICAL\_GRID} is used to select the interface centered approach |
334 |
but no run time option is currently available. |
335 |
|
336 |
\fbox{ \begin{minipage}{4.75in} |
337 |
{\em S/R INI\_VERTICAL\_GRID} ({\em |
338 |
model/src/ini\_vertical\_grid.F}) |
339 |
|
340 |
$\Delta r_f$: {\bf DRf} ({\em GRID.h}) |
341 |
|
342 |
$\Delta r_c$: {\bf DRc} ({\em GRID.h}) |
343 |
|
344 |
$\Delta r_f^{-1}$: {\bf RECIP\_DRf} ({\em GRID.h}) |
345 |
|
346 |
$\Delta r_c^{-1}$: {\bf RECIP\_DRc} ({\em GRID.h}) |
347 |
|
348 |
\end{minipage} } |
349 |
|
350 |
|
351 |
\subsection{Continuity and horizontal pressure gradient terms} |
352 |
|
353 |
The core algorithm is based on the ``C grid'' discretization of the |
354 |
continuity equation which can be summarized as: |
355 |
\begin{eqnarray} |
356 |
\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' \\ |
357 |
\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' \\ |
358 |
\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}' \\ |
359 |
\delta_i \Delta y_g \Delta r_f h_w u + |
360 |
\delta_j \Delta x_g \Delta r_f h_s v + |
361 |
\delta_k {\cal A}_c w & = & {\cal A}_c \delta_k (P-E)_{r=0} |
362 |
\label{eq:discrete-continuity} |
363 |
\end{eqnarray} |
364 |
where the continuity equation has been most naturally discretized by |
365 |
staggering the three components of velocity as shown in |
366 |
Fig.~\ref{fig-cgrid3d}. The grid lengths $\Delta x_c$ and $\Delta y_c$ |
367 |
are the lengths between tracer points (cell centers). The grid lengths |
368 |
$\Delta x_g$, $\Delta y_g$ are the grid lengths between cell |
369 |
corners. $\Delta r_f$ and $\Delta r_c$ are the distance (in units of |
370 |
$r$) between level interfaces (w-level) and level centers (tracer |
371 |
level). The surface area presented in the vertical is denoted ${\cal |
372 |
A}_c$. The factors $h_w$ and $h_s$ are non-dimensional fractions |
373 |
(between 0 and 1) that represent the fraction cell depth that is |
374 |
``open'' for fluid flow. |
375 |
\marginpar{$h_w$: {\bf hFacW}} |
376 |
\marginpar{$h_s$: {\bf hFacS}} |
377 |
|
378 |
The last equation, the discrete continuity equation, can be summed in |
379 |
the vertical to yeild the free-surface equation: |
380 |
\begin{equation} |
381 |
{\cal A}_c \partial_t \eta + \delta_i \sum_k \Delta y_g \Delta r_f h_w u + \delta_j \sum_k \Delta x_g \Delta r_f h_s v = |
382 |
{\cal A}_c(P-E)_{r=0} |
383 |
\end{equation} |
384 |
The source term $P-E$ on the rhs of continuity accounts for the local |
385 |
addition of volume due to excess precipitation and run-off over |
386 |
evaporation and only enters the top-level of the {\em ocean} model. |
387 |
|
388 |
\subsection{Hydrostatic balance} |
389 |
|
390 |
The vertical momentum equation has the hydrostatic or |
391 |
quasi-hydrostatic balance on the right hand side. This discretization |
392 |
guarantees that the conversion of potential to kinetic energy as |
393 |
derived from the buoyancy equation exactly matches the form derived |
394 |
from the pressure gradient terms when forming the kinetic energy |
395 |
equation. |
396 |
|
397 |
In the ocean, using z-ccordinates, the hydrostatic balance terms are |
398 |
discretized: |
399 |
\begin{equation} |
400 |
\epsilon_{nh} \partial_t w |
401 |
+ g \overline{\rho'}^k + \frac{1}{\Delta z} \delta_k \Phi_h' = \ldots |
402 |
\end{equation} |
403 |
|
404 |
In the atmosphere, using p-coordinates, hydrostatic balance is |
405 |
discretized: |
406 |
\begin{equation} |
407 |
\overline{\theta'}^k + \frac{1}{\Delta \Pi} \delta_k \Phi_h' = 0 |
408 |
\end{equation} |
409 |
where $\Delta \Pi$ is the difference in Exner function between the |
410 |
pressure points. The non-hydrostatic equations are not available in |
411 |
the atmosphere. |
412 |
|
413 |
The difference in approach between ocean and atmosphere occurs because |
414 |
of the direct use of the ideal gas equation in forming the potential |
415 |
energy conversion term $\alpha \omega$. The form of these consversion |
416 |
terms is discussed at length in \cite{Adcroft01}. |
417 |
|
418 |
Because of the different representation of hydrostatic balance between |
419 |
ocean and atmosphere there is no elegant way to represent both systems |
420 |
using an arbitrary coordinate. |
421 |
|
422 |
The integration for hydrostatic pressure is made in the positive $r$ |
423 |
direction (increasing k-index). For the ocean, this is from the |
424 |
free-surface down and for the atmosphere this is from the ground up. |
425 |
|
426 |
The calculations are made in the subroutine {\em |
427 |
CALC\_PHI\_HYD}. Inside this routine, one of other of the |
428 |
atmospheric/oceanic form is selected based on the string variable {\bf |
429 |
buoyancyRelation}. |
430 |
|
431 |
\subsection{Flux-form momentum equations} |
432 |
|
433 |
The original finite volume model was based on the Eulerian flux form |
434 |
momentum equations. This is the default though the vector invariant |
435 |
form is optionally available (and recommended in some cases). |
436 |
|
437 |
The ``G's'' (our colloquial name for all terms on rhs!) are broken |
438 |
into the various advective, Coriolis, horizontal dissipation, vertical |
439 |
dissipation and metric forces: |
440 |
\marginpar{$G_u$: {\bf Gu} } |
441 |
\marginpar{$G_v$: {\bf Gv} } |
442 |
\marginpar{$G_w$: {\bf Gw} } |
443 |
\begin{eqnarray} |
444 |
G_u & = & G_u^{adv} + G_u^{cor} + G_u^{h-diss} + G_u^{v-diss} + |
445 |
G_u^{metric} + G_u^{nh-metric} \\ |
446 |
G_v & = & G_v^{adv} + G_v^{cor} + G_v^{h-diss} + G_v^{v-diss} + |
447 |
G_v^{metric} + G_v^{nh-metric} \\ |
448 |
G_w & = & G_w^{adv} + G_w^{cor} + G_w^{h-diss} + G_w^{v-diss} + |
449 |
G_w^{metric} + G_w^{nh-metric} |
450 |
\end{eqnarray} |
451 |
In the hydrostatic limit, $G_w=0$ and $\epsilon_{nh}=0$, reducing the |
452 |
vertical momentum to hydrostatic balance. |
453 |
|
454 |
These terms are calculated in routines called from subroutine {\em |
455 |
CALC\_MOM\_RHS} a collected into the global arrays {\bf Gu}, {\bf Gv}, |
456 |
and {\bf Gw}. |
457 |
|
458 |
\fbox{ \begin{minipage}{4.75in} |
459 |
{\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_fluxform/calc\_mom\_rhs.F}) |
460 |
|
461 |
$G_u$: {\bf Gu} ({\em DYNVARS.h}) |
462 |
|
463 |
$G_v$: {\bf Gv} ({\em DYNVARS.h}) |
464 |
|
465 |
$G_w$: {\bf Gw} ({\em DYNVARS.h}) |
466 |
\end{minipage} } |
467 |
|
468 |
|
469 |
\subsubsection{Advection of momentum} |
470 |
|
471 |
The advective operator is second order accurate in space: |
472 |
\begin{eqnarray} |
473 |
{\cal A}_w \Delta r_f h_w G_u^{adv} & = & |
474 |
\delta_i \overline{ U }^i \overline{ u }^i |
475 |
+ \delta_j \overline{ V }^i \overline{ u }^j |
476 |
+ \delta_k \overline{ W }^i \overline{ u }^k \\ |
477 |
{\cal A}_s \Delta r_f h_s G_v^{adv} & = & |
478 |
\delta_i \overline{ U }^j \overline{ v }^i |
479 |
+ \delta_j \overline{ V }^j \overline{ v }^j |
480 |
+ \delta_k \overline{ W }^j \overline{ v }^k \\ |
481 |
{\cal A}_c \Delta r_c G_w^{adv} & = & |
482 |
\delta_i \overline{ U }^k \overline{ w }^i |
483 |
+ \delta_j \overline{ V }^k \overline{ w }^j |
484 |
+ \delta_k \overline{ W }^k \overline{ w }^k \\ |
485 |
\end{eqnarray} |
486 |
and because of the flux form does not contribute to the global budget |
487 |
of linear momentum. The quantities $U$, $V$ and $W$ are volume fluxes |
488 |
defined: |
489 |
\marginpar{$U$: {\bf uTrans} } |
490 |
\marginpar{$V$: {\bf vTrans} } |
491 |
\marginpar{$W$: {\bf rTrans} } |
492 |
\begin{eqnarray} |
493 |
U & = & \Delta y_g \Delta r_f h_w u \\ |
494 |
V & = & \Delta x_g \Delta r_f h_s v \\ |
495 |
W & = & {\cal A}_c w |
496 |
\end{eqnarray} |
497 |
The advection of momentum takes the same form as the advection of |
498 |
tracers but by a translated advective flow. Consequently, the |
499 |
conservation of second moments, derived for tracers later, applies to |
500 |
$u^2$ and $v^2$ and $w^2$ so that advection of momentum correctly |
501 |
conserves kinetic energy. |
502 |
|
503 |
\fbox{ \begin{minipage}{4.75in} |
504 |
{\em S/R MOM\_U\_ADV\_UU} ({\em mom\_u\_adv\_uu.F}) |
505 |
|
506 |
{\em S/R MOM\_U\_ADV\_VU} ({\em mom\_u\_adv\_vu.F}) |
507 |
|
508 |
{\em S/R MOM\_U\_ADV\_WU} ({\em mom\_u\_adv\_wu.F}) |
509 |
|
510 |
{\em S/R MOM\_U\_ADV\_UV} ({\em mom\_u\_adv\_uv.F}) |
511 |
|
512 |
{\em S/R MOM\_U\_ADV\_VV} ({\em mom\_u\_adv\_vv.F}) |
513 |
|
514 |
{\em S/R MOM\_U\_ADV\_WV} ({\em mom\_u\_adv\_wv.F}) |
515 |
|
516 |
$uu$, $uv$, $vu$, $vv$: {\bf aF} (local to {\em calc\_mom\_rhs.F}) |
517 |
\end{minipage} } |
518 |
|
519 |
|
520 |
|
521 |
\subsubsection{Coriolis terms} |
522 |
|
523 |
The ``pure C grid'' Coriolis terms (i.e. in absence of C-D scheme) are |
524 |
discretized: |
525 |
\begin{eqnarray} |
526 |
{\cal A}_w \Delta r_f h_w G_u^{Cor} & = & |
527 |
\overline{ f {\cal A}_c \Delta r_f h_c \overline{ v }^j }^i |
528 |
- \epsilon_{nh} \overline{ f' {\cal A}_c \Delta r_f h_c \overline{ w }^k }^i \\ |
529 |
{\cal A}_s \Delta r_f h_s G_v^{Cor} & = & |
530 |
- \overline{ f {\cal A}_c \Delta r_f h_c \overline{ u }^i }^j \\ |
531 |
{\cal A}_c \Delta r_c G_w^{Cor} & = & |
532 |
\epsilon_{nh} \overline{ f' {\cal A}_c \Delta r_f h_c \overline{ u }^i }^k |
533 |
\end{eqnarray} |
534 |
where the Coriolis parameters $f$ and $f'$ are defined: |
535 |
\begin{eqnarray} |
536 |
f & = & 2 \Omega \sin{\phi} \\ |
537 |
f' & = & 2 \Omega \cos{\phi} |
538 |
\end{eqnarray} |
539 |
when using spherical geometry, otherwise the $\beta$-plane definition is used: |
540 |
\begin{eqnarray} |
541 |
f & = & f_o + \beta y \\ |
542 |
f' & = & 0 |
543 |
\end{eqnarray} |
544 |
|
545 |
This discretization globally conserves kinetic energy. It should be |
546 |
noted that despite the use of this discretization in former |
547 |
publications, all calculations to date have used the following |
548 |
different discretization: |
549 |
\begin{eqnarray} |
550 |
G_u^{Cor} & = & |
551 |
f_u \overline{ v }^{ji} |
552 |
- \epsilon_{nh} f_u' \overline{ w }^{ik} \\ |
553 |
G_v^{Cor} & = & |
554 |
- f_v \overline{ u }^{ij} \\ |
555 |
G_w^{Cor} & = & |
556 |
\epsilon_{nh} f_w' \overline{ u }^{ik} |
557 |
\end{eqnarray} |
558 |
\marginpar{Need to change the default in code to match this} |
559 |
where the subscripts on $f$ and $f'$ indicate evaluation of the |
560 |
Coriolis parameters at the appropriate points in space. The above |
561 |
discretization does {\em not} conserve anything, especially energy. An |
562 |
option to recover this discretization has been retained for backward |
563 |
compatibility testing (set run-time logical {\bf |
564 |
useNonconservingCoriolis} to {\em true} which otherwise defaults to |
565 |
{\em false}). |
566 |
|
567 |
\fbox{ \begin{minipage}{4.75in} |
568 |
{\em S/R MOM\_CDSCHEME} ({\em mom\_cdscheme.F}) |
569 |
|
570 |
{\em S/R MOM\_U\_CORIOLIS} ({\em mom\_u\_coriolis.F}) |
571 |
|
572 |
{\em S/R MOM\_V\_CORIOLIS} ({\em mom\_v\_coriolis.F}) |
573 |
|
574 |
$G_u^{Cor}$, $G_v^{Cor}$: {\bf cF} (local to {\em calc\_mom\_rhs.F}) |
575 |
\end{minipage} } |
576 |
|
577 |
|
578 |
\subsubsection{Curvature metric terms} |
579 |
|
580 |
The most commonly used coordinate system on the sphere is the |
581 |
geographic system $(\lambda,\phi)$. The curvilinear nature of these |
582 |
coordinates on the sphere lead to some ``metric'' terms in the |
583 |
component momentum equations. Under the thin-atmosphere and |
584 |
hydrostatic approximations these terms are discretized: |
585 |
\begin{eqnarray} |
586 |
{\cal A}_w \Delta r_f h_w G_u^{metric} & = & |
587 |
\overline{ \frac{ \overline{u}^i }{a} \tan{\phi} {\cal A}_c \Delta r_f h_c \overline{ v }^j }^i \\ |
588 |
{\cal A}_s \Delta r_f h_s G_v^{metric} & = & |
589 |
- \overline{ \frac{ \overline{u}^i }{a} \tan{\phi} {\cal A}_c \Delta r_f h_c \overline{ u }^i }^j \\ |
590 |
G_w^{metric} & = & 0 |
591 |
\end{eqnarray} |
592 |
where $a$ is the radius of the planet (sphericity is assumed) or the |
593 |
radial distance of the particle (i.e. a function of height). It is |
594 |
easy to see that this discretization satisfies all the properties of |
595 |
the discrete Coriolis terms since the metric factor $\frac{u}{a} |
596 |
\tan{\phi}$ can be viewed as a modification of the vertical Coriolis |
597 |
parameter: $f \rightarrow f+\frac{u}{a} \tan{\phi}$. |
598 |
|
599 |
However, as for the Coriolis terms, a non-energy conserving form has |
600 |
exclusively been used to date: |
601 |
\begin{eqnarray} |
602 |
G_u^{metric} & = & \frac{u \overline{v}^{ij} }{a} \tan{\phi} \\ |
603 |
G_v^{metric} & = & \frac{ \overline{u}^{ij} \overline{u}^{ij}}{a} \tan{\phi} |
604 |
\end{eqnarray} |
605 |
where $\tan{\phi}$ is evaluated at the $u$ and $v$ points |
606 |
respectively. |
607 |
|
608 |
\fbox{ \begin{minipage}{4.75in} |
609 |
{\em S/R MOM\_U\_METRIC\_SPHERE} ({\em mom\_u\_metric\_sphere.F}) |
610 |
|
611 |
{\em S/R MOM\_V\_METRIC\_SPHERE} ({\em mom\_v\_metric\_sphere.F}) |
612 |
|
613 |
$G_u^{metric}$, $G_v^{metric}$: {\bf mT} (local to {\em calc\_mom\_rhs.F}) |
614 |
\end{minipage} } |
615 |
|
616 |
|
617 |
|
618 |
\subsubsection{Non-hydrostatic metric terms} |
619 |
|
620 |
For the non-hydrostatic equations, dropping the thin-atmosphere |
621 |
approximation re-introduces metric terms involving $w$ and are |
622 |
required to conserve anglular momentum: |
623 |
\begin{eqnarray} |
624 |
{\cal A}_w \Delta r_f h_w G_u^{metric} & = & |
625 |
- \overline{ \frac{ \overline{u}^i \overline{w}^k }{a} {\cal A}_c \Delta r_f h_c }^i \\ |
626 |
{\cal A}_s \Delta r_f h_s G_v^{metric} & = & |
627 |
- \overline{ \frac{ \overline{v}^j \overline{w}^k }{a} {\cal A}_c \Delta r_f h_c}^j \\ |
628 |
{\cal A}_c \Delta r_c G_w^{metric} & = & |
629 |
\overline{ \frac{ {\overline{u}^i}^2 + {\overline{v}^j}^2}{a} {\cal A}_c \Delta r_f h_c }^k |
630 |
\end{eqnarray} |
631 |
|
632 |
Because we are always consistent, even if consistently wrong, we have, |
633 |
in the past, used a different discretization in the model which is: |
634 |
\begin{eqnarray} |
635 |
G_u^{metric} & = & |
636 |
- \frac{u}{a} \overline{w}^{ik} \\ |
637 |
G_v^{metric} & = & |
638 |
- \frac{v}{a} \overline{w}^{jk} \\ |
639 |
G_w^{metric} & = & |
640 |
\frac{1}{a} ( {\overline{u}^{ik}}^2 + {\overline{v}^{jk}}^2 ) |
641 |
\end{eqnarray} |
642 |
|
643 |
\fbox{ \begin{minipage}{4.75in} |
644 |
{\em S/R MOM\_U\_METRIC\_NH} ({\em mom\_u\_metric\_nh.F}) |
645 |
|
646 |
{\em S/R MOM\_V\_METRIC\_NH} ({\em mom\_v\_metric\_nh.F}) |
647 |
|
648 |
$G_u^{metric}$, $G_v^{metric}$: {\bf mT} (local to {\em calc\_mom\_rhs.F}) |
649 |
\end{minipage} } |
650 |
|
651 |
|
652 |
\subsubsection{Lateral dissipation} |
653 |
|
654 |
Historically, we have represented the SGS Reynolds stresses as simply |
655 |
down gradient momentum fluxes, ignoring constraints on the stress |
656 |
tensor such as symmetry. |
657 |
\begin{eqnarray} |
658 |
{\cal A}_w \Delta r_f h_w G_u^{h-diss} & = & |
659 |
\delta_i \Delta y_f \Delta r_f h_c \tau_{11} |
660 |
+ \delta_j \Delta x_v \Delta r_f h_\zeta \tau_{12} \\ |
661 |
{\cal A}_s \Delta r_f h_s G_v^{h-diss} & = & |
662 |
\delta_i \Delta y_u \Delta r_f h_\zeta \tau_{21} |
663 |
+ \delta_j \Delta x_f \Delta r_f h_c \tau_{22} |
664 |
\end{eqnarray} |
665 |
\marginpar{Check signs of stress definitions} |
666 |
|
667 |
The lateral viscous stresses are discretized: |
668 |
\begin{eqnarray} |
669 |
\tau_{11} & = & A_h c_{11\Delta}(\phi) \frac{1}{\Delta x_f} \delta_i u |
670 |
-A_4 c_{11\Delta^2}(\phi) \frac{1}{\Delta x_f} \delta_i \nabla^2 u \\ |
671 |
\tau_{12} & = & A_h c_{12\Delta}(\phi) \frac{1}{\Delta y_u} \delta_j u |
672 |
-A_4 c_{12\Delta^2}(\phi)\frac{1}{\Delta y_u} \delta_j \nabla^2 u \\ |
673 |
\tau_{21} & = & A_h c_{21\Delta}(\phi) \frac{1}{\Delta x_v} \delta_i v |
674 |
-A_4 c_{21\Delta^2}(\phi) \frac{1}{\Delta x_v} \delta_i \nabla^2 v \\ |
675 |
\tau_{22} & = & A_h c_{22\Delta}(\phi) \frac{1}{\Delta y_f} \delta_j v |
676 |
-A_4 c_{22\Delta^2}(\phi) \frac{1}{\Delta y_f} \delta_j \nabla^2 v |
677 |
\end{eqnarray} |
678 |
where the non-dimensional factors $c_{lm\Delta^n}(\phi), \{l,m,n\} \in |
679 |
\{1,2\}$ define the ``cosine'' scaling with latitude which can be |
680 |
applied in various ad-hoc ways. For instance, $c_{11\Delta} = |
681 |
c_{21\Delta} = (\cos{\phi})^{3/2}$, $c_{12\Delta}=c_{22\Delta}=0$ would |
682 |
represent the an-isotropic cosine scaling typically used on the |
683 |
``lat-lon'' grid for Laplacian viscosity. |
684 |
\marginpar{Need to tidy up method for controlling this in code} |
685 |
|
686 |
It should be noted that dispite the ad-hoc nature of the scaling, some |
687 |
scaling must be done since on a lat-lon grid the converging meridians |
688 |
make it very unlikely that a stable viscosity parameter exists across |
689 |
the entire model domain. |
690 |
|
691 |
The Laplacian viscosity coefficient, $A_h$ ({\bf viscAh}), has units |
692 |
of $m^2 s^{-1}$. The bi-harmonic viscosity coefficient, $A_4$ ({\bf |
693 |
viscA4}), has units of $m^4 s^{-1}$. |
694 |
|
695 |
\fbox{ \begin{minipage}{4.75in} |
696 |
{\em S/R MOM\_U\_XVISCFLUX} ({\em mom\_u\_xviscflux.F}) |
697 |
|
698 |
{\em S/R MOM\_U\_YVISCFLUX} ({\em mom\_u\_yviscflux.F}) |
699 |
|
700 |
{\em S/R MOM\_V\_XVISCFLUX} ({\em mom\_v\_xviscflux.F}) |
701 |
|
702 |
{\em S/R MOM\_V\_YVISCFLUX} ({\em mom\_v\_yviscflux.F}) |
703 |
|
704 |
$\tau_{11}$, $\tau_{12}$, $\tau_{22}$, $\tau_{22}$: {\bf vF}, {\bf |
705 |
v4F} (local to {\em calc\_mom\_rhs.F}) |
706 |
\end{minipage} } |
707 |
|
708 |
Two types of lateral boundary condition exist for the lateral viscous |
709 |
terms, no-slip and free-slip. |
710 |
|
711 |
The free-slip condition is most convenient to code since it is |
712 |
equivalent to zero-stress on boundaries. Simple masking of the stress |
713 |
components sets them to zero. The fractional open stress is properly |
714 |
handled using the lopped cells. |
715 |
|
716 |
The no-slip condition defines the normal gradient of a tangential flow |
717 |
such that the flow is zero on the boundary. Rather than modify the |
718 |
stresses by using complicated functions of the masks and ``ghost'' |
719 |
points (see \cite{Adcroft+Marshall98}) we add the boundary stresses as |
720 |
an additional source term in cells next to solid boundaries. This has |
721 |
the advantage of being able to cope with ``thin walls'' and also makes |
722 |
the interior stress calculation (code) independent of the boundary |
723 |
conditions. The ``body'' force takes the form: |
724 |
\begin{eqnarray} |
725 |
G_u^{side-drag} & = & |
726 |
\frac{4}{\Delta z_f} \overline{ (1-h_\zeta) \frac{\Delta x_v}{\Delta y_u} }^j |
727 |
\left( A_h c_{12\Delta}(\phi) u - A_4 c_{12\Delta^2}(\phi) \nabla^2 u \right) |
728 |
\\ |
729 |
G_v^{side-drag} & = & |
730 |
\frac{4}{\Delta z_f} \overline{ (1-h_\zeta) \frac{\Delta y_u}{\Delta x_v} }^i |
731 |
\left( A_h c_{21\Delta}(\phi) v - A_4 c_{21\Delta^2}(\phi) \nabla^2 v \right) |
732 |
\end{eqnarray} |
733 |
|
734 |
In fact, the above discretization is not quite complete because it |
735 |
assumes that the bathymetry at velocity points is deeper than at |
736 |
neighbouring vorticity points, e.g. $1-h_w < 1-h_\zeta$ |
737 |
|
738 |
\fbox{ \begin{minipage}{4.75in} |
739 |
{\em S/R MOM\_U\_SIDEDRAG} ({\em mom\_u\_sidedrag.F}) |
740 |
|
741 |
{\em S/R MOM\_V\_SIDEDRAG} ({\em mom\_v\_sidedrag.F}) |
742 |
|
743 |
$G_u^{side-drag}$, $G_v^{side-drag}$: {\bf vF} (local to {\em calc\_mom\_rhs.F}) |
744 |
\end{minipage} } |
745 |
|
746 |
|
747 |
\subsubsection{Vertical dissipation} |
748 |
|
749 |
Vertical viscosity terms are discretized with only partial adherence |
750 |
to the variable grid lengths introduced by the finite volume |
751 |
formulation. This reduces the formal accuracy of these terms to just |
752 |
first order but only next to boundaries; exactly where other terms |
753 |
appear such as linar and quadratic bottom drag. |
754 |
\begin{eqnarray} |
755 |
G_u^{v-diss} & = & |
756 |
\frac{1}{\Delta r_f h_w} \delta_k \tau_{13} \\ |
757 |
G_v^{v-diss} & = & |
758 |
\frac{1}{\Delta r_f h_s} \delta_k \tau_{23} \\ |
759 |
G_w^{v-diss} & = & \epsilon_{nh} |
760 |
\frac{1}{\Delta r_f h_d} \delta_k \tau_{33} |
761 |
\end{eqnarray} |
762 |
represents the general discrete form of the vertical dissipation terms. |
763 |
|
764 |
In the interior the vertical stresses are discretized: |
765 |
\begin{eqnarray} |
766 |
\tau_{13} & = & A_v \frac{1}{\Delta r_c} \delta_k u \\ |
767 |
\tau_{23} & = & A_v \frac{1}{\Delta r_c} \delta_k v \\ |
768 |
\tau_{33} & = & A_v \frac{1}{\Delta r_f} \delta_k w |
769 |
\end{eqnarray} |
770 |
It should be noted that in the non-hydrostatic form, the stress tensor |
771 |
is even less consistent than for the hydrostatic (see Wazjowicz |
772 |
\cite{Waojz}). It is well known how to do this properly (see Griffies |
773 |
\cite{Griffies}) and is on the list of to-do's. |
774 |
|
775 |
\fbox{ \begin{minipage}{4.75in} |
776 |
{\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F}) |
777 |
|
778 |
{\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F}) |
779 |
|
780 |
$\tau_{13}$: {\bf urf} (local to {\em calc\_mom\_rhs.F}) |
781 |
|
782 |
$\tau_{23}$: {\bf vrf} (local to {\em calc\_mom\_rhs.F}) |
783 |
\end{minipage} } |
784 |
|
785 |
|
786 |
As for the lateral viscous terms, the free-slip condition is |
787 |
equivalent to simply setting the stress to zero on boundaries. The |
788 |
no-slip condition is implemented as an additional term acting on top |
789 |
of the interior and free-slip stresses. Bottom drag represents |
790 |
additional friction, in addition to that imposed by the no-slip |
791 |
condition at the bottom. The drag is cast as a stress expressed as a |
792 |
linear or quadratic function of the mean flow in the layer above the |
793 |
topography: |
794 |
\begin{eqnarray} |
795 |
\tau_{13}^{bottom-drag} & = & |
796 |
\left( |
797 |
2 A_v \frac{1}{\Delta r_c} |
798 |
+ r_b |
799 |
+ C_d \sqrt{ \overline{2 KE}^i } |
800 |
\right) u \\ |
801 |
\tau_{23}^{bottom-drag} & = & |
802 |
\left( |
803 |
2 A_v \frac{1}{\Delta r_c} |
804 |
+ r_b |
805 |
+ C_d \sqrt{ \overline{2 KE}^j } |
806 |
\right) v |
807 |
\end{eqnarray} |
808 |
where these terms are only evaluated immediately above topography. |
809 |
$r_b$ ({\bf bottomDragLinear}) has units of $m s^{-1}$ and a typical value |
810 |
of the order 0.0002 $m s^{-1}$. $C_d$ ({\bf bottomDragQuadratic}) is |
811 |
dimensionless with typical values in the range 0.001--0.003. |
812 |
|
813 |
\fbox{ \begin{minipage}{4.75in} |
814 |
{\em S/R MOM\_U\_BOTTOMDRAG} ({\em mom\_u\_bottomdrag.F}) |
815 |
|
816 |
{\em S/R MOM\_V\_BOTTOMDRAG} ({\em mom\_v\_bottomdrag.F}) |
817 |
|
818 |
$\tau_{13}^{bottom-drag}$, $\tau_{23}^{bottom-drag}$: {\bf vf} (local to {\em calc\_mom\_rhs.F}) |
819 |
\end{minipage} } |
820 |
|
821 |
|
822 |
|
823 |
|
824 |
|
825 |
\subsection{Tracer equations} |
826 |
|
827 |
The tracer equations are discretized consistantly with the continuity |
828 |
equation to facilitate conservation properties analogous to the |
829 |
continuum: |
830 |
\begin{equation} |
831 |
{\cal A}_c \Delta r_f h_c \partial_\theta |
832 |
+ \delta_i U \overline{ \theta }^i |
833 |
+ \delta_j V \overline{ \theta }^j |
834 |
+ \delta_k W \overline{ \theta }^k |
835 |
= {\cal A}_c \Delta r_f h_c {\cal S}_\theta + \theta {\cal A}_c \delta_k (P-E)_{r=0} |
836 |
\end{equation} |
837 |
The quantities $U$, $V$ and $W$ are volume fluxes defined: |
838 |
\marginpar{$U$: {\bf uTrans} } |
839 |
\marginpar{$V$: {\bf vTrans} } |
840 |
\marginpar{$W$: {\bf rTrans} } |
841 |
\begin{eqnarray} |
842 |
U & = & \Delta y_g \Delta r_f h_w u \\ |
843 |
V & = & \Delta x_g \Delta r_f h_s v \\ |
844 |
W & = & {\cal A}_c w |
845 |
\end{eqnarray} |
846 |
${\cal S}$ represents the ``parameterized'' SGS processes and |
847 |
physics associated with the tracer. For instance, potential |
848 |
temperature equation in the ocean has is forced by surface and |
849 |
partially penetrating heat fluxes: |
850 |
\begin{equation} |
851 |
{\cal A}_c \Delta r_f h_c {\cal S}_\theta = \frac{1}{c_p \rho_o} \delta_k {\cal A}_c {\cal Q} |
852 |
\end{equation} |
853 |
while the salt equation has no real sources, ${\cal S}=0$, which |
854 |
leaves just the $P-E$ term. |
855 |
|
856 |
The continuity equation can be recovered by setting ${\cal Q}=0$ and |
857 |
$\theta=1$. The term $\theta (P-E)_{r=0}$ is required to retain local |
858 |
conservation of $\theta$. Global conservation is not possible using |
859 |
the flux-form (as here) and a linearized free-surface |
860 |
(\cite{Griffies00,Campin02}). |
861 |
|
862 |
|
863 |
|
864 |
|
865 |
\subsection{Derivation of discrete energy conservation} |
866 |
|
867 |
These discrete equations conserve kinetic plus potential energy using the |
868 |
following definitions: |
869 |
\begin{equation} |
870 |
KE = \frac{1}{2} \left( \overline{ u^2 }^i + \overline{ v^2 }^j + |
871 |
\epsilon_{nh} \overline{ w^2 }^k \right) |
872 |
\end{equation} |
873 |
|
874 |
|
875 |
\subsection{Vector invariant momentum equations} |
876 |
|
877 |
The finite volume method lends itself to describing the continuity and |
878 |
tracer equations in curvilinear coordinate systems but the appearance |
879 |
of new metric terms in the flux-form momentum equations makes |
880 |
generalizing them far from elegant. The vector invariant form of the |
881 |
momentum equations are exactly that; invariant under coordinate |
882 |
transformations. |
883 |
|
884 |
The non-hydrostatic vector invariant equations read: |
885 |
\begin{equation} |
886 |
\partial_t \vec{v} + ( 2\vec{\Omega} + \vec{\zeta}) \wedge \vec{v} |
887 |
- b \hat{r} |
888 |
+ \vec{\nabla} B = \vec{\nabla} \cdot \vec{\bf \tau} |
889 |
\end{equation} |
890 |
which describe motions in any orthogonal curvilinear coordinate |
891 |
system. Here, $B$ is the Bernoulli function and $\vec{\zeta}=\nabla |
892 |
\wedge \vec{v}$ is the vorticity vector. We can take advantage of the |
893 |
elegance of these equations when discretizing them and use the |
894 |
discrete definitions of the grad, curl and divergence operators to |
895 |
satisfy constraints. We can also consider the analogy to forming |
896 |
derived equations, such as the vorticity equation, and examine how the |
897 |
discretization can be adjusted to give suitable vorticity advection |
898 |
among other things. |
899 |
|
900 |
The underlying algorithm is the same as for the flux form |
901 |
equations. All that has changed is the contents of the ``G's''. For |
902 |
the time-being, only the hydrostatic terms have been coded but we will |
903 |
indicate the points where non-hydrostatic contributions will enter: |
904 |
\begin{eqnarray} |
905 |
G_u & = & G_u^{fv} + G_u^{\zeta_3 v} + G_u^{\zeta_2 w} + G_u^{\partial_x B} |
906 |
+ G_u^{\partial_z \tau^x} + G_u^{h-dissip} + G_u^{v-dissip} \\ |
907 |
G_v & = & G_v^{fu} + G_v^{\zeta_3 u} + G_v^{\zeta_1 w} + G_v^{\partial_y B} |
908 |
+ G_v^{\partial_z \tau^y} + G_v^{h-dissip} + G_v^{v-dissip} \\ |
909 |
G_w & = & G_w^{fu} + G_w^{\zeta_1 v} + G_w^{\zeta_2 u} + G_w^{\partial_z B} |
910 |
+ G_w^{h-dissip} + G_w^{v-dissip} |
911 |
\end{eqnarray} |
912 |
|
913 |
\fbox{ \begin{minipage}{4.75in} |
914 |
{\em S/R CALC\_MOM\_RHS} ({\em pkg/mom\_vecinv/calc\_mom\_rhs.F}) |
915 |
|
916 |
$G_u$: {\bf Gu} ({\em DYNVARS.h}) |
917 |
|
918 |
$G_v$: {\bf Gv} ({\em DYNVARS.h}) |
919 |
|
920 |
$G_w$: {\bf Gw} ({\em DYNVARS.h}) |
921 |
\end{minipage} } |
922 |
|
923 |
\subsubsection{Relative vorticity} |
924 |
|
925 |
The vertical component of relative vorticity is explicitly calculated |
926 |
and use in the discretization. The particular form is crucial for |
927 |
numerical stablility; alternative definitions break the conservation |
928 |
properties of the discrete equations. |
929 |
|
930 |
Relative vorticity is defined: |
931 |
\begin{equation} |
932 |
\zeta_3 = \frac{\Gamma}{A_\zeta} |
933 |
= \frac{1}{{\cal A}_\zeta} ( \delta_i \Delta y_c v - \delta_j \Delta x_c u ) |
934 |
\end{equation} |
935 |
where ${\cal A}_\zeta$ is the area of the vorticity cell presented in |
936 |
the vertical and $\Gamma$ is the circulation about that cell. |
937 |
|
938 |
\fbox{ \begin{minipage}{4.75in} |
939 |
{\em S/R MOM\_VI\_CALC\_RELVORT3} ({\em mom\_vi\_calc\_relvort3.F}) |
940 |
|
941 |
$\zeta_3$: {\bf vort3} (local to {\em calc\_mom\_rhs.F}) |
942 |
\end{minipage} } |
943 |
|
944 |
|
945 |
\subsubsection{Kinetic energy} |
946 |
|
947 |
The kinetic energy, denoted $KE$, is defined: |
948 |
\begin{equation} |
949 |
KE = \frac{1}{2} ( \overline{ u^2 }^i + \overline{ v^2 }^j |
950 |
+ \epsilon_{nh} \overline{ w^2 }^k ) |
951 |
\end{equation} |
952 |
|
953 |
\fbox{ \begin{minipage}{4.75in} |
954 |
{\em S/R MOM\_VI\_CALC\_KE} ({\em mom\_vi\_calc\_ke.F}) |
955 |
|
956 |
$KE$: {\bf KE} (local to {\em calc\_mom\_rhs.F}) |
957 |
\end{minipage} } |
958 |
|
959 |
|
960 |
\subsubsection{Coriolis terms} |
961 |
|
962 |
The potential enstrophy conserving form of the linear Coriolis terms |
963 |
are written: |
964 |
\begin{eqnarray} |
965 |
G_u^{fv} & = & |
966 |
\frac{1}{\Delta x_c} |
967 |
\overline{ \frac{f}{h_\zeta} }^j \overline{ \overline{ \Delta x_g h_s v }^j }^i \\ |
968 |
G_v^{fu} & = & - |
969 |
\frac{1}{\Delta y_c} |
970 |
\overline{ \frac{f}{h_\zeta} }^i \overline{ \overline{ \Delta y_g h_w u }^i }^j |
971 |
\end{eqnarray} |
972 |
Here, the Coriolis parameter $f$ is defined at vorticity (corner) |
973 |
points. |
974 |
\marginpar{$f$: {\bf fCoriG}} |
975 |
\marginpar{$h_\zeta$: {\bf hFacZ}} |
976 |
|
977 |
The potential enstrophy conserving form of the non-linear Coriolis |
978 |
terms are written: |
979 |
\begin{eqnarray} |
980 |
G_u^{\zeta_3 v} & = & |
981 |
\frac{1}{\Delta x_c} |
982 |
\overline{ \frac{\zeta_3}{h_\zeta} }^j \overline{ \overline{ \Delta x_g h_s v }^j }^i \\ |
983 |
G_v^{\zeta_3 u} & = & - |
984 |
\frac{1}{\Delta y_c} |
985 |
\overline{ \frac{\zeta_3}{h_\zeta} }^i \overline{ \overline{ \Delta y_g h_w u }^i }^j |
986 |
\end{eqnarray} |
987 |
\marginpar{$\zeta_3$: {\bf vort3}} |
988 |
|
989 |
The Coriolis terms can also be evaluated together and expressed in |
990 |
terms of absolute vorticity $f+\zeta_3$. The potential enstrophy |
991 |
conserving form using the absolute vorticity is written: |
992 |
\begin{eqnarray} |
993 |
G_u^{fv} + G_u^{\zeta_3 v} & = & |
994 |
\frac{1}{\Delta x_c} |
995 |
\overline{ \frac{f + \zeta_3}{h_\zeta} }^j \overline{ \overline{ \Delta x_g h_s v }^j }^i \\ |
996 |
G_v^{fu} + G_v^{\zeta_3 u} & = & - |
997 |
\frac{1}{\Delta y_c} |
998 |
\overline{ \frac{f + \zeta_3}{h_\zeta} }^i \overline{ \overline{ \Delta y_g h_w u }^i }^j |
999 |
\end{eqnarray} |
1000 |
|
1001 |
\marginpar{Run-time control needs to be added for these options} The |
1002 |
disctinction between using absolute vorticity or relative vorticity is |
1003 |
useful when constructing higher order advection schemes; monotone |
1004 |
advection of relative vorticity behaves differently to monotone |
1005 |
advection of absolute vorticity. Currently the choice of |
1006 |
relative/absolute vorticity, centered/upwind/high order advection is |
1007 |
available only through commented subroutine calls. |
1008 |
|
1009 |
\fbox{ \begin{minipage}{4.75in} |
1010 |
{\em S/R MOM\_VI\_CORIOLIS} ({\em mom\_vi\_coriolis.F}) |
1011 |
|
1012 |
{\em S/R MOM\_VI\_U\_CORIOLIS} ({\em mom\_vi\_u\_coriolis.F}) |
1013 |
|
1014 |
{\em S/R MOM\_VI\_V\_CORIOLIS} ({\em mom\_vi\_v\_coriolis.F}) |
1015 |
|
1016 |
$G_u^{fv}$, $G_u^{\zeta_3 v}$: {\bf uCf} (local to {\em calc\_mom\_rhs.F}) |
1017 |
|
1018 |
$G_v^{fu}$, $G_v^{\zeta_3 u}$: {\bf vCf} (local to {\em calc\_mom\_rhs.F}) |
1019 |
\end{minipage} } |
1020 |
|
1021 |
|
1022 |
\subsubsection{Shear terms} |
1023 |
|
1024 |
The shear terms ($\zeta_2w$ and $\zeta_1w$) are are discretized to |
1025 |
guarantee that no spurious generation of kinetic energy is possible; |
1026 |
the horizontal gradient of Bernoulli function has to be consistent |
1027 |
with the vertical advection of shear: |
1028 |
\marginpar{N-H terms have not been tried!} |
1029 |
\begin{eqnarray} |
1030 |
G_u^{\zeta_2 w} & = & |
1031 |
\frac{1}{ {\cal A}_w \Delta r_f h_w } \overline{ |
1032 |
\overline{ {\cal A}_c w }^i ( \delta_k u - \epsilon_{nh} \delta_j w ) |
1033 |
}^k \\ |
1034 |
G_v^{\zeta_1 w} & = & |
1035 |
\frac{1}{ {\cal A}_s \Delta r_f h_s } \overline{ |
1036 |
\overline{ {\cal A}_c w }^i ( \delta_k u - \epsilon_{nh} \delta_j w ) |
1037 |
}^k |
1038 |
\end{eqnarray} |
1039 |
|
1040 |
\fbox{ \begin{minipage}{4.75in} |
1041 |
{\em S/R MOM\_VI\_U\_VERTSHEAR} ({\em mom\_vi\_u\_vertshear.F}) |
1042 |
|
1043 |
{\em S/R MOM\_VI\_V\_VERTSHEAR} ({\em mom\_vi\_v\_vertshear.F}) |
1044 |
|
1045 |
$G_u^{\zeta_2 w}$: {\bf uCf} (local to {\em calc\_mom\_rhs.F}) |
1046 |
|
1047 |
$G_v^{\zeta_1 w}$: {\bf vCf} (local to {\em calc\_mom\_rhs.F}) |
1048 |
\end{minipage} } |
1049 |
|
1050 |
|
1051 |
|
1052 |
\subsubsection{Gradient of Bernoulli function} |
1053 |
|
1054 |
\begin{eqnarray} |
1055 |
G_u^{\partial_x B} & = & |
1056 |
\frac{1}{\Delta x_c} \delta_i ( \phi' + KE ) \\ |
1057 |
G_v^{\partial_y B} & = & |
1058 |
\frac{1}{\Delta x_y} \delta_j ( \phi' + KE ) |
1059 |
%G_w^{\partial_z B} & = & |
1060 |
%\frac{1}{\Delta r_c} h_c \delta_k ( \phi' + KE ) |
1061 |
\end{eqnarray} |
1062 |
|
1063 |
\fbox{ \begin{minipage}{4.75in} |
1064 |
{\em S/R MOM\_VI\_U\_GRAD\_KE} ({\em mom\_vi\_u\_grad\_ke.F}) |
1065 |
|
1066 |
{\em S/R MOM\_VI\_V\_GRAD\_KE} ({\em mom\_vi\_v\_grad\_ke.F}) |
1067 |
|
1068 |
$G_u^{\partial_x KE}$: {\bf uCf} (local to {\em calc\_mom\_rhs.F}) |
1069 |
|
1070 |
$G_v^{\partial_y KE}$: {\bf vCf} (local to {\em calc\_mom\_rhs.F}) |
1071 |
\end{minipage} } |
1072 |
|
1073 |
|
1074 |
|
1075 |
\subsubsection{Horizontal dissipation} |
1076 |
|
1077 |
The horizontal divergence, a complimentary quantity to relative |
1078 |
vorticity, is used in parameterizing the Reynolds stresses and is |
1079 |
discretized: |
1080 |
\begin{equation} |
1081 |
D = \frac{1}{{\cal A}_c h_c} ( |
1082 |
\delta_i \Delta y_g h_w u |
1083 |
+ \delta_j \Delta x_g h_s v ) |
1084 |
\end{equation} |
1085 |
|
1086 |
\fbox{ \begin{minipage}{4.75in} |
1087 |
{\em S/R MOM\_VI\_CALC\_HDIV} ({\em mom\_vi\_calc\_hdiv.F}) |
1088 |
|
1089 |
$D$: {\bf hDiv} (local to {\em calc\_mom\_rhs.F}) |
1090 |
\end{minipage} } |
1091 |
|
1092 |
|
1093 |
\subsubsection{Horizontal dissipation} |
1094 |
|
1095 |
The following discretization of horizontal dissipation conserves |
1096 |
potential vorticity (thickness weighted relative vorticity) and |
1097 |
divergence and dissipates energy, enstrophy and divergence squared: |
1098 |
\begin{eqnarray} |
1099 |
G_u^{h-dissip} & = & |
1100 |
\frac{1}{\Delta x_c} \delta_i ( A_D D - A_{D4} D^*) |
1101 |
- \frac{1}{\Delta y_u h_w} \delta_j h_\zeta ( A_\zeta \zeta - A_{\zeta4} \zeta^* ) |
1102 |
\\ |
1103 |
G_v^{h-dissip} & = & |
1104 |
\frac{1}{\Delta x_v h_s} \delta_i h_\zeta ( A_\zeta \zeta - A_\zeta \zeta^* ) |
1105 |
+ \frac{1}{\Delta y_c} \delta_j ( A_D D - A_{D4} D^* ) |
1106 |
\end{eqnarray} |
1107 |
where |
1108 |
\begin{eqnarray} |
1109 |
D^* & = & \frac{1}{{\cal A}_c h_c} ( |
1110 |
\delta_i \Delta y_g h_w \nabla^2 u |
1111 |
+ \delta_j \Delta x_g h_s \nabla^2 v ) \\ |
1112 |
\zeta^* & = & \frac{1}{{\cal A}_\zeta} ( |
1113 |
\delta_i \Delta y_c \nabla^2 v |
1114 |
- \delta_j \Delta x_c \nabla^2 u ) |
1115 |
\end{eqnarray} |
1116 |
|
1117 |
\fbox{ \begin{minipage}{4.75in} |
1118 |
{\em S/R MOM\_VI\_HDISSIP} ({\em mom\_vi\_hdissip.F}) |
1119 |
|
1120 |
$G_u^{h-dissip}$: {\bf uDiss} (local to {\em calc\_mom\_rhs.F}) |
1121 |
|
1122 |
$G_v^{h-dissip}$: {\bf vDiss} (local to {\em calc\_mom\_rhs.F}) |
1123 |
\end{minipage} } |
1124 |
|
1125 |
|
1126 |
\subsubsection{Vertical dissipation} |
1127 |
|
1128 |
Currently, this is exactly the same code as the flux form equations. |
1129 |
\begin{eqnarray} |
1130 |
G_u^{v-diss} & = & |
1131 |
\frac{1}{\Delta r_f h_w} \delta_k \tau_{13} \\ |
1132 |
G_v^{v-diss} & = & |
1133 |
\frac{1}{\Delta r_f h_s} \delta_k \tau_{23} |
1134 |
\end{eqnarray} |
1135 |
represents the general discrete form of the vertical dissipation terms. |
1136 |
|
1137 |
In the interior the vertical stresses are discretized: |
1138 |
\begin{eqnarray} |
1139 |
\tau_{13} & = & A_v \frac{1}{\Delta r_c} \delta_k u \\ |
1140 |
\tau_{23} & = & A_v \frac{1}{\Delta r_c} \delta_k v |
1141 |
\end{eqnarray} |
1142 |
|
1143 |
\fbox{ \begin{minipage}{4.75in} |
1144 |
{\em S/R MOM\_U\_RVISCLFUX} ({\em mom\_u\_rviscflux.F}) |
1145 |
|
1146 |
{\em S/R MOM\_V\_RVISCLFUX} ({\em mom\_v\_rviscflux.F}) |
1147 |
|
1148 |
$\tau_{13}$: {\bf urf} (local to {\em calc\_mom\_rhs.F}) |
1149 |
|
1150 |
$\tau_{23}$: {\bf vrf} (local to {\em calc\_mom\_rhs.F}) |
1151 |
\end{minipage} } |