/[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.20 - (hide annotations) (download) (as text)
Sun Oct 17 04:14:21 2004 UTC (19 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57l_post
Changes since 1.19: +41 -29 lines
File MIME type: application/x-tex
fix details left from previous modifications.

1 jmc 1.20 % $Header: /u/gcmpack/manual/part2/time_stepping.tex,v 1.19 2004/10/16 03:40:12 edhill 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 jmc 1.20 \label{eq:linear-free-surface=P-E}
229 adcroft 1.8 \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 jmc 1.20 \ref{eq:linear-free-surface=P-E} which is:
237 adcroft 1.8 \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 jmc 1.20 + \Delta t ( P - E )
244 adcroft 1.8 \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 jmc 1.20 \eta^* & = & \epsilon_{fs} \left( \eta^{n} + \Delta t (P-E) \right)- \Delta t
259 adcroft 1.8 \partial_x H \widehat{u^{*}}
260     + \partial_y H \widehat{v^{*}}
261     \\
262     \partial_x g H \partial_x \eta^{n+1}
263 jmc 1.20 & + & \partial_y g H \partial_y \eta^{n+1}
264     - \frac{\epsilon_{fs} \eta^{n+1}}{\Delta t^2}
265     =
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 jmc 1.20 \>\> TIMESTEP\_TRACER \` $\theta^*$ (\ref{eq:tstar-sync}) \\
446     \>\> IMPLDIFF \` $\theta^{(n+1)}$ (\ref{eq:t-n+1-sync}) \\
447 adcroft 1.8 \> 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 jmc 1.20 ({\bf hFac} factors) is updated is added here but is only relevant
469 jmc 1.17 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 jmc 1.20 The implicit-in-time operator ${\cal L}_{\bf u,v}$ (vertical arrows) is
551 jmc 1.18 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 jmc 1.20 to step forwrad the dynamics.
579 jmc 1.17 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.20 \phi^{n}_{hyd} & = & \int b(\theta^{n},S^{n}) dr
587     \label{eq:phi-hyd-staggered} \\
588 jmc 1.17 \vec{\bf G}_{\vec{\bf v}}^{n-1/2} & = & \vec{\bf G}_{\vec{\bf v}} ( \vec{\bf v}^{n-1/2} )
589 adcroft 1.8 \label{eq:Gv-n-staggered} \\
590 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}
591 adcroft 1.8 \label{eq:Gv-n+5-staggered} \\
592 jmc 1.17 \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 jmc 1.20 {\bf staggerTimeStep}{\em=.TRUE.} in parameter file {\em data},
617 jmc 1.17 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 jmc 1.20 \>\> TIMESTEP\_TRACER \` $\theta^*$ (\ref{eq:tstar-staggered}) \\
647     \>\> IMPLDIFF \` $\theta^{(n+1)}$ (\ref{eq:t-n+1-staggered}) \\
648 jmc 1.17 \> 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 jmc 1.20 ({\bf hFac} factors) is updated is added here but is only relevant
658 jmc 1.17 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 jmc 1.20 \label{sect:free-surface}
779 adcroft 1.1
780 cnh 1.9 We now describe the various formulations of the free-surface that
781 adcroft 1.8 include non-linear forms, implicit in time using Crank-Nicholson,
782     explicit and [one day] split-explicit. First, we'll reiterate the
783     underlying algorithm but this time using the notation consistent with
784     the more general vertical coordinate $r$. The elliptic equation for
785 cnh 1.9 free-surface coordinate (units of $r$), corresponding to
786 adcroft 1.8 \ref{eq:discrete-time-backward-free-surface}, and
787     assuming no non-hydrostatic effects ($\epsilon_{nh} = 0$) is:
788 jmc 1.2 \begin{eqnarray}
789 adcroft 1.1 \epsilon_{fs} {\eta}^{n+1} -
790 adcroft 1.8 {\bf \nabla}_h \cdot \Delta t^2 (R_o-R_{fixed}) {\bf \nabla}_h b_s
791     {\eta}^{n+1} = {\eta}^*
792 jmc 1.4 \label{eq-solve2D}
793 jmc 1.2 \end{eqnarray}
794 adcroft 1.1 where
795 jmc 1.2 \begin{eqnarray}
796 adcroft 1.1 {\eta}^* = \epsilon_{fs} \: {\eta}^{n} -
797 jmc 1.5 \Delta t {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o} \vec{\bf v}^* dr
798 adcroft 1.1 \: + \: \epsilon_{fw} \Delta_t (P-E)^{n}
799 jmc 1.4 \label{eq-solve2D_rhs}
800 jmc 1.2 \end{eqnarray}
801 adcroft 1.1
802 adcroft 1.7 \fbox{ \begin{minipage}{4.75in}
803     {\em S/R SOLVE\_FOR\_PRESSURE} ({\em solve\_for\_pressure.F})
804    
805     $u^*$: {\bf GuNm1} ({\em DYNVARS.h})
806    
807     $v^*$: {\bf GvNm1} ({\em DYNVARS.h})
808    
809     $\eta^*$: {\bf cg2d\_b} (\em SOLVE\_FOR\_PRESSURE.h)
810    
811     $\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h)
812    
813     \end{minipage} }
814    
815    
816 adcroft 1.6 Once ${\eta}^{n+1}$ has been found, substituting into
817 adcroft 1.12 \ref{eq:discrete-time-u,eq:discrete-time-v} yields $\vec{\bf v}^{n+1}$ if the model is
818 adcroft 1.6 hydrostatic ($\epsilon_{nh}=0$):
819 adcroft 1.1 $$
820     \vec{\bf v}^{n+1} = \vec{\bf v}^{*}
821 jmc 1.3 - \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}
822 adcroft 1.1 $$
823    
824     This is known as the correction step. However, when the model is
825     non-hydrostatic ($\epsilon_{nh}=1$) we need an additional step and an
826 adcroft 1.6 additional equation for $\phi'_{nh}$. This is obtained by substituting
827 adcroft 1.14 \ref{eq:discrete-time-u-nh}, \ref{eq:discrete-time-v-nh} and \ref{eq:discrete-time-w-nh}
828 adcroft 1.12 into continuity:
829 adcroft 1.1 \begin{equation}
830 jmc 1.3 \left[ {\bf \nabla}_h^2 + \partial_{rr} \right] {\phi'_{nh}}^{n+1}
831 adcroft 1.1 = \frac{1}{\Delta t} \left(
832 jmc 1.3 {\bf \nabla}_h \cdot \vec{\bf v}^{**} + \partial_r \dot{r}^* \right)
833 adcroft 1.1 \end{equation}
834     where
835     \begin{displaymath}
836 jmc 1.3 \vec{\bf v}^{**} = \vec{\bf v}^* - \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}
837 adcroft 1.1 \end{displaymath}
838     Note that $\eta^{n+1}$ is also used to update the second RHS term
839     $\partial_r \dot{r}^* $ since
840     the vertical velocity at the surface ($\dot{r}_{surf}$)
841     is evaluated as $(\eta^{n+1} - \eta^n) / \Delta t$.
842    
843     Finally, the horizontal velocities at the new time level are found by:
844     \begin{equation}
845     \vec{\bf v}^{n+1} = \vec{\bf v}^{**}
846 jmc 1.3 - \epsilon_{nh} \Delta t {\bf \nabla}_h {\phi'_{nh}}^{n+1}
847 adcroft 1.1 \end{equation}
848     and the vertical velocity is found by integrating the continuity
849 adcroft 1.6 equation vertically. Note that, for the convenience of the restart
850     procedure, the vertical integration of the continuity equation has
851     been moved to the beginning of the time step (instead of at the end),
852 adcroft 1.1 without any consequence on the solution.
853    
854 adcroft 1.7 \fbox{ \begin{minipage}{4.75in}
855     {\em S/R CORRECTION\_STEP} ({\em correction\_step.F})
856    
857     $\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h)
858    
859     $\phi_{nh}^{n+1}$: {\bf phi\_nh} (\em DYNVARS.h)
860    
861     $u^*$: {\bf GuNm1} ({\em DYNVARS.h})
862    
863     $v^*$: {\bf GvNm1} ({\em DYNVARS.h})
864    
865     $u^{n+1}$: {\bf uVel} ({\em DYNVARS.h})
866    
867     $v^{n+1}$: {\bf vVel} ({\em DYNVARS.h})
868    
869     \end{minipage} }
870    
871    
872    
873 adcroft 1.6 Regarding the implementation of the surface pressure solver, all
874     computation are done within the routine {\it SOLVE\_FOR\_PRESSURE} and
875     its dependent calls. The standard method to solve the 2D elliptic
876     problem (\ref{eq-solve2D}) uses the conjugate gradient method (routine
877     {\it CG2D}); the solver matrix and conjugate gradient operator are
878     only function of the discretized domain and are therefore evaluated
879     separately, before the time iteration loop, within {\it INI\_CG2D}.
880     The computation of the RHS $\eta^*$ is partly done in {\it
881     CALC\_DIV\_GHAT} and in {\it SOLVE\_FOR\_PRESSURE}.
882    
883     The same method is applied for the non hydrostatic part, using a
884     conjugate gradient 3D solver ({\it CG3D}) that is initialized in {\it
885     INI\_CG3D}. The RHS terms of 2D and 3D problems are computed together
886     at the same point in the code.
887 adcroft 1.7
888 adcroft 1.6
889 adcroft 1.1
890     \subsection{Crank-Nickelson barotropic time stepping}
891 jmc 1.20 \label{sect:freesurf-CrankNick}
892 adcroft 1.1
893 adcroft 1.6 The full implicit time stepping described previously is
894     unconditionally stable but damps the fast gravity waves, resulting in
895     a loss of potential energy. The modification presented now allows one
896     to combine an implicit part ($\beta,\gamma$) and an explicit part
897     ($1-\beta,1-\gamma$) for the surface pressure gradient ($\beta$) and
898     for the barotropic flow divergence ($\gamma$).
899 adcroft 1.1 \\
900     For instance, $\beta=\gamma=1$ is the previous fully implicit scheme;
901     $\beta=\gamma=1/2$ is the non damping (energy conserving), unconditionally
902     stable, Crank-Nickelson scheme; $(\beta,\gamma)=(1,0)$ or $=(0,1)$
903     corresponds to the forward - backward scheme that conserves energy but is
904     only stable for small time steps.\\
905     In the code, $\beta,\gamma$ are defined as parameters, respectively
906 jmc 1.20 {\bf implicSurfPress}, {\bf implicDiv2DFlow}. They are read from
907     the main parameter file "{\em data}" and are set by default to 1,1.
908 adcroft 1.1
909 adcroft 1.12 Equations \ref{eq:ustar-backward-free-surface} --
910     \ref{eq:vn+1-backward-free-surface} are modified as follows:
911 jmc 1.20 \begin{eqnarray*}
912 adcroft 1.1 \frac{ \vec{\bf v}^{n+1} }{ \Delta t }
913 jmc 1.3 + {\bf \nabla}_h b_s [ \beta {\eta}^{n+1} + (1-\beta) {\eta}^{n} ]
914     + \epsilon_{nh} {\bf \nabla}_h {\phi'_{nh}}^{n+1}
915 adcroft 1.1 = \frac{ \vec{\bf v}^* }{ \Delta t }
916 jmc 1.20 \end{eqnarray*}
917     \begin{eqnarray}
918 adcroft 1.1 \epsilon_{fs} \frac{ {\eta}^{n+1} - {\eta}^{n} }{ \Delta t}
919 jmc 1.5 + {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o}
920 adcroft 1.1 [ \gamma \vec{\bf v}^{n+1} + (1-\gamma) \vec{\bf v}^{n}] dr
921     = \epsilon_{fw} (P-E)
922 jmc 1.20 \label{eq:eta-n+1-CrankNick}
923     \end{eqnarray}
924 adcroft 1.1 where:
925     \begin{eqnarray*}
926     \vec{\bf v}^* & = &
927     \vec{\bf v} ^{n} + \Delta t \vec{\bf G}_{\vec{\bf v}} ^{(n+1/2)}
928 jmc 1.3 + (\beta-1) \Delta t {\bf \nabla}_h b_s {\eta}^{n}
929     + \Delta t {\bf \nabla}_h {\phi'_{hyd}}^{(n+1/2)}
930 adcroft 1.1 \\
931     {\eta}^* & = &
932     \epsilon_{fs} {\eta}^{n} + \epsilon_{fw} \Delta t (P-E)
933 jmc 1.5 - \Delta t {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o}
934 adcroft 1.1 [ \gamma \vec{\bf v}^* + (1-\gamma) \vec{\bf v}^{n}] dr
935     \end{eqnarray*}
936     \\
937 adcroft 1.6 In the hydrostatic case ($\epsilon_{nh}=0$), allowing us to find
938     ${\eta}^{n+1}$, thus:
939 adcroft 1.1 $$
940     \epsilon_{fs} {\eta}^{n+1} -
941 jmc 1.5 {\bf \nabla}_h \cdot \beta\gamma \Delta t^2 b_s (R_o - R_{fixed})
942 jmc 1.3 {\bf \nabla}_h {\eta}^{n+1}
943 adcroft 1.1 = {\eta}^*
944     $$
945 jmc 1.20 and then to compute ({\em CORRECTION\_STEP}):
946 adcroft 1.1 $$
947     \vec{\bf v}^{n+1} = \vec{\bf v}^{*}
948 jmc 1.3 - \beta \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}
949 adcroft 1.1 $$
950    
951 jmc 1.20 %The non-hydrostatic part is solved as described previously.
952 adcroft 1.6
953 jmc 1.20 \noindent
954     Notes:
955 adcroft 1.6 \begin{enumerate}
956 jmc 1.20 \item The RHS term of equation \ref{eq:eta-n+1-CrankNick}
957     corresponds the contribution of fresh water flux (P-E)
958     to the free-surface variations ($\epsilon_{fw}=1$,
959     {\bf useRealFreshWater}{\em=TRUE} in parameter file {\em data}).
960     In order to remain consistent with the tracer equation, specially in
961     the non-linear free-surface formulation, this term is also
962     affected by the Crank-Nickelson time stepping. The RHS reads:
963     $\epsilon_{fw} ( \gamma (P-E)^{n+1/2} + (1-\gamma) (P-E)^{n-1/2} )$
964 adcroft 1.6 \item The non-hydrostatic part of the code has not yet been
965 jmc 1.20 updated, and therefore cannot be used with $(\beta,\gamma) \neq (1,1)$.
966 adcroft 1.6 \item The stability criteria with Crank-Nickelson time stepping
967     for the pure linear gravity wave problem in cartesian coordinates is:
968     \begin{itemize}
969     \item $\beta + \gamma < 1$ : unstable
970     \item $\beta \geq 1/2$ and $ \gamma \geq 1/2$ : stable
971     \item $\beta + \gamma \geq 1$ : stable if
972 adcroft 1.1 $$
973     c_{max}^2 (\beta - 1/2)(\gamma - 1/2) + 1 \geq 0
974     $$
975     $$
976     \mbox{with }~
977     %c^2 = 2 g H {\Delta t}^2
978     %(\frac{1-cos 2 \pi / k}{\Delta x^2}
979     %+\frac{1-cos 2 \pi / l}{\Delta y^2})
980     %$$
981     %Practically, the most stringent condition is obtained with $k=l=2$ :
982     %$$
983     c_{max} = 2 \Delta t \: \sqrt{g H} \:
984     \sqrt{ \frac{1}{\Delta x^2} + \frac{1}{\Delta y^2} }
985     $$
986 adcroft 1.6 \end{itemize}
987     \end{enumerate}
988    

  ViewVC Help
Powered by ViewVC 1.1.22