/[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.11 - (hide annotations) (download) (as text)
Tue Nov 13 16:45:41 2001 UTC (23 years, 7 months ago) by adcroft
Branch: MAIN
Changes since 1.10: +2 -2 lines
File MIME type: application/x-tex
Fixed $\ref$

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

  ViewVC Help
Powered by ViewVC 1.1.22