New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
chap_time_domain.tex in NEMO/trunk/doc/latex/NEMO/subfiles – NEMO

source: NEMO/trunk/doc/latex/NEMO/subfiles/chap_time_domain.tex @ 11582

Last change on this file since 11582 was 11582, checked in by nicolasmartin, 5 years ago

New LaTeX commands \nam and \np to mention namelist content (step 2)
Finally convert \forcode{...} following \np{}{} into optional arg of the new command \np[]{}{}

File size: 20.7 KB
Line 
1\documentclass[../main/NEMO_manual]{subfiles}
2
3\onlyinsubfile{\makeindex}
4
5\begin{document}
6
7% ================================================================
8% Chapter 2 ——— Time Domain (step.F90)
9% ================================================================
10\chapter{Time Domain}
11\label{chap:TD}
12\chaptertoc
13
14% Missing things:
15%  - daymod: definition of the time domain (nit000, nitend and the calendar)
16
17\gmcomment{STEVEN :maybe a picture of the directory structure in the introduction which could be referred to here,
18  would help  ==> to be added}
19%%%%
20
21\newpage
22
23Having defined the continuous equations in \autoref{chap:MB}, we need now to choose a time discretization,
24a key feature of an ocean model as it exerts a strong influence on the structure of the computer code
25(\ie\ on its flowchart).
26In the present chapter, we provide a general description of the \NEMO\  time stepping strategy and
27the consequences for the order in which the equations are solved.
28
29% ================================================================
30% Time Discretisation
31% ================================================================
32\section{Time stepping environment}
33\label{sec:TD_environment}
34
35The time stepping used in \NEMO\ is a three level scheme that can be represented as follows:
36\begin{equation}
37  \label{eq:TD}
38  x^{t + \rdt} = x^{t - \rdt} + 2 \, \rdt \ \text{RHS}_x^{t - \rdt, \, t, \, t + \rdt}
39\end{equation}
40where $x$ stands for $u$, $v$, $T$ or $S$;
41RHS is the Right-Hand-Side of the corresponding time evolution equation;
42$\rdt$ is the time step;
43and the superscripts indicate the time at which a quantity is evaluated.
44Each term of the RHS is evaluated at a specific time stepping depending on the physics with which it is associated.
45
46The choice of the time stepping used for this evaluation is discussed below as well as
47the implications for starting or restarting a model simulation.
48Note that the time stepping calculation is generally performed in a single operation.
49With such a complex and nonlinear system of equations it would be dangerous to let a prognostic variable evolve in
50time for each term separately.
51
52The three level scheme requires three arrays for each prognostic variable.
53For each variable $x$ there is $x_b$ (before), $x_n$ (now) and $x_a$.
54The third array, although referred to as $x_a$ (after) in the code,
55is usually not the variable at the after time step;
56but rather it is used to store the time derivative (RHS in \autoref{eq:TD}) prior to time-stepping the equation.
57The time stepping itself is performed once at each time step where implicit vertical diffusion is computed, \ie\ in the \mdl{trazdf} and \mdl{dynzdf} modules.
58
59% -------------------------------------------------------------------------------------------------------------
60%        Non-Diffusive Part---Leapfrog Scheme
61% -------------------------------------------------------------------------------------------------------------
62\section{Non-diffusive part --- Leapfrog scheme}
63\label{sec:TD_leap_frog}
64
65The time stepping used for processes other than diffusion is the well-known leapfrog scheme
66\citep{mesinger.arakawa_bk76}.
67This scheme is widely used for advection processes in low-viscosity fluids.
68It is a time centred scheme, \ie\ the RHS in \autoref{eq:TD} is evaluated at time step $t$, the now time step.
69It may be used for momentum and tracer advection, pressure gradient, and Coriolis terms,
70but not for diffusion terms.
71It is an efficient method that achieves second-order accuracy with
72just one right hand side evaluation per time step.
73Moreover, it does not artificially damp linear oscillatory motion nor does it produce instability by
74amplifying the oscillations.
75These advantages are somewhat diminished by the large phase-speed error of the leapfrog scheme,
76and the unsuitability of leapfrog differencing for the representation of diffusion and Rayleigh damping processes.
77However, the scheme allows the coexistence of a numerical and a physical mode due to
78its leading third order dispersive error.
79In other words a divergence of odd and even time steps may occur.
80To prevent it, the leapfrog scheme is often used in association with a Robert-Asselin time filter
81(hereafter the LF-RA scheme).
82This filter, first designed by \citet{robert_JMSJ66} and more comprehensively studied by \citet{asselin_MWR72},
83is a kind of laplacian diffusion in time that mixes odd and even time steps:
84\begin{equation}
85  \label{eq:TD_asselin}
86  x_F^t = x^t + \gamma \, \lt[ x_F^{t - \rdt} - 2 x^t + x^{t + \rdt} \rt]
87\end{equation}
88where the subscript $F$ denotes filtered values and $\gamma$ is the Asselin coefficient.
89$\gamma$ is initialized as \np{rn_atfp}{rn\_atfp} (namelist parameter).
90Its default value is \np[=10.e-3]{rn_atfp}{rn\_atfp} (see \autoref{sec:TD_mLF}),
91causing only a weak dissipation of high frequency motions (\citep{farge-coulombier_phd87}).
92The addition of a time filter degrades the accuracy of the calculation from second to first order.
93However, the second order truncation error is proportional to $\gamma$, which is small compared to 1.
94Therefore, the LF-RA is a quasi second order accurate scheme.
95The LF-RA scheme is preferred to other time differencing schemes such as predictor corrector or trapezoidal schemes,
96because the user has an explicit and simple control of the magnitude of the time diffusion of the scheme.
97When used with the 2nd order space centred discretisation of the advection terms in
98the momentum and tracer equations, LF-RA avoids implicit numerical diffusion:
99diffusion is set explicitly by the user through the Robert-Asselin
100filter parameter and the viscosity and diffusion coefficients.
101
102% -------------------------------------------------------------------------------------------------------------
103%        Diffusive Part---Forward or Backward Scheme
104% -------------------------------------------------------------------------------------------------------------
105\section{Diffusive part --- Forward or backward scheme}
106\label{sec:TD_forward_imp}
107
108The leapfrog differencing scheme is unsuitable for the representation of diffusion and damping processes.
109For a tendency $D_x$, representing a diffusion term or a restoring term to a tracer climatology
110(when present, see \autoref{sec:TRA_dmp}), a forward time differencing scheme is used :
111\[
112  %\label{eq:TD_euler}
113  x^{t + \rdt} = x^{t - \rdt} + 2 \, \rdt \ D_x^{t - \rdt}
114\]
115
116This is diffusive in time and conditionally stable.
117The conditions for stability of second and fourth order horizontal diffusion schemes are \citep{griffies_bk04}:
118\begin{equation}
119  \label{eq:TD_euler_stability}
120  A^h <
121  \begin{cases}
122    \frac{e^2}{ 8 \, \rdt} & \text{laplacian diffusion} \\
123    \frac{e^4}{64 \, \rdt} & \text{bilaplacian diffusion}
124  \end{cases}
125\end{equation}
126where $e$ is the smallest grid size in the two horizontal directions and $A^h$ is the mixing coefficient.
127The linear constraint \autoref{eq:TD_euler_stability} is a necessary condition, but not sufficient.
128If it is not satisfied, even mildly, then the model soon becomes wildly unstable.
129The instability can be removed by either reducing the length of the time steps or reducing the mixing coefficient.
130
131For the vertical diffusion terms, a forward time differencing scheme can be used,
132but usually the numerical stability condition imposes a strong constraint on the time step. To overcome the stability constraint, a
133backward (or implicit) time differencing scheme is used. This scheme is unconditionally stable but diffusive and can be written as follows:
134\begin{equation}
135  \label{eq:TD_imp}
136  x^{t + \rdt} = x^{t - \rdt} + 2 \, \rdt \ \text{RHS}_x^{t + \rdt}
137\end{equation}
138
139%%gm
140%%gm   UPDATE the next paragraphs with time varying thickness ...
141%%gm
142
143This scheme is rather time consuming since it requires a matrix inversion. For example, the finite difference approximation of the temperature equation is:
144\[
145  % \label{eq:TD_imp_zdf}
146  \frac{T(k)^{t + 1} - T(k)^{t - 1}}{2 \; \rdt}
147  \equiv
148  \text{RHS} + \frac{1}{e_{3t}} \delta_k \lt[ \frac{A_w^{vT}}{e_{3w} } \delta_{k + 1/2} \lt[ T^{t + 1} \rt] \rt]
149\]
150where RHS is the right hand side of the equation except for the vertical diffusion term.
151We rewrite \autoref{eq:TD_imp} as:
152\begin{equation}
153  \label{eq:TD_imp_mat}
154  -c(k + 1) \; T^{t + 1}(k + 1) + d(k) \; T^{t + 1}(k) - \; c(k) \; T^{t + 1}(k - 1) \equiv b(k)
155\end{equation}
156where
157\begin{align*}
158  c(k) &= A_w^{vT} (k) \, / \, e_{3w} (k)     \\
159  d(k) &= e_{3t}   (k)       \, / \, (2 \rdt) + c_k + c_{k + 1}    \\
160  b(k) &= e_{3t}   (k) \; \lt( T^{t - 1}(k) \, / \, (2 \rdt) + \text{RHS} \rt)
161\end{align*}
162
163\autoref{eq:TD_imp_mat} is a linear system of equations with an associated matrix which is tridiagonal.
164Moreover,
165$c(k)$ and $d(k)$ are positive and the diagonal term is greater than the sum of the two extra-diagonal terms,
166therefore a special adaptation of the Gauss elimination procedure is used to find the solution
167(see for example \citet{richtmyer.morton_bk67}).
168
169% -------------------------------------------------------------------------------------------------------------
170%        Surface Pressure gradient
171% -------------------------------------------------------------------------------------------------------------
172\section{Surface pressure gradient}
173\label{sec:TD_spg_ts}
174
175The leapfrog environment supports a centred in time computation of the surface pressure, \ie\ evaluated
176at \textit{now} time step. This refers to as the explicit free surface case in the code (\np[=.true.]{ln_dynspg_exp}{ln\_dynspg\_exp}).
177This choice however imposes a strong constraint on the time step which should be small enough to resolve the propagation
178of external gravity waves. As a matter of fact, one rather use in a realistic setup, a split-explicit free surface
179(\np[=.true.]{ln_dynspg_ts}{ln\_dynspg\_ts}) in which barotropic and baroclinic dynamical equations are solved separately with ad-hoc
180time steps. The use of the time-splitting (in combination with non-linear free surface) imposes some constraints on the design of
181the overall flowchart, in particular to ensure exact tracer conservation (see \autoref{fig:TD_TimeStep_flowchart}).
182
183Compared to the former use of the filtered free surface in \NEMO\ v3.6 (\citet{roullet.madec_JGR00}), the use of a split-explicit free surface is advantageous
184on massively parallel computers. Indeed, no global computations are anymore required by the elliptic solver which saves a substantial amount of communication
185time. Fast barotropic motions (such as tides) are also simulated with a better accuracy.
186
187%\gmcomment{
188%>>>>>>>>>>>>>>>>>>>>>>>>>>>>
189\begin{figure}[!t]
190  \centering
191  \includegraphics[width=0.66\textwidth]{Fig_TimeStepping_flowchart_v4}
192  \caption[Leapfrog time stepping sequence with split-explicit free surface]{
193    Sketch of the leapfrog time stepping sequence in \NEMO\ with split-explicit free surface.
194    The latter combined with non-linear free surface requires the dynamical tendency being
195    updated prior tracers tendency to ensure conservation.
196    Note the use of time integrated fluxes issued from the barotropic loop in
197    subsequent calculations of tracer advection and in the continuity equation.
198    Details about the time-splitting scheme can be found in \autoref{subsec:DYN_spg_ts}.}
199  \label{fig:TD_TimeStep_flowchart}
200\end{figure}
201%>>>>>>>>>>>>>>>>>>>>>>>>>>>>
202%}
203
204% -------------------------------------------------------------------------------------------------------------
205%        The Modified Leapfrog -- Asselin Filter scheme
206% -------------------------------------------------------------------------------------------------------------
207\section{Modified Leapfrog -- Asselin filter scheme}
208\label{sec:TD_mLF}
209
210Significant changes have been introduced by \cite{leclair.madec_OM09} in the LF-RA scheme in order to
211ensure tracer conservation and to allow the use of a much smaller value of the Asselin filter parameter.
212The modifications affect both the forcing and filtering treatments in the LF-RA scheme.
213
214In a classical LF-RA environment, the forcing term is centred in time,
215\ie\ it is time-stepped over a $2 \rdt$ period:
216$x^t = x^t + 2 \rdt Q^t$ where $Q$ is the forcing applied to $x$,
217and the time filter is given by \autoref{eq:TD_asselin} so that $Q$ is redistributed over several time step.
218In the modified LF-RA environment, these two formulations have been replaced by:
219\begin{gather}
220  \label{eq:TD_forcing}
221  x^{t + \rdt} = x^{t - \rdt} + \rdt \lt( Q^{t - \rdt / 2} + Q^{t + \rdt / 2} \rt\\
222  \label{eq:TD_RA}
223  x_F^t       = x^t + \gamma \, \lt( x_F^{t - \rdt} - 2 x^t + x^{t + \rdt} \rt)
224                    - \gamma \, \rdt \, \lt( Q^{t + \rdt / 2} - Q^{t - \rdt / 2} \rt)
225\end{gather}
226The change in the forcing formulation given by \autoref{eq:TD_forcing} (see \autoref{fig:TD_MLF_forcing})
227has a significant effect:
228the forcing term no longer excites the divergence of odd and even time steps \citep{leclair.madec_OM09}.
229% forcing seen by the model....
230This property improves the LF-RA scheme in two aspects.
231First, the LF-RA can now ensure the local and global conservation of tracers.
232Indeed, time filtering is no longer required on the forcing part.
233The influence of the Asselin filter on the forcing is explicitly removed by adding a new term in the filter
234(last term in \autoref{eq:TD_RA} compared to \autoref{eq:TD_asselin}).
235Since the filtering of the forcing was the source of non-conservation in the classical LF-RA scheme,
236the modified formulation becomes conservative \citep{leclair.madec_OM09}.
237Second, the LF-RA becomes a truly quasi -second order scheme.
238Indeed, \autoref{eq:TD_forcing} used in combination with a careful treatment of static instability
239(\autoref{subsec:ZDF_evd}) and of the TKE physics (\autoref{subsec:ZDF_tke_ene})
240(the two other main sources of time step divergence),
241allows a reduction by two orders of magnitude of the Asselin filter parameter.
242
243Note that the forcing is now provided at the middle of a time step:
244$Q^{t + \rdt / 2}$ is the forcing applied over the $[t,t + \rdt]$ time interval.
245This and the change in the time filter, \autoref{eq:TD_RA},
246allows for an exact evaluation of the contribution due to the forcing term between any two time steps,
247even if separated by only $\rdt$ since the time filter is no longer applied to the forcing term.
248
249%>>>>>>>>>>>>>>>>>>>>>>>>>>>>
250\begin{figure}[!t]
251  \centering
252  \includegraphics[width=0.66\textwidth]{Fig_MLF_forcing}
253  \caption[Forcing integration methods for modified leapfrog (top and bottom)]{
254    Illustration of forcing integration methods.
255    (top) ''Traditional'' formulation:
256    the forcing is defined at the same time as the variable to which it is applied
257    (integer value of the time step index) and it is applied over a $2 \rdt$ period.
258    (bottom)  modified formulation:
259    the forcing is defined in the middle of the time
260    (integer and a half value of the time step index) and
261    the mean of two successive forcing values ($n - 1 / 2$, $n + 1 / 2$) is applied over
262    a $2 \rdt$ period.}
263  \label{fig:TD_MLF_forcing}
264\end{figure}
265%>>>>>>>>>>>>>>>>>>>>>>>>>>>>
266
267% -------------------------------------------------------------------------------------------------------------
268%        Start/Restart strategy
269% -------------------------------------------------------------------------------------------------------------
270\section{Start/Restart strategy}
271\label{sec:TD_rst}
272
273%--------------------------------------------namrun-------------------------------------------
274\begin{listing}
275  \nlst{namrun}
276  \caption{\forcode{&namrun}}
277  \label{lst:namrun}
278\end{listing}
279%--------------------------------------------------------------------------------------------------------------
280
281The first time step of this three level scheme when starting from initial conditions is a forward step
282(Euler time integration):
283\[
284  % \label{eq:TD_DOM_euler}
285  x^1 = x^0 + \rdt \ \text{RHS}^0
286\]
287This is done simply by keeping the leapfrog environment (\ie\ the \autoref{eq:TD} three level time stepping) but
288setting all $x^0$ (\textit{before}) and $x^1$ (\textit{now}) fields equal at the first time step and
289using half the value of a leapfrog time step ($2 \rdt$).
290
291It is also possible to restart from a previous computation, by using a restart file.
292The restart strategy is designed to ensure perfect restartability of the code:
293the user should obtain the same results to machine precision either by
294running the model for $2N$ time steps in one go,
295or by performing two consecutive experiments of $N$ steps with a restart.
296This requires saving two time levels and many auxiliary data in the restart files in machine precision.
297
298Note that the time step $\rdt$, is also saved in the restart file.
299When restarting, if the time step has been changed, or one of the prognostic variables at \textit{before} time step
300is missing, an Euler time stepping scheme is imposed. A forward initial step can still be enforced by the user by setting
301the namelist variable \np[=0]{nn_euler}{nn\_euler}. Other options to control the time integration of the model
302are defined through the  \nam{run}{run} namelist variables.
303%%%
304\gmcomment{
305add here how to force the restart to contain only one time step for operational purposes
306
307add also the idea of writing several restart for seasonal forecast : how is it done ?
308
309verify that all namelist pararmeters are truly described
310
311a word on the check of restart  .....
312}
313%%%
314
315\gmcomment{       % add a subsection here
316
317%-------------------------------------------------------------------------------------------------------------
318%        Time Domain
319% -------------------------------------------------------------------------------------------------------------
320\subsection{Time domain}
321\label{subsec:TD_time}
322%--------------------------------------------namrun-------------------------------------------
323
324%--------------------------------------------------------------------------------------------------------------
325
326Options are defined through the  \nam{dom}{dom} namelist variables.
327 \colorbox{yellow}{add here a few word on nit000 and nitend}
328
329 \colorbox{yellow}{Write documentation on the calendar and the key variable adatrj}
330
331add a description of daymod, and the model calandar (leap-year and co)
332
333}        %% end add
334
335
336
337%%
338\gmcomment{       % add implicit in vvl case  and Crant-Nicholson scheme
339
340Implicit time stepping in case of variable volume thickness.
341
342Tracer case (NB for momentum in vector invariant form take care!)
343
344\begin{flalign*}
345  &\frac{\lt( e_{3t}\,T \rt)_k^{t+1}-\lt( e_{3t}\,T \rt)_k^{t-1}}{2\rdt}
346  \equiv \text{RHS}+ \delta_k \lt[ {\frac{A_w^{vt} }{e_{3w}^{t+1} }\delta_{k + 1/2} \lt[ {T^{t+1}} \rt]}
347  \rt]      \\
348  &\lt( e_{3t}\,T \rt)_k^{t+1}-\lt( e_{3t}\,T \rt)_k^{t-1}
349  \equiv {2\rdt} \ \text{RHS}+ {2\rdt} \ \delta_k \lt[ {\frac{A_w^{vt} }{e_{3w}^{t+1} }\delta_{k + 1/2} \lt[ {T^{t+1}} \rt]}
350  \rt]      \\
351  &\lt( e_{3t}\,T \rt)_k^{t+1}-\lt( e_{3t}\,T \rt)_k^{t-1}
352  \equiv 2\rdt \ \text{RHS}
353  + 2\rdt \ \lt\{ \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k + 1/2} [ T_{k +1}^{t+1} - T_k      ^{t+1} ]
354    - \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k - 1/2} [ T_k       ^{t+1} - T_{k -1}^{t+1} ]  \rt\}     \\
355  &\\
356  &\lt( e_{3t}\,T \rt)_k^{t+1}
357  -  {2\rdt} \           \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k + 1/2}                  T_{k +1}^{t+1}
358  + {2\rdt} \ \lt\{  \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k + 1/2}
359    +  \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k - 1/2}     \rt\}   T_{k    }^{t+1}
360  -  {2\rdt} \           \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k - 1/2}                  T_{k -1}^{t+1}      \\
361  &\equiv \lt( e_{3t}\,T \rt)_k^{t-1} + {2\rdt} \ \text{RHS}    \\
362  %
363\end{flalign*}
364\begin{flalign*}
365  \allowdisplaybreaks
366  \intertext{ Tracer case }
367  %
368  &  \qquad \qquad  \quad   -  {2\rdt}                  \ \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k + 1/2}
369  \qquad \qquad \qquad  \qquad  T_{k +1}^{t+1}   \\
370  &+ {2\rdt} \ \biggl\{  (e_{3t})_{k   }^{t+1}  \bigg. +    \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k + 1/2}
371  +   \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k - 1/2} \bigg. \biggr\}  \ \ \ T_{k   }^{t+1}  &&\\
372  & \qquad \qquad  \qquad \qquad \qquad \quad \ \ {2\rdt} \                          \lt[ \frac{A_w^{vt}}{e_{3w}^{t+1}} \rt]_{k - 1/2}                          \quad \ \ T_{k -1}^{t+1}
373  \ \equiv \ \lt( e_{3t}\,T \rt)_k^{t-1} + {2\rdt} \ \text{RHS}  \\
374  %
375\end{flalign*}
376\begin{flalign*}
377  \allowdisplaybreaks
378  \intertext{ Tracer content case }
379  %
380  & -  {2\rdt} \              & \frac{(A_w^{vt})_{k + 1/2}} {(e_{3w})_{k + 1/2}^{t+1}\;(e_{3t})_{k +1}^{t+1}}  && \  \lt( e_{3t}\,T \rt)_{k +1}^{t+1}   &\\
381  & + {2\rdt} \ \lt[ 1  \rt.+ & \frac{(A_w^{vt})_{k + 1/2}} {(e_{3w})_{k + 1/2}^{t+1}\;(e_{3t})_k^{t+1}}
382  + & \frac{(A_w^{vt})_{k - 1/2}} {(e_{3w})_{k - 1/2}^{t+1}\;(e_{3t})_k^{t+1}}  \lt\rt& \lt( e_{3t}\,T \rt)_{k   }^{t+1}  &\\
383  & -  {2\rdt} \               & \frac{(A_w^{vt})_{k - 1/2}} {(e_{3w})_{k - 1/2}^{t+1}\;(e_{3t})_{k -1}^{t+1}}     &\  \lt( e_{3t}\,T \rt)_{k -1}^{t+1}
384  \equiv \lt( e_{3t}\,T \rt)_k^{t-1} + {2\rdt} \ \text{RHS}  &
385\end{flalign*}
386
387%%
388}
389
390\onlyinsubfile{\bibliography{../main/bibliography}}
391
392\onlyinsubfile{\printindex}
393
394\end{document}
Note: See TracBrowser for help on using the repository browser.