10 |
terms are described first, afterwards the schemes that apply to |
terms are described first, afterwards the schemes that apply to |
11 |
passive and dynamically active tracers are described. |
passive and dynamically active tracers are described. |
12 |
|
|
13 |
\input{part2/notation} |
\input{s_algorithm/text/notation} |
14 |
|
|
15 |
\section{Time-stepping} |
\section{Time-stepping} |
16 |
|
\label{sec:time_stepping} |
17 |
\begin{rawhtml} |
\begin{rawhtml} |
18 |
<!-- CMIREDIR:time-stepping: --> |
<!-- CMIREDIR:time-stepping: --> |
19 |
\end{rawhtml} |
\end{rawhtml} |
51 |
independent of the particular time-stepping scheme chosen we will |
independent of the particular time-stepping scheme chosen we will |
52 |
describe first the over-arching algorithm, known as the pressure |
describe first the over-arching algorithm, known as the pressure |
53 |
method, with a rigid-lid model in section |
method, with a rigid-lid model in section |
54 |
\ref{sect:pressure-method-rigid-lid}. This algorithm is essentially |
\ref{sec:pressure-method-rigid-lid}. This algorithm is essentially |
55 |
unchanged, apart for some coefficients, when the rigid lid assumption |
unchanged, apart for some coefficients, when the rigid lid assumption |
56 |
is replaced with a linearized implicit free-surface, described in |
is replaced with a linearized implicit free-surface, described in |
57 |
section \ref{sect:pressure-method-linear-backward}. These two flavors |
section \ref{sec:pressure-method-linear-backward}. These two flavors |
58 |
of the pressure-method encompass all formulations of the model as it |
of the pressure-method encompass all formulations of the model as it |
59 |
exists today. The integration of explicit in time terms is out-lined |
exists today. The integration of explicit in time terms is out-lined |
60 |
in section \ref{sect:adams-bashforth} and put into the context of the |
in section \ref{sec:adams-bashforth} and put into the context of the |
61 |
overall algorithm in sections \ref{sect:adams-bashforth-sync} and |
overall algorithm in sections \ref{sec:adams-bashforth-sync} and |
62 |
\ref{sect:adams-bashforth-staggered}. Inclusion of non-hydrostatic |
\ref{sec:adams-bashforth-staggered}. Inclusion of non-hydrostatic |
63 |
terms requires applying the pressure method in three dimensions |
terms requires applying the pressure method in three dimensions |
64 |
instead of two and this algorithm modification is described in section |
instead of two and this algorithm modification is described in section |
65 |
\ref{sect:non-hydrostatic}. Finally, the free-surface equation may be |
\ref{sec:non-hydrostatic}. Finally, the free-surface equation may be |
66 |
treated more exactly, including non-linear terms, and this is |
treated more exactly, including non-linear terms, and this is |
67 |
described in section \ref{sect:nonlinear-freesurface}. |
described in section \ref{sec:nonlinear-freesurface}. |
68 |
|
|
69 |
|
|
70 |
\section{Pressure method with rigid-lid} |
\section{Pressure method with rigid-lid} |
71 |
\label{sect:pressure-method-rigid-lid} |
\label{sec:pressure-method-rigid-lid} |
72 |
\begin{rawhtml} |
\begin{rawhtml} |
73 |
<!-- CMIREDIR:pressure_method_rigid_lid: --> |
<!-- CMIREDIR:pressure_method_rigid_lid: --> |
74 |
\end{rawhtml} |
\end{rawhtml} |
75 |
|
|
76 |
\begin{figure} |
\begin{figure} |
77 |
\begin{center} |
\begin{center} |
78 |
\resizebox{4.0in}{!}{\includegraphics{part2/pressure-method-rigid-lid.eps}} |
\resizebox{4.0in}{!}{\includegraphics{s_algorithm/figs/pressure-method-rigid-lid.eps}} |
79 |
\end{center} |
\end{center} |
80 |
\caption{ |
\caption{ |
81 |
A schematic of the evolution in time of the pressure method |
A schematic of the evolution in time of the pressure method |
199 |
Fig.~\ref{fig:call-tree-pressure-method}. |
Fig.~\ref{fig:call-tree-pressure-method}. |
200 |
|
|
201 |
|
|
202 |
|
%\paragraph{Need to discuss implicit viscosity somewhere:} |
203 |
\paragraph{Need to discuss implicit viscosity somewhere:} |
In general, the horizontal momentum time-stepping can contain some terms |
204 |
|
that are treated implicitly in time, |
205 |
|
such as the vertical viscosity when using the backward time-stepping scheme |
206 |
|
(\varlink{implicitViscosity}{implicitViscosity} {\it =.TRUE.}). |
207 |
|
The method used to solve those implicit terms is provided in |
208 |
|
section \ref{sec:implicit-backward-stepping}, and modifies |
209 |
|
equations \ref{eq:discrete-time-u} and \ref{eq:discrete-time-v} to |
210 |
|
give: |
211 |
\begin{eqnarray} |
\begin{eqnarray} |
212 |
\frac{1}{\Delta t} u^{n+1} - \partial_z A_v \partial_z u^{n+1} |
u^{n+1} - \Delta t \partial_z A_v \partial_z u^{n+1} |
213 |
+ g \partial_x \eta^{n+1} & = & \frac{1}{\Delta t} u^{n} + |
+ \Delta t g \partial_x \eta^{n+1} & = & u^{n} + \Delta t G_u^{(n+1/2)} |
|
G_u^{(n+1/2)} |
|
214 |
\\ |
\\ |
215 |
\frac{1}{\Delta t} v^{n+1} - \partial_z A_v \partial_z v^{n+1} |
v^{n+1} - \Delta t \partial_z A_v \partial_z v^{n+1} |
216 |
+ g \partial_y \eta^{n+1} & = & \frac{1}{\Delta t} v^{n} + G_v^{(n+1/2)} |
+ \Delta t g \partial_y \eta^{n+1} & = & v^{n} + \Delta t G_v^{(n+1/2)} |
217 |
\end{eqnarray} |
\end{eqnarray} |
218 |
|
|
219 |
|
|
220 |
\section{Pressure method with implicit linear free-surface} |
\section{Pressure method with implicit linear free-surface} |
221 |
\label{sect:pressure-method-linear-backward} |
\label{sec:pressure-method-linear-backward} |
222 |
\begin{rawhtml} |
\begin{rawhtml} |
223 |
<!-- CMIREDIR:pressure_method_linear_backward: --> |
<!-- CMIREDIR:pressure_method_linear_backward: --> |
224 |
\end{rawhtml} |
\end{rawhtml} |
252 |
\label{eq:discrete-time-backward-free-surface} |
\label{eq:discrete-time-backward-free-surface} |
253 |
\end{equation} |
\end{equation} |
254 |
where the use of flow at time level $n+1$ makes the method implicit |
where the use of flow at time level $n+1$ makes the method implicit |
255 |
and backward in time. The is the preferred scheme since it still |
and backward in time. This is the preferred scheme since it still |
256 |
filters the fast unresolved wave motions by damping them. A centered |
filters the fast unresolved wave motions by damping them. A centered |
257 |
scheme, such as Crank-Nicholson, would alias the energy of the fast |
scheme, such as Crank-Nicholson (see section \ref{sec:freesurf-CrankNick}), |
258 |
modes onto slower modes of motion. |
would alias the energy of the fast modes onto slower modes of motion. |
259 |
|
|
260 |
As for the rigid-lid pressure method, equations |
As for the rigid-lid pressure method, equations |
261 |
\ref{eq:discrete-time-u}, \ref{eq:discrete-time-v} and |
\ref{eq:discrete-time-u}, \ref{eq:discrete-time-v} and |
286 |
the flow to be divergent and for the surface pressure/elevation to |
the flow to be divergent and for the surface pressure/elevation to |
287 |
respond on a finite time-scale (as opposed to instantly). To recover |
respond on a finite time-scale (as opposed to instantly). To recover |
288 |
the rigid-lid formulation, we introduced a switch-like parameter, |
the rigid-lid formulation, we introduced a switch-like parameter, |
289 |
$\epsilon_{fs}$, which selects between the free-surface and rigid-lid; |
$\epsilon_{fs}$ (\varlink{freesurfFac}{freesurfFac}), |
290 |
|
which selects between the free-surface and rigid-lid; |
291 |
$\epsilon_{fs}=1$ allows the free-surface to evolve; $\epsilon_{fs}=0$ |
$\epsilon_{fs}=1$ allows the free-surface to evolve; $\epsilon_{fs}=0$ |
292 |
imposes the rigid-lid. The evolution in time and location of variables |
imposes the rigid-lid. The evolution in time and location of variables |
293 |
is exactly as it was for the rigid-lid model so that |
is exactly as it was for the rigid-lid model so that |
298 |
|
|
299 |
|
|
300 |
\section{Explicit time-stepping: Adams-Bashforth} |
\section{Explicit time-stepping: Adams-Bashforth} |
301 |
\label{sect:adams-bashforth} |
\label{sec:adams-bashforth} |
302 |
\begin{rawhtml} |
\begin{rawhtml} |
303 |
<!-- CMIREDIR:adams_bashforth: --> |
<!-- CMIREDIR:adams_bashforth: --> |
304 |
\end{rawhtml} |
\end{rawhtml} |
308 |
the quasi-second order Adams-Bashforth method for all explicit terms |
the quasi-second order Adams-Bashforth method for all explicit terms |
309 |
in both the momentum and tracer equations. This is still the default |
in both the momentum and tracer equations. This is still the default |
310 |
mode of operation but it is now possible to use alternate schemes for |
mode of operation but it is now possible to use alternate schemes for |
311 |
tracers (see section \ref{sect:tracer-advection}). |
tracers (see section \ref{sec:tracer-advection}). |
312 |
|
|
313 |
\begin{figure} |
\begin{figure} |
314 |
\begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing} |
\begin{center} \fbox{ \begin{minipage}{4.5in} \begin{tabbing} |
325 |
\end{tabbing} \end{minipage} } \end{center} |
\end{tabbing} \end{minipage} } \end{center} |
326 |
\caption{ |
\caption{ |
327 |
Calling tree for the Adams-Bashforth time-stepping of temperature with |
Calling tree for the Adams-Bashforth time-stepping of temperature with |
328 |
implicit diffusion.} |
implicit diffusion. |
329 |
|
(\filelink{THERMODYNAMICS}{model-src-thermodynamics.F}, |
330 |
|
\filelink{ADAMS\_BASHFORTH2}{model-src-adams_bashforth2.F})} |
331 |
\label{fig:call-tree-adams-bashforth} |
\label{fig:call-tree-adams-bashforth} |
332 |
\end{figure} |
\end{figure} |
333 |
|
|
358 |
and forcing evolves smoothly. Problems can, and do, arise when forcing |
and forcing evolves smoothly. Problems can, and do, arise when forcing |
359 |
or motions are high frequency and this corresponds to a reduced |
or motions are high frequency and this corresponds to a reduced |
360 |
stability compared to a simple forward time-stepping of such terms. |
stability compared to a simple forward time-stepping of such terms. |
361 |
The model offers the possibility to leave the forcing term outside the |
The model offers the possibility to leave the tracer and momentum |
362 |
Adams-Bashforth extrapolation, by turning off the logical flag |
forcing terms and the dissipation terms outside the |
363 |
{\bf forcing\_In\_AB } (parameter file {\em data}, namelist {\em PARM01}, |
Adams-Bashforth extrapolation, by turning off the logical flags |
364 |
default value = True). |
\varlink{forcing\_In\_AB}{forcing_In_AB} |
365 |
|
(parameter file {\em data}, namelist {\em PARM01}, default value = True). |
366 |
|
(\varlink{tracForcingOutAB}{tracForcingOutAB}, default=0, |
367 |
|
\varlink{momForcingOutAB}{momForcingOutAB}, default=0) |
368 |
|
and \varlink{momDissip\_In\_AB}{momDissip_In_AB} |
369 |
|
(parameter file {\em data}, namelist {\em PARM01}, default value = True). |
370 |
|
respectively. |
371 |
|
|
372 |
A stability analysis for an oscillation equation should be given at this point. |
A stability analysis for an oscillation equation should be given at this point. |
373 |
\marginpar{AJA needs to find his notes on this...} |
\marginpar{AJA needs to find his notes on this...} |
375 |
A stability analysis for a relaxation equation should be given at this point. |
A stability analysis for a relaxation equation should be given at this point. |
376 |
\marginpar{...and for this too.} |
\marginpar{...and for this too.} |
377 |
|
|
378 |
|
\begin{figure} |
379 |
|
\begin{center} |
380 |
|
\resizebox{5.5in}{!}{\includegraphics{s_algorithm/figs/oscil+damp_AB2.eps}} |
381 |
|
\end{center} |
382 |
|
\caption{ |
383 |
|
Oscillatory and damping response of |
384 |
|
quasi-second order Adams-Bashforth scheme for different values |
385 |
|
of the $\epsilon_{AB}$ parameter (0., 0.1, 0.25, from top to bottom) |
386 |
|
The analytical solution (in black), the physical mode (in blue) |
387 |
|
and the numerical mode (in red) are represented with a CFL |
388 |
|
step of 0.1. |
389 |
|
The left column represents the oscillatory response |
390 |
|
on the complex plane for CFL ranging from 0.1 up to 0.9. |
391 |
|
The right column represents the damping response amplitude |
392 |
|
(y-axis) function of the CFL (x-axis). |
393 |
|
} |
394 |
|
\label{fig:adams-bashforth-respons} |
395 |
|
\end{figure} |
396 |
|
|
397 |
|
|
398 |
|
|
399 |
\section{Implicit time-stepping: backward method} |
\section{Implicit time-stepping: backward method} |
400 |
|
\label{sec:implicit-backward-stepping} |
401 |
\begin{rawhtml} |
\begin{rawhtml} |
402 |
<!-- CMIREDIR:implicit_time-stepping_backward: --> |
<!-- CMIREDIR:implicit_time-stepping_backward: --> |
403 |
\end{rawhtml} |
\end{rawhtml} |
445 |
implicit and are thus cast as a an explicit drag term. |
implicit and are thus cast as a an explicit drag term. |
446 |
|
|
447 |
\section{Synchronous time-stepping: variables co-located in time} |
\section{Synchronous time-stepping: variables co-located in time} |
448 |
\label{sect:adams-bashforth-sync} |
\label{sec:adams-bashforth-sync} |
449 |
\begin{rawhtml} |
\begin{rawhtml} |
450 |
<!-- CMIREDIR:adams_bashforth_sync: --> |
<!-- CMIREDIR:adams_bashforth_sync: --> |
451 |
\end{rawhtml} |
\end{rawhtml} |
452 |
|
|
453 |
\begin{figure} |
\begin{figure} |
454 |
\begin{center} |
\begin{center} |
455 |
\resizebox{5.0in}{!}{\includegraphics{part2/adams-bashforth-sync.eps}} |
\resizebox{5.0in}{!}{\includegraphics{s_algorithm/figs/adams-bashforth-sync.eps}} |
456 |
\end{center} |
\end{center} |
457 |
\caption{ |
\caption{ |
458 |
A schematic of the explicit Adams-Bashforth and implicit time-stepping |
A schematic of the explicit Adams-Bashforth and implicit time-stepping |
565 |
\ref{fig:call-tree-adams-bashforth-sync}. |
\ref{fig:call-tree-adams-bashforth-sync}. |
566 |
|
|
567 |
\section{Staggered baroclinic time-stepping} |
\section{Staggered baroclinic time-stepping} |
568 |
\label{sect:adams-bashforth-staggered} |
\label{sec:adams-bashforth-staggered} |
569 |
\begin{rawhtml} |
\begin{rawhtml} |
570 |
<!-- CMIREDIR:adams_bashforth_staggered: --> |
<!-- CMIREDIR:adams_bashforth_staggered: --> |
571 |
\end{rawhtml} |
\end{rawhtml} |
572 |
|
|
573 |
\begin{figure} |
\begin{figure} |
574 |
\begin{center} |
\begin{center} |
575 |
\resizebox{5.5in}{!}{\includegraphics{part2/adams-bashforth-staggered.eps}} |
\resizebox{5.5in}{!}{\includegraphics{s_algorithm/figs/adams-bashforth-staggered.eps}} |
576 |
\end{center} |
\end{center} |
577 |
\caption{ |
\caption{ |
578 |
A schematic of the explicit Adams-Bashforth and implicit time-stepping |
A schematic of the explicit Adams-Bashforth and implicit time-stepping |
710 |
|
|
711 |
|
|
712 |
\section{Non-hydrostatic formulation} |
\section{Non-hydrostatic formulation} |
713 |
\label{sect:non-hydrostatic} |
\label{sec:non-hydrostatic} |
714 |
\begin{rawhtml} |
\begin{rawhtml} |
715 |
<!-- CMIREDIR:non-hydrostatic_formulation: --> |
<!-- CMIREDIR:non-hydrostatic_formulation: --> |
716 |
\end{rawhtml} |
\end{rawhtml} |
729 |
\frac{1}{\Delta t} v^{n+1} + g \partial_y \eta^{n+1} + \partial_y \phi_{nh}^{n+1} |
\frac{1}{\Delta t} v^{n+1} + g \partial_y \eta^{n+1} + \partial_y \phi_{nh}^{n+1} |
730 |
& = & \frac{1}{\Delta t} v^{n} + G_v^{(n+1/2)} \label{eq:discrete-time-v-nh} \\ |
& = & \frac{1}{\Delta t} v^{n} + G_v^{(n+1/2)} \label{eq:discrete-time-v-nh} \\ |
731 |
\frac{1}{\Delta t} w^{n+1} + \partial_r \phi_{nh}^{n+1} |
\frac{1}{\Delta t} w^{n+1} + \partial_r \phi_{nh}^{n+1} |
732 |
& = & \frac{1}{\Delta t} w^{n} + G_w^{(n+1/2)} \label{eq:discrete-time-w-nh} \\ |
& = & \frac{1}{\Delta t} w^{n} + G_w^{(n+1/2)} \label{eq:discrete-time-w-nh} |
733 |
\end{eqnarray} |
\end{eqnarray} |
734 |
which must satisfy the discrete-in-time depth integrated continuity, |
which must satisfy the discrete-in-time depth integrated continuity, |
735 |
equation~\ref{eq:discrete-time-backward-free-surface} and the local continuity equation |
equation~\ref{eq:discrete-time-backward-free-surface} and the local continuity equation |
802 |
v^{**} & = & v^{*} - \Delta t g \partial_y \eta^{n+1} \label{eq:vnx-nh}\\ |
v^{**} & = & v^{*} - \Delta t g \partial_y \eta^{n+1} \label{eq:vnx-nh}\\ |
803 |
\partial_{xx} \phi_{nh}^{n+1} + \partial_{yy} \phi_{nh}^{n+1} + |
\partial_{xx} \phi_{nh}^{n+1} + \partial_{yy} \phi_{nh}^{n+1} + |
804 |
\partial_{rr} \phi_{nh}^{n+1} & = & |
\partial_{rr} \phi_{nh}^{n+1} & = & |
805 |
\partial_x u^{**} + \partial_y v^{**} + \partial_r w^{*} \\ |
\partial_x u^{**} + \partial_y v^{**} + \partial_r w^{*} \label{eq:phi-nh}\\ |
806 |
u^{n+1} & = & u^{**} - \Delta t \partial_x \phi_{nh}^{n+1} \label{eq:un+1-nh}\\ |
u^{n+1} & = & u^{**} - \Delta t \partial_x \phi_{nh}^{n+1} \label{eq:un+1-nh}\\ |
807 |
v^{n+1} & = & v^{**} - \Delta t \partial_y \phi_{nh}^{n+1} \label{eq:vn+1-nh}\\ |
v^{n+1} & = & v^{**} - \Delta t \partial_y \phi_{nh}^{n+1} \label{eq:vn+1-nh}\\ |
808 |
\partial_r w^{n+1} & = & - \partial_x u^{n+1} - \partial_y v^{n+1} |
\partial_r w^{n+1} & = & - \partial_x u^{n+1} - \partial_y v^{n+1} |
813 |
|
|
814 |
|
|
815 |
\section{Variants on the Free Surface} |
\section{Variants on the Free Surface} |
816 |
\label{sect:free-surface} |
\label{sec:free-surface} |
817 |
|
|
818 |
We now describe the various formulations of the free-surface that |
We now describe the various formulations of the free-surface that |
819 |
include non-linear forms, implicit in time using Crank-Nicholson, |
include non-linear forms, implicit in time using Crank-Nicholson, |
833 |
\begin{eqnarray} |
\begin{eqnarray} |
834 |
{\eta}^* = \epsilon_{fs} \: {\eta}^{n} - |
{\eta}^* = \epsilon_{fs} \: {\eta}^{n} - |
835 |
\Delta t {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o} \vec{\bf v}^* dr |
\Delta t {\bf \nabla}_h \cdot \int_{R_{fixed}}^{R_o} \vec{\bf v}^* dr |
836 |
\: + \: \epsilon_{fw} \Delta_t (P-E)^{n} |
\: + \: \epsilon_{fw} \Delta t (P-E)^{n} |
837 |
\label{eq-solve2D_rhs} |
\label{eq-solve2D_rhs} |
838 |
\end{eqnarray} |
\end{eqnarray} |
839 |
|
|
840 |
\fbox{ \begin{minipage}{4.75in} |
\fbox{ \begin{minipage}{4.75in} |
841 |
{\em S/R SOLVE\_FOR\_PRESSURE} ({\em solve\_for\_pressure.F}) |
{\em S/R SOLVE\_FOR\_PRESSURE} ({\em solve\_for\_pressure.F}) |
842 |
|
|
843 |
$u^*$: {\bf GuNm1} ({\em DYNVARS.h}) |
$u^*$: {\bf gU} ({\em DYNVARS.h}) |
844 |
|
|
845 |
$v^*$: {\bf GvNm1} ({\em DYNVARS.h}) |
$v^*$: {\bf gV} ({\em DYNVARS.h}) |
846 |
|
|
847 |
$\eta^*$: {\bf cg2d\_b} (\em SOLVE\_FOR\_PRESSURE.h) |
$\eta^*$: {\bf cg2d\_b} (\em SOLVE\_FOR\_PRESSURE.h) |
848 |
|
|
894 |
|
|
895 |
$\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h) |
$\eta^{n+1}$: {\bf etaN} (\em DYNVARS.h) |
896 |
|
|
897 |
$\phi_{nh}^{n+1}$: {\bf phi\_nh} (\em DYNVARS.h) |
$\phi_{nh}^{n+1}$: {\bf phi\_nh} (\em NH\_VARS.h) |
898 |
|
|
899 |
$u^*$: {\bf GuNm1} ({\em DYNVARS.h}) |
$u^*$: {\bf gU} ({\em DYNVARS.h}) |
900 |
|
|
901 |
$v^*$: {\bf GvNm1} ({\em DYNVARS.h}) |
$v^*$: {\bf gV} ({\em DYNVARS.h}) |
902 |
|
|
903 |
$u^{n+1}$: {\bf uVel} ({\em DYNVARS.h}) |
$u^{n+1}$: {\bf uVel} ({\em DYNVARS.h}) |
904 |
|
|
926 |
|
|
927 |
|
|
928 |
\subsection{Crank-Nickelson barotropic time stepping} |
\subsection{Crank-Nickelson barotropic time stepping} |
929 |
\label{sect:freesurf-CrankNick} |
\label{sec:freesurf-CrankNick} |
930 |
|
|
931 |
The full implicit time stepping described previously is |
The full implicit time stepping described previously is |
932 |
unconditionally stable but damps the fast gravity waves, resulting in |
unconditionally stable but damps the fast gravity waves, resulting in |