18 |
\label{fig:ab_oscill_response} |
\label{fig:ab_oscill_response} |
19 |
\end{figure} |
\end{figure} |
20 |
|
|
21 |
As seen on fig.\ref{fig:adams-bashforth-respons} |
The third-order Adams-Bashforth time stepping (AB-3) provides |
22 |
The third-order Adams-Bashforth time stepping (AB-3) can be used instead |
several advantages (see, e.g., \cite{durr:91}) compared to |
23 |
of the default quasi-second order Adams-Bashforth (AB-2), |
the default quasi-second order Adams-Bashforth (AB-2): |
|
with several advantages (see, e.g., \cite{durr:91}): |
|
24 |
\begin{itemize} |
\begin{itemize} |
25 |
\item higher accuracy. |
\item higher accuracy; |
26 |
\item stable with a longer time-step (for an oscillatory problem |
\item stable with a longer time-step; |
27 |
like advection or Coriolis, stable up to a CFL of 0.72, |
\item no additional computation (just requires the storage of one additional |
28 |
compared to only 0.50 with AB-2 and $\epsilon_{AB} = 0.1$) |
time level). |
|
(fig.\ref{fig:ab_oscill_response}) |
|
|
\item no additional computation, but only requires to store one additional |
|
|
time level. |
|
29 |
\end{itemize} |
\end{itemize} |
30 |
|
|
31 |
The extrapolation forward in time of the tendency (replacing equation |
The $3^{rd}$ order Adams-Bashforth can be used to |
32 |
\ref{eq:adams-bashforth2} can be written: |
extrapolate forward in time the tendency |
33 |
|
(replacing equation \ref{eq:adams-bashforth2}) |
34 |
|
which writes: |
35 |
\begin{equation} |
\begin{equation} |
36 |
G_\tau^{(n+1/2)} = ( 1 + \alpha_{AB} + \beta_{AB}) G_\tau^n |
G_\tau^{(n+1/2)} = ( 1 + \alpha_{AB} + \beta_{AB}) G_\tau^n |
37 |
- ( \alpha_{AB} + 2 \beta_{AB}) G_\tau^{n-1} |
- ( \alpha_{AB} + 2 \beta_{AB}) G_\tau^{n-1} |
38 |
+ \beta_{AB} G_\tau^{n-2} |
+ \beta_{AB} G_\tau^{n-2} |
39 |
\label{eq:adams-bashforth3} |
\label{eq:adams-bashforth3} |
40 |
\end{equation} |
\end{equation} |
41 |
with $(\alpha_{AB},\beta_{AB}) = (1/2, 5/12)$ corresponding to the |
The 3rd order AB is obtained |
42 |
3rd order AB. One can also recover |
with $(\alpha_{AB},\,\beta_{AB}) = (1/2,\,5/12)$. |
43 |
The quasi-2nd order AB corresponds to the particular case |
Note that selecting |
44 |
$(\alpha_{AB},\beta_{AB}) = (1/2+\epsilon_{AB}, 0)$. |
$(\alpha_{AB},\,\beta_{AB}) = (1/2+\epsilon_{AB},\,0)$ |
45 |
|
one recovers the quasi-2nd order AB. |
46 |
One can also extend the stability limit |
%as illustrated on fig.\ref{fig:adams-bashforth-respons}. |
47 |
up to a CFL of 0.786 for an oscillatory problem |
|
48 |
|
The AB-3 time stepping improves the stability limit |
49 |
|
for an oscillatory problem like advection or Coriolis. |
50 |
|
As seen from Fig.\ref{fig:ab_oscill_response}, |
51 |
|
it remains stable up to a CFL of 0.72, |
52 |
|
compared to only 0.50 with AB-2 and $\epsilon_{AB} = 0.1$. |
53 |
|
% |
54 |
|
It is interesting to note that the stability limit can be further |
55 |
|
extended up to a CFL of 0.786 for an oscillatory problem |
56 |
(see fig.\ref{fig:ab_oscill_response}) |
(see fig.\ref{fig:ab_oscill_response}) |
57 |
using $(\alpha_{AB},\beta_{AB}) = (0.5, 0.2811)$ |
using $(\alpha_{AB},\,\beta_{AB}) = (0.5,\,0.2811)$ |
58 |
but then the scheme is only 2nd order accurate. |
but then the scheme is only 2nd order accurate. |
59 |
|
|
60 |
\begin{figure}[ht] |
\begin{figure}[ht] |
74 |
|
|
75 |
A way to enable the use of a longer time step is |
A way to enable the use of a longer time step is |
76 |
to keep the dissipation terms outside the AB extrapolation |
to keep the dissipation terms outside the AB extrapolation |
77 |
(therefore using a simple forward time-stepping) (setting |
(setting {\em momDissip\_In\_AB=.FALSE.} in main parameter file |
78 |
momDissip\_In\_AB=.FALSE. in main parameter file "data", |
"\texttt{data}", namelist {\em PARM03}), |
79 |
namelist PARM03), and use AB-3 for advection and Coriolis terms. |
thus returning to a simple forward time-stepping for dissipation, |
80 |
|
and to use AB-3 only for advection and Coriolis terms. |
81 |
|
|
82 |
The AB-3 time stepping is activated by defining the option |
The AB-3 time stepping is activated by defining the option |
83 |
\#define ALLOW\_ADAMSBASHFORTH\_3 |
{\em \#define ALLOW\_ADAMSBASHFORTH\_3} |
84 |
in CPP\_OPTIONS.h |
in "\texttt{CPP\_OPTIONS.h}". |
85 |
The parameters $\alpha_{AB},\beta_{AB}$ can be set from the |
The parameters $\alpha_{AB},\beta_{AB}$ can be set from the |
86 |
main parameter file "data" (namelist "PARM03") and their |
main parameter file "\texttt{data}" (namelist {\em PARM03}) and their |
87 |
default values correspond to the 3rd order Adams-Bashforth. |
default value corresponds to the 3rd order Adams-Bashforth. |
88 |
A simple example is provided in verification/advect\_xy/input.ab3\_c4. |
A simple example is provided in "\texttt{verification/advect\_xy/input.ab3\_c4}". |
89 |
|
|
90 |
The AB-3 is not yet available for |
The AB-3 is not yet available for |
91 |
the vertical momentum equation (Non-Hydrostatic) and passive |
the vertical momentum equation (Non-Hydrostatic) |
92 |
tracers. |
neither for passive tracers. |
93 |
|
|
94 |
\subsection{Time-extrapolation of tracer (rather than tendency)} |
\subsection{Time-extrapolation of tracer (rather than tendency)} |
95 |
(to be continued ...) |
(to be continued ...) |