/[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.18 - (hide annotations) (download) (as text)
Thu Oct 14 22:22:30 2004 UTC (20 years, 8 months ago) by jmc
Branch: MAIN
Changes since 1.17: +19 -16 lines
File MIME type: application/x-tex
updated

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

  ViewVC Help
Powered by ViewVC 1.1.22