/[MITgcm]/manual/s_algorithm/text/time_stepping.tex
ViewVC logotype

Diff of /manual/s_algorithm/text/time_stepping.tex

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

revision 1.6 by adcroft, Wed Sep 26 20:19:52 2001 UTC revision 1.16 by edhill, Thu Aug 7 18:27:52 2003 UTC
# Line 1  Line 1 
1  % $Header$  % $Header$
2  % $Name$  % $Name$
3    
4  The convention used in this section is as follows:  This chapter lays out the numerical schemes that are
5  Time is ``discretized'' using a time step $\Delta t$    employed in the core MITgcm algorithm. Whenever possible
6  and $\Phi^n$ refers to the variable $\Phi$  links are made to actual program code in the MITgcm implementation.
7  at time $t = n \Delta t$ . We use the notation $\Phi^{(n)}$  The chapter begins with a discussion of the temporal discretization
8  when time interpolation is required to estimate the value of $\phi$  used in MITgcm. This discussion is followed by sections that
9  at the time $n \Delta t$.  describe the spatial discretization. The schemes employed for momentum
10    terms are described first, afterwards the schemes that apply to
11  \section{Time integration}  passive and dynamically active tracers are described.
12    
13  The discretization in time of the model equations (cf section I )  
14  does not depend of the discretization in space of each  \section{Time-stepping}
15  term and so  this section can be read independently.  The equations of motion integrated by the model involve four
16    prognostic equations for flow, $u$ and $v$, temperature, $\theta$, and
17  The continuous form of the model equations is:  salt/moisture, $S$, and three diagnostic equations for vertical flow,
18    $w$, density/buoyancy, $\rho$/$b$, and pressure/geo-potential,
19    $\phi_{hyd}$. In addition, the surface pressure or height may by
20    described by either a prognostic or diagnostic equation and if
21    non-hydrostatics terms are included then a diagnostic equation for
22    non-hydrostatic pressure is also solved. The combination of prognostic
23    and diagnostic equations requires a model algorithm that can march
24    forward prognostic variables while satisfying constraints imposed by
25    diagnostic equations.
26    
27    Since the model comes in several flavors and formulation, it would be
28    confusing to present the model algorithm exactly as written into code
29    along with all the switches and optional terms. Instead, we present
30    the algorithm for each of the basic formulations which are:
31    \begin{enumerate}
32    \item the semi-implicit pressure method for hydrostatic equations
33    with a rigid-lid, variables co-located in time and with
34    Adams-Bashforth time-stepping, \label{it:a}
35    \item as \ref{it:a}. but with an implicit linear free-surface, \label{it:b}
36    \item as \ref{it:a}. or \ref{it:b}. but with variables staggered in time,
37    \label{it:c}
38    \item as \ref{it:a}. or \ref{it:b}. but with non-hydrostatic terms included,
39    \item as \ref{it:b}. or \ref{it:c}. but with non-linear free-surface.
40    \end{enumerate}
41    
42    In all the above configurations it is also possible to substitute the
43    Adams-Bashforth with an alternative time-stepping scheme for terms
44    evaluated explicitly in time. Since the over-arching algorithm is
45    independent of the particular time-stepping scheme chosen we will
46    describe first the over-arching algorithm, known as the pressure
47    method, with a rigid-lid model in section
48    \ref{sect:pressure-method-rigid-lid}. This algorithm is essentially
49    unchanged, apart for some coefficients, when the rigid lid assumption
50    is replaced with a linearized implicit free-surface, described in
51    section \ref{sect:pressure-method-linear-backward}. These two flavors
52    of the pressure-method encompass all formulations of the model as it
53    exists today. The integration of explicit in time terms is out-lined
54    in section \ref{sect:adams-bashforth} and put into the context of the
55    overall algorithm in sections \ref{sect:adams-bashforth-sync} and
56    \ref{sect:adams-bashforth-staggered}. Inclusion of non-hydrostatic
57    terms requires applying the pressure method in three dimensions
58    instead of two and this algorithm modification is described in section
59    \ref{sect:non-hydrostatic}. Finally, the free-surface equation may be
60    treated more exactly, including non-linear terms, and this is
61    described in section \ref{sect:nonlinear-freesurface}.
62    
63    
64    \section{Pressure method with rigid-lid} \label{sect:pressure-method-rigid-lid}
65    
66    \begin{figure}
67    \begin{center}
68    \resizebox{4.0in}{!}{\includegraphics{part2/pressure-method-rigid-lid.eps}}
69    \end{center}
70    \caption{
71    A schematic of the evolution in time of the pressure method
72    algorithm. A prediction for the flow variables at time level $n+1$ is
73    made based only on the explicit terms, $G^{(n+^1/_2)}$, and denoted
74    $u^*$, $v^*$. Next, a pressure field is found such that $u^{n+1}$,
75    $v^{n+1}$ will be non-divergent. Conceptually, the $*$ quantities
76    exist at time level $n+1$ but they are intermediate and only
77    temporary.}
78    \label{fig:pressure-method-rigid-lid}
79    \end{figure}
80    
81    \begin{figure}
82    \begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing}
83    aaa \= aaa \= aaa \= aaa \= aaa \= aaa \kill
84    \filelink{FORWARD\_STEP}{model-src-forward_step.F} \\
85    \> DYNAMICS \\
86    \>\> TIMESTEP \` $u^*$,$v^*$ (\ref{eq:ustar-rigid-lid},\ref{eq:vstar-rigid-lid}) \\
87    \> SOLVE\_FOR\_PRESSURE \\
88    \>\> CALC\_DIV\_GHAT \` $H\widehat{u^*}$,$H\widehat{v^*}$ (\ref{eq:elliptic}) \\
89    \>\> CG2D \` $\eta^{n+1}$ (\ref{eq:elliptic}) \\
90    \> THE\_CORRECTION\_STEP  \\
91    \>\> CALC\_GRAD\_PHI\_SURF \` $\nabla \eta^{n+1}$ \\
92    \>\> CORRECTION\_STEP \` $u^{n+1}$,$v^{n+1}$ (\ref{eq:un+1-rigid-lid},\ref{eq:vn+1-rigid-lid})
93    \end{tabbing} \end{minipage} } \end{center}
94    \caption{Calling tree for the pressure method algorithm
95      (\filelink{FORWARD\_STEP}{model-src-forward_step.F})}
96    \label{fig:call-tree-pressure-method}
97    \end{figure}
98    
99    The horizontal momentum and continuity equations for the ocean
100    (\ref{eq:ocean-mom} and \ref{eq:ocean-cont}), or for the atmosphere
101    (\ref{eq:atmos-mom} and \ref{eq:atmos-cont}), can be summarized by:
102  \begin{eqnarray}  \begin{eqnarray}
103  \partial_t \theta & = & G_\theta  \partial_t u + g \partial_x \eta & = & G_u \\
104  \label{eq-tCsC-theta}  \partial_t v + g \partial_y \eta & = & G_v \\
105  \\  \partial_x u + \partial_y v + \partial_z w & = & 0
 \partial_t S & = & G_s  
 \label{eq-tCsC-salt}  
 \\  
 b' & = & b'(\theta,S,r)  
 \\  
 \partial_r \phi'_{hyd} & = & -b'  
 \label{eq-tCsC-hyd}  
 \\  
 \partial_t \vec{\bf v}  
 + {\bf \nabla}_h b_s \eta  
 + \epsilon_{nh} {\bf \nabla}_h \phi'_{nh}  
 & = & \vec{\bf G}_{\vec{\bf v}}  
 - {\bf \nabla}_h \phi'_{hyd}  
 \label{eq-tCsC-Hmom}  
 \\  
 \epsilon_{nh} \frac {\partial{\dot{r}}}{\partial{t}}  
 + \epsilon_{nh} \partial_r \phi'_{nh}  
 & = & \epsilon_{nh} G_{\dot{r}}  
 \label{eq-tCsC-Vmom}  
 \\  
 {\bf \nabla}_h \cdot \vec{\bf v} + \partial_r \dot{r}  
 & = & 0  
 \label{eq-tCsC-cont}  
106  \end{eqnarray}  \end{eqnarray}
107  where  where we are adopting the oceanic notation for brevity. All terms in
108  \begin{eqnarray*}  the momentum equations, except for surface pressure gradient, are
109  G_\theta & = &  encapsulated in the $G$ vector. The continuity equation, when
110  - \vec{\bf v} \cdot {\bf \nabla} \theta + {\cal Q}_\theta  integrated over the fluid depth, $H$, and with the rigid-lid/no normal
111  \\  flow boundary conditions applied, becomes:
112  G_S & = &  \begin{equation}
113  - \vec{\bf v} \cdot {\bf \nabla} S + {\cal Q}_S  \partial_x H \widehat{u} + \partial_y H \widehat{v} = 0
114  \\  \label{eq:rigid-lid-continuity}
115  \vec{\bf G}_{\vec{\bf v}}  \end{equation}
116    Here, $H\widehat{u} = \int_H u dz$ is the depth integral of $u$,
117    similarly for $H\widehat{v}$. The rigid-lid approximation sets $w=0$
118    at the lid so that it does not move but allows a pressure to be
119    exerted on the fluid by the lid. The horizontal momentum equations and
120    vertically integrated continuity equation are be discretized in time
121    and space as follows:
122    \begin{eqnarray}
123    u^{n+1} + \Delta t g \partial_x \eta^{n+1}
124    & = & u^{n} + \Delta t G_u^{(n+1/2)}
125    \label{eq:discrete-time-u}
126    \\
127    v^{n+1} + \Delta t g \partial_y \eta^{n+1}
128    & = & v^{n} + \Delta t G_v^{(n+1/2)}
129    \label{eq:discrete-time-v}
130    \\
131      \partial_x H \widehat{u^{n+1}}
132    + \partial_y H \widehat{v^{n+1}} & = & 0
133    \label{eq:discrete-time-cont-rigid-lid}
134    \end{eqnarray}
135    As written here, terms on the LHS all involve time level $n+1$ and are
136    referred to as implicit; the implicit backward time stepping scheme is
137    being used. All other terms in the RHS are explicit in time. The
138    thermodynamic quantities are integrated forward in time in parallel
139    with the flow and will be discussed later. For the purposes of
140    describing the pressure method it suffices to say that the hydrostatic
141    pressure gradient is explicit and so can be included in the vector
142    $G$.
143    
144    Substituting the two momentum equations into the depth integrated
145    continuity equation eliminates $u^{n+1}$ and $v^{n+1}$ yielding an
146    elliptic equation for $\eta^{n+1}$. Equations
147    \ref{eq:discrete-time-u}, \ref{eq:discrete-time-v} and
148    \ref{eq:discrete-time-cont-rigid-lid} can then be re-arranged as follows:
149    \begin{eqnarray}
150    u^{*} & = & u^{n} + \Delta t G_u^{(n+1/2)} \label{eq:ustar-rigid-lid} \\
151    v^{*} & = & v^{n} + \Delta t G_v^{(n+1/2)} \label{eq:vstar-rigid-lid} \\
152      \partial_x \Delta t g H \partial_x \eta^{n+1}
153    + \partial_y \Delta t g H \partial_y \eta^{n+1}
154  & = &  & = &
155  - \vec{\bf v} \cdot {\bf \nabla} \vec{\bf v}    \partial_x H \widehat{u^{*}}
156  - f \hat{\bf k} \wedge \vec{\bf v}  + \partial_y H \widehat{v^{*}} \label{eq:elliptic}
 + \vec{\cal F}_{\vec{\bf v}}  
157  \\  \\
158  G_{\dot{r}}  u^{n+1} & = & u^{*} - \Delta t g \partial_x \eta^{n+1} \label{eq:un+1-rigid-lid}\\
159  & = &  v^{n+1} & = & v^{*} - \Delta t g \partial_y \eta^{n+1} \label{eq:vn+1-rigid-lid}
160  - \vec{\bf v} \cdot {\bf \nabla} \dot{r}  \end{eqnarray}
161  + {\cal F}_{\dot{r}}  Equations \ref{eq:ustar-rigid-lid} to \ref{eq:vn+1-rigid-lid}, solved
162  \end{eqnarray*}  sequentially, represent the pressure method algorithm used in the
163  The exact form of all the ``{\it G}''s terms is described in the next  model. The essence of the pressure method lies in the fact that any
164  section \ref{sect:discrete}. Here its sufficient to mention that they contains  explicit prediction for the flow would lead to a divergence flow field
165  all the RHS terms except the pressure/geo-potential terms.  so a pressure field must be found that keeps the flow non-divergent
166    over each step of the integration. The particular location in time of
167  The switch $\epsilon_{nh}$ allows one to activate the non-hydrostatic  the pressure field is somewhat ambiguous; in
168  mode ($\epsilon_{nh}=1$) for the ocean model. Otherwise, in the  Fig.~\ref{fig:pressure-method-rigid-lid} we depicted as co-located
169  hydrostatic limit $\epsilon_{nh} = 0$ and equation \ref{eq-tCsC-Vmom}  with the future flow field (time level $n+1$) but it could equally
170  is not used.  have been drawn as staggered in time with the flow.
171    
172  As discussed in section \ref{sect:1.3.6.2}, the equation for $\eta$ is  The correspondence to the code is as follows:
173  obtained by integrating the continuity equation over the entire depth  \begin{itemize}
174  of the fluid, from $R_{fixed}(x,y)$ up to $R_o(x,y)$. The linear free  \item
175  surface evolves according to:  the prognostic phase, equations \ref{eq:ustar-rigid-lid} and \ref{eq:vstar-rigid-lid},
176  \begin{eqnarray}  stepping forward $u^n$ and $v^n$ to $u^{*}$ and $v^{*}$ is coded in
177  \epsilon_{fs} \partial_t \eta =  \filelink{TIMESTEP()}{model-src-timestep.F}
178  \left. \dot{r} \right|_{r=r_{surf}} + \epsilon_{fw} (P-E) =  \item
179  - {\bf \nabla} \cdot \int_{R_{fixed}}^{R_o} \vec{\bf v} dr  the vertical integration, $H \widehat{u^*}$ and $H
180  + \epsilon_{fw} (P-E)  \widehat{v^*}$, divergence and inversion of the elliptic operator in
181  \label{eq-tCsC-eta}  equation \ref{eq:elliptic} is coded in
182  \end{eqnarray}  \filelink{SOLVE\_FOR\_PRESSURE()}{model-src-solve_for_pressure.F}
183    \item
184  Here, $\epsilon_{fs}$ is a flag to switch between the free-surface,  finally, the new flow field at time level $n+1$ given by equations
185  $\epsilon_{fs}=1$, and a rigid-lid, $\epsilon_{fs}=0$. The flag  \ref{eq:un+1-rigid-lid} and \ref{eq:vn+1-rigid-lid} is calculated in
186  $\epsilon_{fw}$ determines whether an exchange of fresh water is  \filelink{CORRECTION\_STEP()}{model-src-correction_step.F}.
187  included at the ocean surface (natural BC) ($\epsilon_{fw} = 1$) or  \end{itemize}
188  not ($\epsilon_{fw} = 0$).  The calling tree for these routines is given in
189    Fig.~\ref{fig:call-tree-pressure-method}.
190  The hydrostatic potential is found by integrating (equation  
191  \ref{eq-tCsC-hyd}) with the boundary condition that  
192  $\phi'_{hyd}(r=R_o) = 0$:  
193  \begin{eqnarray*}  \paragraph{Need to discuss implicit viscosity somewhere:}
194  & &  \begin{eqnarray}
195  \int_{r'}^{R_o} \partial_r \phi'_{hyd} dr =  \frac{1}{\Delta t} u^{n+1} - \partial_z A_v \partial_z u^{n+1}
196  \left[ \phi'_{hyd} \right]_{r'}^{R_o} =  + g \partial_x \eta^{n+1} & = & \frac{1}{\Delta t} u^{n} +
197  \int_{r'}^{R_o} - b' dr  G_u^{(n+1/2)}
198  \\  \\
199  \Rightarrow & &  \frac{1}{\Delta t} v^{n+1} - \partial_z A_v \partial_z v^{n+1}
200  \phi'_{hyd}(x,y,r') = \int_{r'}^{R_o} b' dr  + g \partial_y \eta^{n+1} & = & \frac{1}{\Delta t} v^{n} + G_v^{(n+1/2)}
201  \end{eqnarray*}  \end{eqnarray}
202    
 \subsection{General method}  
   
 An overview of the general method is now presented with explicit  
 references to the Fortran code. We often refer to the discretized  
 equations of the model that are detailed in the following sections.  
   
 The general algorithm consist of a ``predictor step'' that computes  
 the forward tendencies ("G" terms") comprising of explicit-in-time  
 terms and the ``first guess'' values (star notation): $\theta^*, S^*,  
 \vec{\bf v}^*$ (and $\dot{r}^*$ in non-hydrostatic mode). This is done  
 in the two routines {\it THERMODYNAMICS} and {\it DYNAMICS}.  
   
 Terms that are integrated implicitly in time are handled at the end of  
 the {\it THERMODYNAMICS} and {\it DYNAMICS} routines. Then the  
 surface pressure and non hydrostatic pressure are solved for in ({\it  
 SOLVE\_FOR\_PRESSURE}).  
   
 Finally, in the ``corrector step'', (routine {\it  
 THE\_CORRECTION\_STEP}) the new values of $u,v,w,\theta,S$ are  
 determined (see details in \ref{sect:II.1.3}).  
   
 At this point, the regular time stepping process is complete. However,  
 after the correction step there are optional adjustments such as  
 convective adjustment or filters (zonal FFT filter, shapiro filter)  
 that can be applied on both momentum and tracer fields, just prior to  
 incrementing the time level to $n+1$.  
   
 Since the pressure solver precision is of the order of the ``target  
 residual'' and can be lower than the the computer truncation error,  
 and also because some filters might alter the divergence part of the  
 flow field, a final evaluation of the surface r anomaly $\eta^{n+1}$  
 is performed in {\it CALC\_EXACT\_ETA}. This ensures exact volume  
 conservation. Note that there is no need for an equivalent  
 non-hydrostatic ``exact conservation'' step, since by default $w$ is  
 already computed after the filters are applied.  
   
 Optional forcing terms (usually part of a physics ``package''), that  
 account for a specific source or sink process (e.g. condensation as a  
 sink of water vapor Q) are generally incorporated in the main  
 algorithm as follows: at the the beginning of the time step, the  
 additional tendencies are computed as a function of the present state  
 (time step $n$) and external forcing; then within the main part of  
 model, only those new tendencies are added to the model variables.  
   
 [more details needed]\\  
   
 The atmospheric physics follows this general scheme.  
   
 [more about C\_grid, A\_grid conversion \& drag term]\\  
203    
204    \section{Pressure method with implicit linear free-surface}
205    \label{sect:pressure-method-linear-backward}
206    
207    The rigid-lid approximation filters out external gravity waves
208    subsequently modifying the dispersion relation of barotropic Rossby
209    waves. The discrete form of the elliptic equation has some zero
210    eigen-values which makes it a potentially tricky or inefficient
211    problem to solve.
212    
213  \subsection{Standard synchronous time stepping}  The rigid-lid approximation can be easily replaced by a linearization
214    of the free-surface equation which can be written:
215  In the standard formulation, the surface pressure is evaluated at time  \begin{equation}
216  step n+1 (an implicit method).  Equations \ref{eq-tCsC-theta} to  \partial_t \eta + \partial_x H \widehat{u} + \partial_y H \widehat{v} = P-E+R
217  \ref{eq-tCsC-cont} are then discretized in time as follows:  \label{eq:linear-free-surface=P-E+R}
218  \begin{eqnarray}  \end{equation}
219  \left[ 1 - \partial_r \kappa_v^\theta \partial_r \right]  which differs from the depth integrated continuity equation with
220  \theta^{n+1} & = & \theta^*  rigid-lid (\ref{eq:rigid-lid-continuity}) by the time-dependent term
221  \label{eq-tDsC-theta}  and fresh-water source term.
222  \\  
223  \left[ 1 - \partial_r \kappa_v^S \partial_r \right]  Equation \ref{eq:discrete-time-cont-rigid-lid} in the rigid-lid
224  S^{n+1} & = & S^*  pressure method is then replaced by the time discretization of
225  \label{eq-tDsC-salt}  \ref{eq:linear-free-surface=P-E+R} which is:
226  \\  \begin{equation}
227  %{b'}^{n} & = & b'(\theta^{n},S^{n},r)  \eta^{n+1}
228  %\partial_r {\phi'_{hyd}}^{n} & = & {-b'}^{n}  + \Delta t \partial_x H \widehat{u^{n+1}}
229  %\\  + \Delta t \partial_y H \widehat{v^{n+1}}
230  {\phi'_{hyd}}^{n} & = & \int_{r'}^{R_o} b'(\theta^{n},S^{n},r) dr  =
231  \label{eq-tDsC-hyd}  \eta^{n}
232  \\  + \Delta t ( P - E + R )
233  \vec{\bf v} ^{n+1}  \label{eq:discrete-time-backward-free-surface}
234  + \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}  \end{equation}
235  + \epsilon_{nh} \Delta t {\bf \nabla} {\phi'_{nh}}^{n+1}  where the use of flow at time level $n+1$ makes the method implicit
236  - \partial_r A_v \partial_r \vec{\bf v}^{n+1}  and backward in time. The is the preferred scheme since it still
237    filters the fast unresolved wave motions by damping them. A centered
238    scheme, such as Crank-Nicholson, would alias the energy of the fast
239    modes onto slower modes of motion.
240    
241    As for the rigid-lid pressure method, equations
242    \ref{eq:discrete-time-u}, \ref{eq:discrete-time-v} and
243    \ref{eq:discrete-time-backward-free-surface} can be re-arranged as follows:
244    \begin{eqnarray}
245    u^{*} & = & u^{n} + \Delta t G_u^{(n+1/2)} \label{eq:ustar-backward-free-surface} \\
246    v^{*} & = & v^{n} + \Delta t G_v^{(n+1/2)} \label{eq:vstar-backward-free-surface} \\
247    \eta^* & = & \epsilon_{fs} \left( \eta^{n} +P-E+R \right)- \Delta t
248      \partial_x H \widehat{u^{*}}
249    + \partial_y H \widehat{v^{*}}
250    \\
251      \partial_x g H \partial_x \eta^{n+1}
252    + \partial_y g H \partial_y \eta^{n+1}
253    - \frac{\epsilon_{fs} \eta^{n+1}}{\Delta t^2}
254  & = &  & = &
255  \vec{\bf v}^*  - \frac{\eta^*}{\Delta t^2}
256  \label{eq-tDsC-Hmom}  \label{eq:elliptic-backward-free-surface}
 \\  
 \epsilon_{fs} {\eta}^{n+1} + \Delta t  
 {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o} \vec{\bf v}^{n+1} dr  
 & = &  
     \epsilon_{fs} {\eta}^{n} + \epsilon_{fw} \Delta_t (P-E)^{n}  
 \nonumber  
257  \\  \\
258  % = \epsilon_{fs} {\eta}^{n} & + & \epsilon_{fw} \Delta_t (P-E)^{n}  u^{n+1} & = & u^{*} - \Delta t g \partial_x \eta^{n+1} \label{eq:un+1-backward-free-surface}\\
259  \label{eq-tDsC-eta}  v^{n+1} & = & v^{*} - \Delta t g \partial_y \eta^{n+1} \label{eq:vn+1-backward-free-surface}
 \\  
 \epsilon_{nh} \left( \dot{r} ^{n+1}  
 + \Delta t \partial_r {\phi'_{nh}} ^{n+1}  
 \right)  
 & = & \epsilon_{nh} \dot{r}^*  
 \label{eq-tDsC-Vmom}  
 \\  
 {\bf \nabla}_h \cdot \vec{\bf v}^{n+1} + \partial_r \dot{r}^{n+1}  
 & = & 0  
 \label{eq-tDsC-cont}  
260  \end{eqnarray}  \end{eqnarray}
261  where  Equations~\ref{eq:ustar-backward-free-surface}
262    to~\ref{eq:vn+1-backward-free-surface}, solved sequentially, represent
263    the pressure method algorithm with a backward implicit, linearized
264    free surface. The method is still formerly a pressure method because
265    in the limit of large $\Delta t$ the rigid-lid method is
266    recovered. However, the implicit treatment of the free-surface allows
267    the flow to be divergent and for the surface pressure/elevation to
268    respond on a finite time-scale (as opposed to instantly). To recover
269    the rigid-lid formulation, we introduced a switch-like parameter,
270    $\epsilon_{fs}$, which selects between the free-surface and rigid-lid;
271    $\epsilon_{fs}=1$ allows the free-surface to evolve; $\epsilon_{fs}=0$
272    imposes the rigid-lid. The evolution in time and location of variables
273    is exactly as it was for the rigid-lid model so that
274    Fig.~\ref{fig:pressure-method-rigid-lid} is still
275    applicable. Similarly, the calling sequence, given in
276    Fig.~\ref{fig:call-tree-pressure-method}, is as for the
277    pressure-method.
278    
279    
280    \section{Explicit time-stepping: Adams-Bashforth}
281    \label{sect:adams-bashforth}
282    
283    In describing the the pressure method above we deferred describing the
284    time discretization of the explicit terms. We have historically used
285    the quasi-second order Adams-Bashforth method for all explicit terms
286    in both the momentum and tracer equations. This is still the default
287    mode of operation but it is now possible to use alternate schemes for
288    tracers (see section \ref{sect:tracer-advection}).
289    
290    \begin{figure}
291    \begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing}
292    aaa \= aaa \= aaa \= aaa \= aaa \= aaa \kill
293    FORWARD\_STEP \\
294    \> THERMODYNAMICS \\
295    \>\> CALC\_GT \\
296    \>\>\> GAD\_CALC\_RHS \` $G_\theta^n = G_\theta( u, \theta^n )$ \\
297    \>\>\> EXTERNAL\_FORCING \` $G_\theta^n = G_\theta^n + {\cal Q}$ \\
298    \>\>\> ADAMS\_BASHFORTH2 \` $G_\theta^{(n+1/2)}$ (\ref{eq:adams-bashforth2}) \\
299    \>\> TIMESTEP\_TRACER \` $\tau^*$ (\ref{eq:taustar}) \\
300    \>\> IMPLDIFF \` $\tau^{(n+1)}$ (\ref{eq:tau-n+1-implicit})
301    \end{tabbing} \end{minipage} } \end{center}
302    \caption{
303    Calling tree for the Adams-Bashforth time-stepping of temperature with
304    implicit diffusion.}
305    \label{fig:call-tree-adams-bashforth}
306    \end{figure}
307    
308    In the previous sections, we summarized an explicit scheme as:
309    \begin{equation}
310    \tau^{*} = \tau^{n} + \Delta t G_\tau^{(n+1/2)}
311    \label{eq:taustar}
312    \end{equation}
313    where $\tau$ could be any prognostic variable ($u$, $v$, $\theta$ or
314    $S$) and $\tau^*$ is an explicit estimate of $\tau^{n+1}$ and would be
315    exact if not for implicit-in-time terms. The parenthesis about $n+1/2$
316    indicates that the term is explicit and extrapolated forward in time
317    and for this we use the quasi-second order Adams-Bashforth method:
318    \begin{equation}
319    G_\tau^{(n+1/2)} = ( 3/2 + \epsilon_{AB}) G_\tau^n
320    - ( 1/2 + \epsilon_{AB}) G_\tau^{n-1}
321    \label{eq:adams-bashforth2}
322    \end{equation}
323    This is a linear extrapolation, forward in time, to
324    $t=(n+1/2+{\epsilon_{AB}})\Delta t$. An extrapolation to the mid-point
325    in time, $t=(n+1/2)\Delta t$, corresponding to $\epsilon_{AB}=0$,
326    would be second order accurate but is weakly unstable for oscillatory
327    terms. A small but finite value for $\epsilon_{AB}$ stabilizes the
328    method. Strictly speaking, damping terms such as diffusion and
329    dissipation, and fixed terms (forcing), do not need to be inside the
330    Adams-Bashforth extrapolation. However, in the current code, it is
331    simpler to include these terms and this can be justified if the flow
332    and forcing evolves smoothly. Problems can, and do, arise when forcing
333    or motions are high frequency and this corresponds to a reduced
334    stability compared to a simple forward time-stepping of such terms.
335    
336    A stability analysis for an oscillation equation should be given at this point.
337    \marginpar{AJA needs to find his notes on this...}
338    
339    A stability analysis for a relaxation equation should be given at this point.
340    \marginpar{...and for this too.}
341    
342    
343    \section{Implicit time-stepping: backward method}
344    
345    Vertical diffusion and viscosity can be treated implicitly in time
346    using the backward method which is an intrinsic scheme. For tracers,
347    the time discretized equation is:
348    \begin{equation}
349    \tau^{n+1} - \Delta t \partial_r \kappa_v \partial_r \tau^{n+1} =
350    \tau^{n} + \Delta t G_\tau^{(n+1/2)}
351    \label{eq:implicit-diffusion}
352    \end{equation}
353    where $G_\tau^{(n+1/2)}$ is the remaining explicit terms extrapolated
354    using the Adams-Bashforth method as described above.  Equation
355    \ref{eq:implicit-diffusion} can be split split into:
356  \begin{eqnarray}  \begin{eqnarray}
357  \theta^* & = &  \tau^* & = & \tau^{n} + \Delta t G_\tau^{(n+1/2)}
358  \theta ^{n} + \Delta t G_{\theta} ^{(n+1/2)}  \label{eq:taustar-implicit} \\
359  \\  \tau^{n+1} & = & {\cal L}_\tau^{-1} ( \tau^* )
360  S^* & = &  \label{eq:tau-n+1-implicit}
 S ^{n} + \Delta t G_{S} ^{(n+1/2)}  
 \\  
 \vec{\bf v}^* & = &  
 \vec{\bf v}^{n} + \Delta t \vec{\bf G}_{\vec{\bf v}} ^{(n+1/2)}  
 + \Delta t  {\bf \nabla}_h {\phi'_{hyd}}^{(n+1/2)}  
 \\  
 \dot{r}^* & = &  
 \dot{r} ^{n} + \Delta t G_{\dot{r}} ^{(n+1/2)}  
361  \end{eqnarray}  \end{eqnarray}
362    where ${\cal L}_\tau^{-1}$ is the inverse of the operator
363    \begin{equation}
364    {\cal L} = \left[ 1 + \Delta t \partial_r \kappa_v \partial_r \right]
365    \end{equation}
366    Equation \ref{eq:taustar-implicit} looks exactly as \ref{eq:taustar}
367    while \ref{eq:tau-n+1-implicit} involves an operator or matrix
368    inversion. By re-arranging \ref{eq:implicit-diffusion} in this way we
369    have cast the method as an explicit prediction step and an implicit
370    step allowing the latter to be inserted into the over all algorithm
371    with minimal interference.
372    
373    Fig.~\ref{fig:call-tree-adams-bashforth} shows the calling sequence for
374    stepping forward a tracer variable such as temperature.
375    
376    In order to fit within the pressure method, the implicit viscosity
377    must not alter the barotropic flow. In other words, it can on ly
378    redistribute momentum in the vertical. The upshot of this is that
379    although vertical viscosity may be backward implicit and
380    unconditionally stable, no-slip boundary conditions may not be made
381    implicit and are thus cast as a an explicit drag term.
382    
383    \section{Synchronous time-stepping: variables co-located in time}
384    \label{sect:adams-bashforth-sync}
385    
386    \begin{figure}
387    \begin{center}
388    \resizebox{5.0in}{!}{\includegraphics{part2/adams-bashforth-sync.eps}}
389    \end{center}
390    \caption{
391    A schematic of the explicit Adams-Bashforth and implicit time-stepping
392    phases of the algorithm. All prognostic variables are co-located in
393    time. Explicit tendencies are evaluated at time level $n$ as a
394    function of the state at that time level (dotted arrow). The explicit
395    tendency from the previous time level, $n-1$, is used to extrapolate
396    tendencies to $n+1/2$ (dashed arrow). This extrapolated tendency
397    allows variables to be stably integrated forward-in-time to render an
398    estimate ($*$-variables) at the $n+1$ time level (solid
399    arc-arrow). The operator ${\cal L}$ formed from implicit-in-time terms
400    is solved to yield the state variables at time level $n+1$. }
401    \label{fig:adams-bashforth-sync}
402    \end{figure}
403    
404    \begin{figure}
405    \begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing}
406    aaa \= aaa \= aaa \= aaa \= aaa \= aaa \kill
407    FORWARD\_STEP \\
408    \> THERMODYNAMICS \\
409    \>\> CALC\_GT \\
410    \>\>\> GAD\_CALC\_RHS \` $G_\theta^n = G_\theta( u, \theta^n )$ (\ref{eq:Gt-n-sync})\\
411    \>\>\> EXTERNAL\_FORCING \` $G_\theta^n = G_\theta^n + {\cal Q}$ \\
412    \>\>\> ADAMS\_BASHFORTH2 \` $G_\theta^{(n+1/2)}$ (\ref{eq:Gt-n+5-sync}) \\
413    \>\> TIMESTEP\_TRACER \` $\tau^*$ (\ref{eq:tstar-sync}) \\
414    \>\> IMPLDIFF \` $\tau^{(n+1)}$ (\ref{eq:t-n+1-sync}) \\
415    \> DYNAMICS \\
416    \>\> CALC\_PHI\_HYD \` $\phi_{hyd}^n$ (\ref{eq:phi-hyd-sync}) \\
417    \>\> MOM\_FLUXFORM or MOM\_VECINV \` $G_{\vec{\bf v}}^n$ (\ref{eq:Gv-n-sync})\\
418    \>\> TIMESTEP \` $\vec{\bf v}^*$ (\ref{eq:Gv-n+5-sync}, \ref{eq:vstar-sync}) \\
419    \>\> IMPLDIFF \` $\vec{\bf v}^{**}$ (\ref{eq:vstarstar-sync}) \\
420    \> SOLVE\_FOR\_PRESSURE \\
421    \>\> CALC\_DIV\_GHAT \` $\eta^*$ (\ref{eq:nstar-sync}) \\
422    \>\> CG2D \` $\eta^{n+1}$ (\ref{eq:elliptic-sync}) \\
423    \> THE\_CORRECTION\_STEP  \\
424    \>\> CALC\_GRAD\_PHI\_SURF \` $\nabla \eta^{n+1}$ \\
425    \>\> CORRECTION\_STEP \` $u^{n+1}$,$v^{n+1}$ (\ref{eq:v-n+1-sync})
426    \end{tabbing} \end{minipage} } \end{center}
427    \caption{
428    Calling tree for the overall synchronous algorithm using
429    Adams-Bashforth time-stepping.}
430    \label{fig:call-tree-adams-bashforth-sync}
431    \end{figure}
432    
433    The Adams-Bashforth extrapolation of explicit tendencies fits neatly
434    into the pressure method algorithm when all state variables are
435    co-located in time. Fig.~\ref{fig:adams-bashforth-sync} illustrates
436    the location of variables in time and the evolution of the algorithm
437    with time. The algorithm can be represented by the sequential solution
438    of the follow equations:
439    \begin{eqnarray}
440    G_{\theta,S}^{n} & = & G_{\theta,S} ( u^n, \theta^n, S^n )
441    \label{eq:Gt-n-sync} \\
442    G_{\theta,S}^{(n+1/2)} & = & (3/2+\epsilon_{AB}) G_{\theta,S}^{n}-(1/2+\epsilon_{AB}) G_{\theta,S}^{n-1}
443    \label{eq:Gt-n+5-sync} \\
444    (\theta^*,S^*) & = & (\theta^{n},S^{n}) + \Delta t G_{\theta,S}^{(n+1/2)}
445    \label{eq:tstar-sync} \\
446    (\theta^{n+1},S^{n+1}) & = & {\cal L}^{-1}_{\theta,S} (\theta^*,S^*)
447    \label{eq:t-n+1-sync} \\
448    \phi^n_{hyd} & = & \int b(\theta^n,S^n) dr
449    \label{eq:phi-hyd-sync} \\
450    \vec{\bf G}_{\vec{\bf v}}^{n} & = & \vec{\bf G}_{\vec{\bf v}} ( \vec{\bf v}^n, \phi^n_{hyd} )
451    \label{eq:Gv-n-sync} \\
452    \vec{\bf G}_{\vec{\bf v}}^{(n+1/2)} & = & (3/2 + \epsilon_{AB} ) \vec{\bf G}_{\vec{\bf v}}^{n} - (1/2 + \epsilon_{AB} ) \vec{\bf G}_{\vec{\bf v}}^{n-1}
453    \label{eq:Gv-n+5-sync} \\
454    \vec{\bf v}^{*} & = & \vec{\bf v}^{n} + \Delta t \vec{\bf G}_{\vec{\bf v}}^{(n+1/2)}
455    \label{eq:vstar-sync} \\
456    \vec{\bf v}^{**} & = & {\cal L}_{\vec{\bf v}}^{-1} ( \vec{\bf v}^* )
457    \label{eq:vstarstar-sync} \\
458    \eta^* & = & \epsilon_{fs} \left( \eta^{n} +P-E+R \right)- \Delta t
459      \nabla \cdot H \widehat{ \vec{\bf v}^{**} }
460    \label{eq:nstar-sync} \\
461    \nabla \cdot g H \nabla \eta^{n+1} - \frac{\epsilon_{fs} \eta^{n+1}}{\Delta t^2}
462    & = & - \frac{\eta^*}{\Delta t^2}
463    \label{eq:elliptic-sync} \\
464    \vec{\bf v}^{n+1} & = & \vec{\bf v}^{*} - \Delta t g \nabla \eta^{n+1}
465    \label{eq:v-n+1-sync}
466    \end{eqnarray}
467    Fig.~\ref{fig:adams-bashforth-sync} illustrates the location of
468    variables in time and evolution of the algorithm with time. The
469    Adams-Bashforth extrapolation of the tracer tendencies is illustrated
470    by the dashed arrow, the prediction at $n+1$ is indicated by the
471    solid arc. Inversion of the implicit terms, ${\cal
472    L}^{-1}_{\theta,S}$, then yields the new tracer fields at $n+1$. All
473    these operations are carried out in subroutine {\em THERMODYNAMICS} an
474    subsidiaries, which correspond to equations \ref{eq:Gt-n-sync} to
475    \ref{eq:t-n+1-sync}.
476    Similarly illustrated is the Adams-Bashforth extrapolation of
477    accelerations, stepping forward and solving of implicit viscosity and
478    surface pressure gradient terms, corresponding to equations
479    \ref{eq:Gv-n-sync} to \ref{eq:v-n+1-sync}.
480    These operations are carried out in subroutines {\em DYNAMCIS}, {\em
481    SOLVE\_FOR\_PRESSURE} and {\em THE\_CORRECTION\_STEP}. This, then,
482    represents an entire algorithm for stepping forward the model one
483    time-step. The corresponding calling tree is given in
484    \ref{fig:call-tree-adams-bashforth-sync}.
485    
486    \section{Staggered baroclinic time-stepping}
487    \label{sect:adams-bashforth-staggered}
488    
489    \begin{figure}
490    \begin{center}
491    \resizebox{5.5in}{!}{\includegraphics{part2/adams-bashforth-staggered.eps}}
492    \end{center}
493    \caption{
494    A schematic of the explicit Adams-Bashforth and implicit time-stepping
495    phases of the algorithm but with staggering in time of thermodynamic
496    variables with the flow. Explicit thermodynamics tendencies are
497    evaluated at time level $n-1/2$ as a function of the thermodynamics
498    state at that time level $n$ and flow at time $n$ (dotted arrow). The
499    explicit tendency from the previous time level, $n-3/2$, is used to
500    extrapolate tendencies to $n$ (dashed arrow). This extrapolated
501    tendency allows thermo-dynamics variables to be stably integrated
502    forward-in-time to render an estimate ($*$-variables) at the $n+1/2$
503    time level (solid arc-arrow). The implicit-in-time operator ${\cal
504    L_{\theta,S}}$ is solved to yield the thermodynamic variables at time
505    level $n+1/2$. These are then used to calculate the hydrostatic
506    pressure/geo-potential, $\phi_{hyd}$ (vertical arrows). The
507    hydrostatic pressure gradient is evaluated directly an time level
508    $n+1/2$ in stepping forward the flow variables from $n$ to $n+1$
509    (solid arc-arrow). }
510    \label{fig:adams-bashforth-staggered}
511    \end{figure}
512    
513    For well stratified problems, internal gravity waves may be the
514    limiting process for determining a stable time-step. In the
515    circumstance, it is more efficient to stagger in time the
516    thermodynamic variables with the flow
517    variables. Fig.~\ref{fig:adams-bashforth-staggered} illustrates the
518    staggering and algorithm. The key difference between this and
519    Fig.~\ref{fig:adams-bashforth-sync} is that the new thermodynamics
520    fields are used to compute the hydrostatic pressure at time level
521    $n+1/2$. The essentially allows the gravity wave terms to leap-frog in
522    time giving second order accuracy and more stability.
523    
524    The essential change in the staggered algorithm is the calculation of
525    hydrostatic pressure which, in the context of the synchronous
526    algorithm involves replacing equation \ref{eq:phi-hyd-sync} with
527    \begin{displaymath}
528    \phi_{hyd}^n = \int b(\theta^{n+1},S^{n+1}) dr
529    \end{displaymath}
530    but the pressure gradient must also be taken out of the
531    Adams-Bashforth extrapolation. Also, retaining the integer time-levels,
532    $n$ and $n+1$, does not give a user the sense of where variables are
533    located in time.  Instead, we re-write the entire algorithm,
534    \ref{eq:Gt-n-sync} to \ref{eq:v-n+1-sync}, annotating the
535    position in time of variables appropriately:
536    \begin{eqnarray}
537    G_{\theta,S}^{n-1/2} & = & G_{\theta,S} ( u^n, \theta^{n-1/2}, S^{n-1/2} )
538    \label{eq:Gt-n-staggered} \\
539    G_{\theta,S}^{(n)} & = & (3/2+\epsilon_{AB}) G_{\theta,S}^{n-1/2}-(1/2+\epsilon_{AB}) G_{\theta,S}^{n-3/2}
540    \label{eq:Gt-n+5-staggered} \\
541    (\theta^*,S^*) & = & (\theta^{n},S^{n}) + \Delta t G_{\theta,S}^{(n)}
542    \label{eq:tstar-staggered} \\
543    (\theta^{n+1/2},S^{n+1/2}) & = & {\cal L}^{-1}_{\theta,S} (\theta^*,S^*)
544    \label{eq:t-n+1-staggered} \\
545    \phi^{n+1/2}_{hyd} & = & \int b(\theta^{n+1/2},S^{n+1/2}) dr
546    \label{eq:phi-hyd-staggered} \\
547    \vec{\bf G}_{\vec{\bf v}}^{n} & = & \vec{\bf G}_{\vec{\bf v}} ( \vec{\bf v}^n )
548    \label{eq:Gv-n-staggered} \\
549    \vec{\bf G}_{\vec{\bf v}}^{(n+1/2)} & = & (3/2 + \epsilon_{AB} ) \vec{\bf G}_{\vec{\bf v}}^{n} - (1/2 + \epsilon_{AB} ) \vec{\bf G}_{\vec{\bf v}}^{n-1}
550    \label{eq:Gv-n+5-staggered} \\
551    \vec{\bf v}^{*} & = & \vec{\bf v}^{n} + \Delta t \left( \vec{\bf G}_{\vec{\bf v}}^{(n+1/2)} - \nabla \phi_{hyd}^{n+1/2} \right)
552    \label{eq:vstar-staggered} \\
553    \vec{\bf v}^{**} & = & {\cal L}_{\vec{\bf v}}^{-1} ( \vec{\bf v}^* )
554    \label{eq:vstarstar-staggered} \\
555    \eta^* & = & \epsilon_{fs} \left( \eta^{n} +P-E+R \right)- \Delta t
556      \nabla \cdot H \widehat{ \vec{\bf v}^{**} }
557    \label{eq:nstar-staggered} \\
558    \nabla \cdot g H \nabla \eta^{n+1} - \frac{\epsilon_{fs} \eta^{n+1}}{\Delta t^2}
559    & = & - \frac{\eta^*}{\Delta t^2}
560    \label{eq:elliptic-staggered} \\
561    \vec{\bf v}^{n+1} & = & \vec{\bf v}^{*} - \Delta t g \nabla \eta^{n+1}
562    \label{eq:v-n+1-staggered}
563    \end{eqnarray}
564    The calling sequence is unchanged from
565    Fig.~\ref{fig:call-tree-adams-bashforth-sync}. The staggered algorithm
566    is activated with the run-time flag {\bf staggerTimeStep=.TRUE.} in
567    {\em PARM01} of {\em data}.
568    
569    The only difficulty with this approach is apparent in equation
570    \ref{eq:Gt-n-staggered} and illustrated by the dotted arrow
571    connecting $u,v^n$ with $G_\theta^{n-1/2}$. The flow used to advect
572    tracers around is not naturally located in time. This could be avoided
573    by applying the Adams-Bashforth extrapolation to the tracer field
574    itself and advecting that around but this approach is not yet
575    available. We're not aware of any detrimental effect of this
576    feature. The difficulty lies mainly in interpretation of what
577    time-level variables and terms correspond to.
578    
579    
580    \section{Non-hydrostatic formulation}
581    \label{sect:non-hydrostatic}
582    
583    The non-hydrostatic formulation re-introduces the full vertical
584    momentum equation and requires the solution of a 3-D elliptic
585    equations for non-hydrostatic pressure perturbation. We still
586    intergrate vertically for the hydrostatic pressure and solve a 2-D
587    elliptic equation for the surface pressure/elevation for this reduces
588    the amount of work needed to solve for the non-hydrostatic pressure.
589    
590  Note that implicit vertical viscosity and diffusivity terms are not  The momentum equations are discretized in time as follows:
591  considered as part of the ``{\it G}'' terms, but are written  \begin{eqnarray}
592  separately here.  \frac{1}{\Delta t} u^{n+1} + g \partial_x \eta^{n+1} + \partial_x \phi_{nh}^{n+1}
593    & = & \frac{1}{\Delta t} u^{n} + G_u^{(n+1/2)} \label{eq:discrete-time-u-nh} \\
594  The default time-stepping method is the Adams-Bashforth quasi-second  \frac{1}{\Delta t} v^{n+1} + g \partial_y \eta^{n+1} + \partial_y \phi_{nh}^{n+1}
595  order scheme in which the ``G'' terms are extrapolated forward in time  & = & \frac{1}{\Delta t} v^{n} + G_v^{(n+1/2)} \label{eq:discrete-time-v-nh} \\
596  from time-levels $n-1$ and $n$ to time-level $n+1/2$ and provides a  \frac{1}{\Delta t} w^{n+1} + \partial_r \phi_{nh}^{n+1}
597  simple but stable algorithm:  & = & \frac{1}{\Delta t} w^{n} + G_w^{(n+1/2)} \label{eq:discrete-time-w-nh} \\
598  \begin{equation}  \end{eqnarray}
599  G^{(n+1/2)} = G^n + (1/2+\epsilon_{AB}) (G^n - G^{n-1})  which must satisfy the discrete-in-time depth integrated continuity,
600  \end{equation}  equation~\ref{eq:discrete-time-backward-free-surface} and the local continuity equation
 where $\epsilon_{AB}$ is a small number used to stabilize the time  
 stepping.  
   
 In the standard non-staggered formulation, the Adams-Bashforth time  
 stepping is also applied to the hydrostatic pressure/geo-potential  
 gradient, $\nabla_h \Phi'_{hyd}$.  Note that presently, this term is in  
 fact incorporated to the $\vec{\bf G}_{\vec{\bf v}}$ arrays ({\bf  
 gU,gV}).  
 \marginpar{JMC: Clarify this term?}  
   
   
 \subsection{Stagger baroclinic time stepping}  
   
 An alternative to synchronous time-stepping is to stagger the momentum  
 and tracer fields in time. This allows the evaluation and gradient of  
 $\phi'_{hyd}$ to be centered in time with out needing to use the  
 Adams-Bashforth extrapoltion. This option is known as staggered  
 baroclinic time stepping because tracer and momentum are stepped  
 forward-in-time one after the other.  It can be activated by turning  
 on a run-time parameter {\bf staggerTimeStep} in namelist ``{\it  
 PARM01}''.  
   
 The main advantage of staggered time-stepping compared to synchronous,  
 is improved stability to internal gravity wave motions and a very  
 natural implementation of a 2nd order in time hydrostatic  
 pressure/geo-potential gradient term. However, synchronous  
 time-stepping might be better for convection problems, time dependent  
 forcing and diagnosing the model are also easier and it allows a more  
 efficient parallel decomposition.  
   
 The staggered baroclinic time-stepping scheme is equations  
 \ref{eq-tDsC-theta} to \ref{eq-tDsC-cont} except that \ref{eq-tDsC-hyd} is replaced with:  
601  \begin{equation}  \begin{equation}
602  {\phi'_{hyd}}^{n+1/2} = \int_{r'}^{R_o} b'(\theta^{n+1/2},S^{n+1/2},r)  \partial_x u^{n+1} + \partial_y v^{n+1} + \partial_r w^{n+1} = 0
603  dr  \label{eq:non-divergence-nh}
604  \end{equation}  \end{equation}
605  and the time-level for tracers has been shifted back by half:  As before, the explicit predictions for momentum are consolidated as:
606  \begin{eqnarray*}  \begin{eqnarray*}
607  \theta^* & = &  u^* & = & u^n + \Delta t G_u^{(n+1/2)} \\
608  \theta ^{(n-1/2)} + \Delta t G_{\theta} ^{(n)}  v^* & = & v^n + \Delta t G_v^{(n+1/2)} \\
609  \\  w^* & = & w^n + \Delta t G_w^{(n+1/2)}
 S^* & = &  
 S ^{(n-1/2)} + \Delta t G_{S} ^{(n)}  
 \\  
 \left[ 1 - \partial_r \kappa_v^\theta \partial_r \right]  
 \theta^{n+1/2} & = & \theta^*  
 \\  
 \left[ 1 - \partial_r \kappa_v^S \partial_r \right]  
 S^{n+1/2} & = & S^*  
610  \end{eqnarray*}  \end{eqnarray*}
611    but this time we introduce an intermediate step by splitting the
612    tendancy of the flow as follows:
613    \begin{eqnarray}
614    u^{n+1} = u^{**} - \Delta t \partial_x \phi_{nh}^{n+1}
615    & &
616    u^{**} = u^{*} - \Delta t g \partial_x \eta^{n+1} \\
617    v^{n+1} = v^{**} - \Delta t \partial_y \phi_{nh}^{n+1}
618    & &
619    v^{**} = v^{*} - \Delta t g \partial_y \eta^{n+1}
620    \end{eqnarray}
621    Substituting into the depth integrated continuity
622    (equation~\ref{eq:discrete-time-backward-free-surface}) gives
623    \begin{equation}
624    \partial_x H \partial_x \left( g \eta^{n+1} + \widehat{\phi}_{nh}^{n+1} \right)
625    +
626    \partial_y H \partial_y \left( g \eta^{n+1} + \widehat{\phi}_{nh}^{n+1} \right)
627     - \frac{\epsilon_{fs}\eta^*}{\Delta t^2}
628    = - \frac{\eta^*}{\Delta t^2}
629    \end{equation}
630    which is approximated by equation
631    \ref{eq:elliptic-backward-free-surface} on the basis that i)
632    $\phi_{nh}^{n+1}$ is not yet known and ii) $\nabla \widehat{\phi}_{nh}
633    << g \nabla \eta$. If \ref{eq:elliptic-backward-free-surface} is
634    solved accurately then the implication is that $\widehat{\phi}_{nh}
635    \approx 0$ so that thet non-hydrostatic pressure field does not drive
636    barotropic motion.
637    
638    The flow must satisfy non-divergence
639    (equation~\ref{eq:non-divergence-nh}) locally, as well as depth
640    integrated, and this constraint is used to form a 3-D elliptic
641    equations for $\phi_{nh}^{n+1}$:
642    \begin{equation}
643    \partial_{xx} \phi_{nh}^{n+1} + \partial_{yy} \phi_{nh}^{n+1} +
644    \partial_{rr} \phi_{nh}^{n+1} =
645    \partial_x u^{**} + \partial_y v^{**} + \partial_r w^{*}
646    \end{equation}
647    
648    The entire algorithm can be summarized as the sequential solution of
649    the following equations:
650    \begin{eqnarray}
651    u^{*} & = & u^{n} + \Delta t G_u^{(n+1/2)} \label{eq:ustar-nh} \\
652    v^{*} & = & v^{n} + \Delta t G_v^{(n+1/2)} \label{eq:vstar-nh} \\
653    w^{*} & = & w^{n} + \Delta t G_w^{(n+1/2)} \label{eq:wstar-nh} \\
654    \eta^* & = & \epsilon_{fs} \left( \eta^{n} +P-E+R \right)- \Delta t
655      \partial_x H \widehat{u^{*}}
656    + \partial_y H \widehat{v^{*}}
657    \\
658      \partial_x g H \partial_x \eta^{n+1}
659    + \partial_y g H \partial_y \eta^{n+1}
660    - \frac{\epsilon_{fs} \eta^{n+1}}{\Delta t^2}
661    & = &
662    - \frac{\eta^*}{\Delta t^2}
663    \label{eq:elliptic-nh}
664    \\
665    u^{**} & = & u^{*} - \Delta t g \partial_x \eta^{n+1} \label{eq:unx-nh}\\
666    v^{**} & = & v^{*} - \Delta t g \partial_y \eta^{n+1} \label{eq:vnx-nh}\\
667    \partial_{xx} \phi_{nh}^{n+1} + \partial_{yy} \phi_{nh}^{n+1} +
668    \partial_{rr} \phi_{nh}^{n+1} & = &
669    \partial_x u^{**} + \partial_y v^{**} + \partial_r w^{*} \\
670    u^{n+1} & = & u^{**} - \Delta t \partial_x \phi_{nh}^{n+1} \label{eq:un+1-nh}\\
671    v^{n+1} & = & v^{**} - \Delta t \partial_y \phi_{nh}^{n+1} \label{eq:vn+1-nh}\\
672    \partial_r w^{n+1} & = & - \partial_x u^{n+1} - \partial_y v^{n+1}
673    \end{eqnarray}
674    where the last equation is solved by vertically integrating for
675    $w^{n+1}$.
676    
 \subsection{Surface pressure}  
677    
678  Substituting \ref{eq-tDsC-Hmom} into \ref{eq-tDsC-cont}, assuming  
679  $\epsilon_{nh} = 0$ yields a Helmholtz equation for ${\eta}^{n+1}$:  \section{Variants on the Free Surface}
680    
681    We now describe the various formulations of the free-surface that
682    include non-linear forms, implicit in time using Crank-Nicholson,
683    explicit and [one day] split-explicit. First, we'll reiterate the
684    underlying algorithm but this time using the notation consistent with
685    the more general vertical coordinate $r$. The elliptic equation for
686    free-surface coordinate (units of $r$), corresponding to
687    \ref{eq:discrete-time-backward-free-surface}, and
688    assuming no non-hydrostatic effects ($\epsilon_{nh} = 0$) is:
689  \begin{eqnarray}  \begin{eqnarray}
690  \epsilon_{fs} {\eta}^{n+1} -  \epsilon_{fs} {\eta}^{n+1} -
691  {\bf \nabla}_h \cdot \Delta t^2 (R_o-R_{fixed})  {\bf \nabla}_h \cdot \Delta t^2 (R_o-R_{fixed}) {\bf \nabla}_h b_s
692  {\bf \nabla}_h b_s {\eta}^{n+1}  {\eta}^{n+1} = {\eta}^*
 = {\eta}^*  
693  \label{eq-solve2D}  \label{eq-solve2D}
694  \end{eqnarray}  \end{eqnarray}
695  where  where
# Line 300  where Line 700  where
700  \label{eq-solve2D_rhs}  \label{eq-solve2D_rhs}
701  \end{eqnarray}  \end{eqnarray}
702    
703    \fbox{ \begin{minipage}{4.75in}
704    {\em S/R SOLVE\_FOR\_PRESSURE} ({\em solve\_for\_pressure.F})
705    
706    $u^*$: {\bf GuNm1} ({\em DYNVARS.h})
707    
708    $v^*$: {\bf GvNm1} ({\em DYNVARS.h})
709    
710    $\eta^*$: {\bf cg2d\_b} (\em SOLVE\_FOR\_PRESSURE.h)
711    
712    $\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h)
713    
714    \end{minipage} }
715    
716    
717  Once ${\eta}^{n+1}$ has been found, substituting into  Once ${\eta}^{n+1}$ has been found, substituting into
718  \ref{eq-tDsC-Hmom} yields $\vec{\bf v}^{n+1}$ if the model is  \ref{eq:discrete-time-u,eq:discrete-time-v} yields $\vec{\bf v}^{n+1}$ if the model is
719  hydrostatic ($\epsilon_{nh}=0$):  hydrostatic ($\epsilon_{nh}=0$):
720  $$  $$
721  \vec{\bf v}^{n+1} = \vec{\bf v}^{*}  \vec{\bf v}^{n+1} = \vec{\bf v}^{*}
# Line 311  $$ Line 725  $$
725  This is known as the correction step. However, when the model is  This is known as the correction step. However, when the model is
726  non-hydrostatic ($\epsilon_{nh}=1$) we need an additional step and an  non-hydrostatic ($\epsilon_{nh}=1$) we need an additional step and an
727  additional equation for $\phi'_{nh}$. This is obtained by substituting  additional equation for $\phi'_{nh}$. This is obtained by substituting
728  \ref{eq-tDsC-Hmom} and \ref{eq-tDsC-Vmom} into  \ref{eq:discrete-time-u-nh}, \ref{eq:discrete-time-v-nh} and \ref{eq:discrete-time-w-nh}
729  \ref{eq-tDsC-cont}:  into continuity:
730  \begin{equation}  \begin{equation}
731  \left[ {\bf \nabla}_h^2 + \partial_{rr} \right] {\phi'_{nh}}^{n+1}  \left[ {\bf \nabla}_h^2 + \partial_{rr} \right] {\phi'_{nh}}^{n+1}
732  = \frac{1}{\Delta t} \left(  = \frac{1}{\Delta t} \left(
# Line 338  procedure, the vertical integration of t Line 752  procedure, the vertical integration of t
752  been moved to the beginning of the time step (instead of at the end),  been moved to the beginning of the time step (instead of at the end),
753  without any consequence on the solution.  without any consequence on the solution.
754    
755    \fbox{ \begin{minipage}{4.75in}
756    {\em S/R CORRECTION\_STEP} ({\em correction\_step.F})
757    
758    $\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h)
759    
760    $\phi_{nh}^{n+1}$: {\bf phi\_nh} (\em DYNVARS.h)
761    
762    $u^*$: {\bf GuNm1} ({\em DYNVARS.h})
763    
764    $v^*$: {\bf GvNm1} ({\em DYNVARS.h})
765    
766    $u^{n+1}$: {\bf uVel} ({\em DYNVARS.h})
767    
768    $v^{n+1}$: {\bf vVel} ({\em DYNVARS.h})
769    
770    \end{minipage} }
771    
772    
773    
774  Regarding the implementation of the surface pressure solver, all  Regarding the implementation of the surface pressure solver, all
775  computation are done within the routine {\it SOLVE\_FOR\_PRESSURE} and  computation are done within the routine {\it SOLVE\_FOR\_PRESSURE} and
776  its dependent calls.  The standard method to solve the 2D elliptic  its dependent calls.  The standard method to solve the 2D elliptic
# Line 354  INI\_CG3D}. The RHS terms of 2D and 3D p Line 787  INI\_CG3D}. The RHS terms of 2D and 3D p
787  at the same point in the code.  at the same point in the code.
788    
789    
790    
791  \subsection{Crank-Nickelson barotropic time stepping}  \subsection{Crank-Nickelson barotropic time stepping}
792    
793  The full implicit time stepping described previously is  The full implicit time stepping described previously is
# Line 372  In the code, $\beta,\gamma$ are defined Line 806  In the code, $\beta,\gamma$ are defined
806  {\it implicSurfPress}, {\it implicDiv2DFlow}. They are read from  {\it implicSurfPress}, {\it implicDiv2DFlow}. They are read from
807  the main data file "{\it data}" and are set by default to 1,1.  the main data file "{\it data}" and are set by default to 1,1.
808    
809  Equations \ref{eq-tDsC-Hmom} and \ref{eq-tDsC-eta} are modified as follows:  Equations \ref{eq:ustar-backward-free-surface} --
810    \ref{eq:vn+1-backward-free-surface} are modified as follows:
811  $$  $$
812  \frac{ \vec{\bf v}^{n+1} }{ \Delta t }  \frac{ \vec{\bf v}^{n+1} }{ \Delta t }
813  + {\bf \nabla}_h b_s [ \beta {\eta}^{n+1} + (1-\beta) {\eta}^{n} ]  + {\bf \nabla}_h b_s [ \beta {\eta}^{n+1} + (1-\beta) {\eta}^{n} ]

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22