/[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.27 - (hide annotations) (download) (as text)
Fri Aug 27 13:08:18 2010 UTC (14 years, 10 months ago) by jmc
Branch: MAIN
Changes since 1.26: +6 -6 lines
File MIME type: application/x-tex
changed for new directory path:
 s/input{part2\//input{s_algorithm\/text\//g
 /\\includegraphics.*{part2\//s/{part2\//{s_algorithm\/figs\//g

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

  ViewVC Help
Powered by ViewVC 1.1.22