8 |
centered finite difference) in the fluid interior but allows |
centered finite difference) in the fluid interior but allows |
9 |
boundaries to intersect a regular grid allowing a more accurate |
boundaries to intersect a regular grid allowing a more accurate |
10 |
representation of the position of the boundary. We treat the |
representation of the position of the boundary. We treat the |
11 |
horizontal and veritical directions as seperable and thus slightly |
horizontal and veritical directions as seperable and differently. |
|
differently. |
|
12 |
|
|
13 |
Initialization of grid data is controlled by subroutine {\em |
\input{part2/notation} |
|
INI\_GRID} which in calls {\em INI\_VERTICAL\_GRID} to initialize the |
|
|
vertical grid, and then either of {\em INI\_CARTESIAN\_GRID}, {\em |
|
|
INI\_SPHERICAL\_POLAR\_GRID} or {\em INI\_CURV\-ILINEAR\_GRID} to |
|
|
initialize the horizontal grid for cartesian, spherical-polar or |
|
|
curvilinear coordinates respectively. |
|
|
|
|
|
The reciprocals of all grid quantities are pre-calculated and this is |
|
|
done in subroutine {\em INI\_MASKS\_ETC} which is called later by |
|
|
subroutine {\em INITIALIZE\_FIXED}. |
|
|
|
|
|
All grid descriptors are global arrays and stored in common blocks in |
|
|
{\em GRID.h} and a generally declared as {\em \_RS}. |
|
|
|
|
|
\fbox{ \begin{minipage}{4.75in} |
|
|
{\em S/R INI\_GRID} ({\em model/src/ini\_grid.F}) |
|
|
|
|
|
{\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F}) |
|
|
|
|
|
grid data: ({\em model/inc/GRID.h}) |
|
|
\end{minipage} } |
|
14 |
|
|
15 |
|
|
16 |
\subsection{The finite volume method: finite volumes versus finite difference} |
\subsection{The finite volume method: finite volumes versus finite difference} |
67 |
\subsection{C grid staggering of variables} |
\subsection{C grid staggering of variables} |
68 |
|
|
69 |
\begin{figure} |
\begin{figure} |
70 |
\centerline{ \resizebox{!}{2in}{ \includegraphics{part2/cgrid3d.eps}} } |
\begin{center} |
71 |
|
\resizebox{!}{2in}{ \includegraphics{part2/cgrid3d.eps}} |
72 |
|
\end{center} |
73 |
\caption{Three dimensional staggering of velocity components. This |
\caption{Three dimensional staggering of velocity components. This |
74 |
facilitates the natural discretization of the continuity and tracer |
facilitates the natural discretization of the continuity and tracer |
75 |
equations. } |
equations. } |
89 |
|
|
90 |
|
|
91 |
|
|
92 |
|
\subsection{Grid initialization and data} |
93 |
|
|
94 |
|
Initialization of grid data is controlled by subroutine {\em |
95 |
|
INI\_GRID} which in calls {\em INI\_VERTICAL\_GRID} to initialize the |
96 |
|
vertical grid, and then either of {\em INI\_CARTESIAN\_GRID}, {\em |
97 |
|
INI\_SPHERICAL\_POLAR\_GRID} or {\em INI\_CURV\-ILINEAR\_GRID} to |
98 |
|
initialize the horizontal grid for cartesian, spherical-polar or |
99 |
|
curvilinear coordinates respectively. |
100 |
|
|
101 |
|
The reciprocals of all grid quantities are pre-calculated and this is |
102 |
|
done in subroutine {\em INI\_MASKS\_ETC} which is called later by |
103 |
|
subroutine {\em INITIALIZE\_FIXED}. |
104 |
|
|
105 |
|
All grid descriptors are global arrays and stored in common blocks in |
106 |
|
{\em GRID.h} and a generally declared as {\em \_RS}. |
107 |
|
|
108 |
|
\fbox{ \begin{minipage}{4.75in} |
109 |
|
{\em S/R INI\_GRID} ({\em model/src/ini\_grid.F}) |
110 |
|
|
111 |
|
{\em S/R INI\_MASKS\_ETC} ({\em model/src/ini\_masks\_etc.F}) |
112 |
|
|
113 |
|
grid data: ({\em model/inc/GRID.h}) |
114 |
|
\end{minipage} } |
115 |
|
|
116 |
|
|
117 |
\subsection{Horizontal grid} |
\subsection{Horizontal grid} |
118 |
|
|
119 |
\begin{figure} |
\begin{figure} |
120 |
\centerline{ \begin{tabular}{cc} |
\begin{center} |
121 |
|
\begin{tabular}{cc} |
122 |
\raisebox{1.5in}{a)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Ac.eps}} |
\raisebox{1.5in}{a)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Ac.eps}} |
123 |
& \raisebox{1.5in}{b)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Az.eps}} |
& \raisebox{1.5in}{b)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Az.eps}} |
124 |
\\ |
\\ |
125 |
\raisebox{1.5in}{c)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Au.eps}} |
\raisebox{1.5in}{c)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Au.eps}} |
126 |
& \raisebox{1.5in}{d)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Av.eps}} |
& \raisebox{1.5in}{d)}\resizebox{!}{2in}{ \includegraphics{part2/hgrid-Av.eps}} |
127 |
\end{tabular} } |
\end{tabular} |
128 |
|
\end{center} |
129 |
\caption{ |
\caption{ |
130 |
Staggering of horizontal grid descriptors (lengths and areas). The |
Staggering of horizontal grid descriptors (lengths and areas). The |
131 |
grid lines indicate the tracer cell boundaries and are the reference |
grid lines indicate the tracer cell boundaries and are the reference |
317 |
\subsection{Vertical grid} |
\subsection{Vertical grid} |
318 |
|
|
319 |
\begin{figure} |
\begin{figure} |
320 |
\centerline{ \begin{tabular}{cc} |
\begin{center} |
321 |
|
\begin{tabular}{cc} |
322 |
\raisebox{4in}{a)} \resizebox{!}{4in}{ |
\raisebox{4in}{a)} \resizebox{!}{4in}{ |
323 |
\includegraphics{part2/vgrid-cellcentered.eps}} & \raisebox{4in}{b)} |
\includegraphics{part2/vgrid-cellcentered.eps}} & \raisebox{4in}{b)} |
324 |
\resizebox{!}{4in}{ \includegraphics{part2/vgrid-accurate.eps}} |
\resizebox{!}{4in}{ \includegraphics{part2/vgrid-accurate.eps}} |
325 |
\end{tabular} } |
\end{tabular} |
326 |
|
\end{center} |
327 |
\caption{Two versions of the vertical grid. a) The cell centered |
\caption{Two versions of the vertical grid. a) The cell centered |
328 |
approach where the interface depths are specified and the tracer |
approach where the interface depths are specified and the tracer |
329 |
points centered in between the interfaces. b) The interface centered |
points centered in between the interfaces. b) The interface centered |
388 |
\subsection{Topography: partially filled cells} |
\subsection{Topography: partially filled cells} |
389 |
|
|
390 |
\begin{figure} |
\begin{figure} |
391 |
\centerline{ |
\begin{center} |
392 |
\resizebox{4.5in}{!}{\includegraphics{part2/vgrid-xz.eps}} |
\resizebox{4.5in}{!}{\includegraphics{part2/vgrid-xz.eps}} |
393 |
} |
\end{center} |
394 |
\caption{ |
\caption{ |
395 |
A schematic of the x-r plane showing the location of the |
A schematic of the x-r plane showing the location of the |
396 |
non-dimensional fractions $h_c$ and $h_w$. The physical thickness of a |
non-dimensional fractions $h_c$ and $h_w$. The physical thickness of a |
455 |
\end{minipage} } |
\end{minipage} } |
456 |
|
|
457 |
|
|
458 |
\subsection{Continuity and horizontal pressure gradient terms} |
\section{Continuity and horizontal pressure gradient terms} |
459 |
|
|
460 |
The core algorithm is based on the ``C grid'' discretization of the |
The core algorithm is based on the ``C grid'' discretization of the |
461 |
continuity equation which can be summarized as: |
continuity equation which can be summarized as: |
462 |
\begin{eqnarray} |
\begin{eqnarray} |
463 |
\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' \\ |
\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} \\ |
464 |
\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' \\ |
\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} \\ |
465 |
\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}' \\ |
\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} \\ |
466 |
\delta_i \Delta y_g \Delta r_f h_w u + |
\delta_i \Delta y_g \Delta r_f h_w u + |
467 |
\delta_j \Delta x_g \Delta r_f h_s v + |
\delta_j \Delta x_g \Delta r_f h_s v + |
468 |
\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} |
485 |
The last equation, the discrete continuity equation, can be summed in |
The last equation, the discrete continuity equation, can be summed in |
486 |
the vertical to yeild the free-surface equation: |
the vertical to yeild the free-surface equation: |
487 |
\begin{equation} |
\begin{equation} |
488 |
{\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 = |
{\cal A}_c \partial_t \eta + \delta_i \sum_k \Delta y_g \Delta r_f h_w |
489 |
{\cal A}_c(P-E)_{r=0} |
u + \delta_j \sum_k \Delta x_g \Delta r_f h_s v = {\cal |
490 |
|
A}_c(P-E)_{r=0} \label{eq:discrete-freesurface} |
491 |
\end{equation} |
\end{equation} |
492 |
The source term $P-E$ on the rhs of continuity accounts for the local |
The source term $P-E$ on the rhs of continuity accounts for the local |
493 |
addition of volume due to excess precipitation and run-off over |
addition of volume due to excess precipitation and run-off over |
494 |
evaporation and only enters the top-level of the {\em ocean} model. |
evaporation and only enters the top-level of the {\em ocean} model. |
495 |
|
|
496 |
\subsection{Hydrostatic balance} |
\section{Hydrostatic balance} |
497 |
|
|
498 |
The vertical momentum equation has the hydrostatic or |
The vertical momentum equation has the hydrostatic or |
499 |
quasi-hydrostatic balance on the right hand side. This discretization |
quasi-hydrostatic balance on the right hand side. This discretization |
507 |
\begin{equation} |
\begin{equation} |
508 |
\epsilon_{nh} \partial_t w |
\epsilon_{nh} \partial_t w |
509 |
+ g \overline{\rho'}^k + \frac{1}{\Delta z} \delta_k \Phi_h' = \ldots |
+ g \overline{\rho'}^k + \frac{1}{\Delta z} \delta_k \Phi_h' = \ldots |
510 |
|
\label{eq:discrete_hydro_ocean} |
511 |
\end{equation} |
\end{equation} |
512 |
|
|
513 |
In the atmosphere, using p-coordinates, hydrostatic balance is |
In the atmosphere, using p-coordinates, hydrostatic balance is |
514 |
discretized: |
discretized: |
515 |
\begin{equation} |
\begin{equation} |
516 |
\overline{\theta'}^k + \frac{1}{\Delta \Pi} \delta_k \Phi_h' = 0 |
\overline{\theta'}^k + \frac{1}{\Delta \Pi} \delta_k \Phi_h' = 0 |
517 |
|
\label{eq:discrete_hydro_atmos} |
518 |
\end{equation} |
\end{equation} |
519 |
where $\Delta \Pi$ is the difference in Exner function between the |
where $\Delta \Pi$ is the difference in Exner function between the |
520 |
pressure points. The non-hydrostatic equations are not available in |
pressure points. The non-hydrostatic equations are not available in |