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

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

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


Revision 1.19 - (hide annotations) (download) (as text)
Sat Oct 16 03:40:12 2004 UTC (20 years, 8 months ago) by edhill
Branch: MAIN
Changes since 1.18: +28 -2 lines
File MIME type: application/x-tex
 o add HTML comments as a step towards "URL permanence" which will help
   solve:
   - stale links from the CMI web site
   - rotten indexing by bonniefy.pl
 o also cleanup a merge-mangle in diagnostics.tex

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

  ViewVC Help
Powered by ViewVC 1.1.22