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

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

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


Revision 1.8 - (show annotations) (download) (as text)
Fri Oct 5 19:41:08 2001 UTC (23 years, 9 months ago) by adcroft
Branch: MAIN
Changes since 1.7: +557 -281 lines
File MIME type: application/x-tex
Slight re-write of part2...

1 % $Header: /u/gcmpack/mitgcmdoc/part2/time_stepping.tex,v 1.7 2001/09/28 14:09:56 adcroft Exp $
2 % $Name: $
3
4 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 Since the model comes in several flavours and formulation, it would be
17 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 section \ref{sect:pressure-method-linear-backward}. These two flavours
41 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 $v^{n+1}$ will be non-divergent. Conceptually, the $*$ quantitites
65 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 \caption{Calling tree for the pressure method alogtihm}
84 \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 similarly for $H\widehat{v}$. The rigid-lid approzimation sets $w=0$
106 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 \begin{eqnarray}
111 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 \end{eqnarray}
123 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 continuity equation eliminates $u^{n+1}$ and $v^{n+1}$ yeilding an
134 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 & = &
143 \partial_x H \widehat{u^{*}}
144 + \partial_y H \widehat{v^{*}} \label{eq:elliptic}
145 \\
146 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 The correspondance to the code is as follows:
161 \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 \widehat{v^*}$, divergence and invertion of the elliptic operator in
169 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 \begin{eqnarray}
182 \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 \end{eqnarray}
189
190
191 \section{Pressure method with implicit linear free-surface}
192 \label{sect:pressure-method-linear-backward}
193
194 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
200 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 \begin{eqnarray}
232 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 & = &
242 - \frac{\eta^*}{\Delta t^2}
243 \label{eq:elliptic-backward-free-surface}
244 \\
245 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 \end{eqnarray}
248 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 reovered. However, the implicit treatment of the free-surface allows
254 the flow to be divergent and for the surface pressure/elevation to
255 respond on a finite time-scale (as opposed to instantly). To recovere
256 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 the time discrretized equation is:
335 \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 \begin{eqnarray}
344 \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 \end{eqnarray}
349 where ${\cal L}_\tau^{-1}$ is the inverse of the operator
350 \begin{equation}
351 {\cal L} = \left[ 1 + \Delta t \partial_r \kappa_v \partial_r \right]
352 \end{equation}
353 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 time. Explicit tendancies are evaluated at time level $n$ as a
381 function of the state at that time level (dotted arrow). The explicit
382 tendancy from the previous time level, $n-1$, is used to extrapolate
383 tendancies to $n+1/2$ (dashed arrow). This extrapolated tendancy
384 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 The Adams-Bashforth extrapolation of explicit tendancies fits neatly
421 into the pressure method algorithm when all state variables are
422 co-locacted in time. Fig.~\ref{fig:adams-bashforth-sync} illustrates
423 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 Adams-Bashforth extrapolation of the tracer tendancies is illustrated
457 byt the dashed arrow, the prediction at $n+1$ is indicated by the
458 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 variables with the flow. Explicit thermodynamics tendancies are
484 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 explicit tendancy from the previous time level, $n-3/2$, is used to
487 extrapolate tendancies to $n$ (dashed arrow). This extrapolated
488 tendancy allows thermo-dynamics variables to be stably integrated
489 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 staggering and algorith. The key difference between this and
506 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 Adams-Bashforth extrapoltion. Also, retaining the integer time-levels,
519 $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
556 The only difficulty with this approach is apparent in equation
557 $\ref{eq:Gt-n-staggered}$ and illustrated by the dotted arrow
558 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
566
567 \section{Non-hydrostatic formulation}
568 \label{sect:non-hydrostatic}
569
570 [to be written...]
571
572
573
574
575 \section{Variants on the Free Surface}
576
577 We now descibe the various formulations of the free-surface that
578 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 free-surface coordinate (units of $r$), correpsonding to
583 \ref{eq:discrete-time-backward-free-surface}, and
584 assuming no non-hydrostatic effects ($\epsilon_{nh} = 0$) is:
585 \begin{eqnarray}
586 \epsilon_{fs} {\eta}^{n+1} -
587 {\bf \nabla}_h \cdot \Delta t^2 (R_o-R_{fixed}) {\bf \nabla}_h b_s
588 {\eta}^{n+1} = {\eta}^*
589 \label{eq-solve2D}
590 \end{eqnarray}
591 where
592 \begin{eqnarray}
593 {\eta}^* = \epsilon_{fs} \: {\eta}^{n} -
594 \Delta t {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o} \vec{\bf v}^* dr
595 \: + \: \epsilon_{fw} \Delta_t (P-E)^{n}
596 \label{eq-solve2D_rhs}
597 \end{eqnarray}
598
599 \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 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 $$
617 \vec{\bf v}^{n+1} = \vec{\bf v}^{*}
618 - \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}
619 $$
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 additional equation for $\phi'_{nh}$. This is obtained by substituting
624 \ref{eq-tDsC-Hmom} and \ref{eq-tDsC-Vmom} into
625 \ref{eq-tDsC-cont}:
626 \begin{equation}
627 \left[ {\bf \nabla}_h^2 + \partial_{rr} \right] {\phi'_{nh}}^{n+1}
628 = \frac{1}{\Delta t} \left(
629 {\bf \nabla}_h \cdot \vec{\bf v}^{**} + \partial_r \dot{r}^* \right)
630 \end{equation}
631 where
632 \begin{displaymath}
633 \vec{\bf v}^{**} = \vec{\bf v}^* - \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}
634 \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 - \epsilon_{nh} \Delta t {\bf \nabla}_h {\phi'_{nh}}^{n+1}
644 \end{equation}
645 and the vertical velocity is found by integrating the continuity
646 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 without any consequence on the solution.
650
651 \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 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
685
686
687 \subsection{Crank-Nickelson barotropic time stepping}
688
689 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 \\
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 Equations \ref{eq-tDsC-Hmom} and \ref{eq-tDsC-eta} are modified as follows:
706 $$
707 \frac{ \vec{\bf v}^{n+1} }{ \Delta t }
708 + {\bf \nabla}_h b_s [ \beta {\eta}^{n+1} + (1-\beta) {\eta}^{n} ]
709 + \epsilon_{nh} {\bf \nabla}_h {\phi'_{nh}}^{n+1}
710 = \frac{ \vec{\bf v}^* }{ \Delta t }
711 $$
712 $$
713 \epsilon_{fs} \frac{ {\eta}^{n+1} - {\eta}^{n} }{ \Delta t}
714 + {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o}
715 [ \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 + (\beta-1) \Delta t {\bf \nabla}_h b_s {\eta}^{n}
723 + \Delta t {\bf \nabla}_h {\phi'_{hyd}}^{(n+1/2)}
724 \\
725 {\eta}^* & = &
726 \epsilon_{fs} {\eta}^{n} + \epsilon_{fw} \Delta t (P-E)
727 - \Delta t {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o}
728 [ \gamma \vec{\bf v}^* + (1-\gamma) \vec{\bf v}^{n}] dr
729 \end{eqnarray*}
730 \\
731 In the hydrostatic case ($\epsilon_{nh}=0$), allowing us to find
732 ${\eta}^{n+1}$, thus:
733 $$
734 \epsilon_{fs} {\eta}^{n+1} -
735 {\bf \nabla}_h \cdot \beta\gamma \Delta t^2 b_s (R_o - R_{fixed})
736 {\bf \nabla}_h {\eta}^{n+1}
737 = {\eta}^*
738 $$
739 and then to compute (correction step):
740 $$
741 \vec{\bf v}^{n+1} = \vec{\bf v}^{*}
742 - \beta \Delta t {\bf \nabla}_h b_s {\eta}^{n+1}
743 $$
744
745 The non-hydrostatic part is solved as described previously.
746
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 $$
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 \end{itemize}
772 \end{enumerate}
773

  ViewVC Help
Powered by ViewVC 1.1.22