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

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

  ViewVC Help
Powered by ViewVC 1.1.22