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

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

  ViewVC Help
Powered by ViewVC 1.1.22