/[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.26 - (show annotations) (download) (as text)
Thu Jun 29 01:45:32 2006 UTC (17 years, 10 months ago) by jmc
Branch: MAIN
Changes since 1.25: +53 -17 lines
File MIME type: application/x-tex
add statiblity diagram for AB-2

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

  ViewVC Help
Powered by ViewVC 1.1.22