# Changeset 11184

Ignore:
Timestamp:
2019-06-26T16:56:21+02:00 (14 months ago)
Message:

Update time domain chapter, #2216

File:
1 edited

Unmodified
Removed
• ## NEMO/trunk/doc/latex/NEMO/subfiles/chap_time_domain.tex

 r11179 % Missing things: %  - daymod: definition of the time domain (nit000, nitend andd the calendar) %  - daymod: definition of the time domain (nit000, nitend and the calendar) \gmcomment{STEVEN :maybe a picture of the directory structure in the introduction which could be referred to here, a key feature of an ocean model as it exerts a strong influence on the structure of the computer code (\ie on its flowchart). In the present chapter, we provide a general description of the \NEMO time stepping strategy and In the present chapter, we provide a general description of the \NEMO  time stepping strategy and the consequences for the order in which the equations are solved. $\rdt$ is the time step; and the superscripts indicate the time at which a quantity is evaluated. Each term of the RHS is evaluated at a specific time step depending on the physics with which it is associated. The choice of the time step used for this evaluation is discussed below as well as Each term of the RHS is evaluated at a specific time stepping depending on the physics with which it is associated. The choice of the time stepping used for this evaluation is discussed below as well as the implications for starting or restarting a model simulation. Note that the time stepping calculation is generally performed in a single operation. is usually not the variable at the after time step; but rather it is used to store the time derivative (RHS in \autoref{eq:STP}) prior to time-stepping the equation. Generally, the time stepping is performed once at each time step in the \mdl{tranxt} and \mdl{dynnxt} modules, except when using implicit vertical diffusion or calculating sea surface height in which case time-splitting options are used. The 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. % ------------------------------------------------------------------------------------------------------------- Therefore, the LF-RA is a quasi second order accurate scheme. The LF-RA scheme is preferred to other time differencing schemes such as predictor corrector or trapezoidal schemes, because the user has an explicit and simple control of the magnitude of the time diffusion of the scheme. because the user has an explicit and simple control of the magnitude of the time diffusion of the scheme. When used with the 2nd order space centred discretisation of the advection terms in the momentum and tracer equations, LF-RA avoids implicit numerical diffusion: The leapfrog differencing scheme is unsuitable for the representation of diffusion and damping processes. For a tendancy $D_x$, representing a diffusion term or a restoring term to a tracer climatology For a tendency $D_x$, representing a diffusion term or a restoring term to a tracer climatology (when present, see \autoref{sec:TRA_dmp}), a forward time differencing scheme is used : \[ For the vertical diffusion terms, a forward time differencing scheme can be used, but usually the numerical stability condition imposes a strong constraint on the time step. Two solutions are available in \NEMO to overcome the stability constraint: $(a)$ a forward time differencing scheme using a time splitting technique (\np{ln\_zdfexp}\forcode{ = .true.}) or $(b)$ a backward (or implicit) time differencing scheme                   (\np{ln\_zdfexp}\forcode{ = .false.}). In $(a)$, the master time step $\Delta$t is cut into $N$ fractional time steps so that the stability criterion is reduced by a factor of $N$. The computation is performed as follows: \begin{alignat*}{2} % \label{eq:STP_ts} &x_\ast^{t - \rdt}                      &= &x^{t - \rdt} \\ &x_\ast^{t - \rdt + L \frac{2 \rdt}{N}} &=   &x_\ast ^{t - \rdt + (L - 1) \frac{2 \rdt}{N}} + \frac{2 \rdt}{N} \; DF^{t - \rdt + (L - 1) \frac{2 \rdt}{N}} \quad \text{for $L = 1$ to $N$} \\ &x^{t + \rdt}                           &= &x_\ast^{t + \rdt} \end{alignat*} with DF a vertical diffusion term. The number of fractional time steps, $N$, is given by setting \np{nn\_zdfexp}, (namelist parameter). The scheme $(b)$ is unconditionally stable but diffusive. It can be written as follows: but usually the numerical stability condition imposes a strong constraint on the time step. To overcome the stability constraint, a backward (or implicit) time differencing scheme is used. This scheme is unconditionally stable but diffusive and can be written as follows: \label{eq:STP_imp} %%gm This scheme is rather time consuming since it requires a matrix inversion, but it becomes attractive since a value of 3 or more is needed for N in the forward time differencing scheme. For example, the finite difference approximation of the temperature equation is: This scheme is rather time consuming since it requires a matrix inversion. For example, the finite difference approximation of the temperature equation is: \[ % \label{eq:STP_imp_zdf} \label{sec:STP_spg_ts} ===>>>>  TO BE written....  :-) The leapfrog environment supports a centred in time computation of the surface pressure, \ie evaluated at \textit{now} time step. This refers to as the explicit free surface case in the code (\np{ln\_dynspg\_exp}\forcode{ = .true.}). This choice however imposes a strong constraint on the time step which should be small enough to resolve the propagation of external gravity waves. As a matter of fact, one rather use in a realistic setup, a split-explicit free surface (\np{ln\_dynspg\_ts}\forcode{ = .true.}) in which barotropic and baroclinic dynamical equations are solved separately with ad-hoc time steps. The use of the time-splitting (in combination with non-linear free surface) imposes some constraints on the design of the overall flowchart, in particular to ensure exact tracer conservation (see \autoref{fig:TimeStep_flowchart}). Compared 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 on massively parallel computers. Indeed, no global computations are anymore required by the elliptic solver which saves a substantial amount of communication time. Fast barotropic motions (such as tides) are also simulated with a better accuracy. %\gmcomment{ \begin{figure}[!t] \begin{center} \includegraphics[width=\textwidth]{Fig_TimeStepping_flowchart} \includegraphics[width=\textwidth]{Fig_TimeStepping_flowchart_v4} \caption{ \protect\label{fig:TimeStep_flowchart} Sketch of the leapfrog time stepping sequence in \NEMO from \citet{leclair.madec_OM09}. The use of a semi -implicit computation of the hydrostatic pressure gradient requires the tracer equation to be stepped forward prior to the momentum equation. The need for knowledge of the vertical scale factor (here denoted as $h$) requires the sea surface height and the continuity equation to be stepped forward prior to the computation of the tracer equation. Note that the method for the evaluation of the surface pressure gradient $\nabla p_s$ is not presented here (see \autoref{sec:DYN_spg}). Sketch of the leapfrog time stepping sequence in \NEMO with split-explicit free surface. The latter combined with non-linear free surface requires the dynamical tendency being updated prior tracers tendency to ensure conservation. Note the use of time integrated fluxes issued from the barotropic loop  in subsequent calculations of tracer advection and in the continuity equation. Details about the time-splitting scheme can be found in \autoref{subsec:DYN_spg_ts}. } \end{center} the forcing term no longer excites the divergence of odd and even time steps \citep{leclair.madec_OM09}. % forcing seen by the model.... This property improves the LF-RA scheme in two respects. This property improves the LF-RA scheme in two aspects. First, the LF-RA can now ensure the local and global conservation of tracers. Indeed, time filtering is no longer required on the forcing part. The influence of the Asselin filter on the forcing is be removed by adding a new term in the filter The influence of the Asselin filter on the forcing is explicitly removed by adding a new term in the filter (last term in \autoref{eq:STP_RA} compared to \autoref{eq:STP_asselin}). Since the filtering of the forcing was the source of non-conservation in the classical LF-RA scheme, Second, the LF-RA becomes a truly quasi -second order scheme. Indeed, \autoref{eq:STP_forcing} used in combination with a careful treatment of static instability (\autoref{subsec:ZDF_evd}) and of the TKE physics (\autoref{subsec:ZDF_tke_ene}), the two other main sources of time step divergence, (\autoref{subsec:ZDF_evd}) and of the TKE physics (\autoref{subsec:ZDF_tke_ene}) (the two other main sources of time step divergence), allows a reduction by two orders of magnitude of the Asselin filter parameter. $Q^{t + \rdt / 2}$ is the forcing applied over the $[t,t + \rdt]$ time interval. This and the change in the time filter, \autoref{eq:STP_RA}, allows an exact evaluation of the contribution due to the forcing term between any two time steps, allows for an exact evaluation of the contribution due to the forcing term between any two time steps, even if separated by only $\rdt$ since the time filter is no longer applied to the forcing term. This is done simply by keeping the leapfrog environment (\ie the \autoref{eq:STP} three level time stepping) but setting all $x^0$ (\textit{before}) and $x^1$ (\textit{now}) fields equal at the first time step and using half the value of $\rdt$. using half the value of a leapfrog time step ($2 \rdt$). It is also possible to restart from a previous computation, by using a restart file. This requires saving two time levels and many auxiliary data in the restart files in machine precision. Note that when a semi -implicit scheme is used to evaluate the hydrostatic pressure gradient (see \autoref{subsec:DYN_hpg_imp}), an extra three-dimensional field has to be added to the restart file to ensure an exact restartability. This is done optionally via the  \np{nn\_dynhpg\_rst} namelist parameter, so that the size of the restart file can be reduced when restartability is not a key issue (operational oceanography or in ensemble simulations for seasonal forecasting). Note the size of the time step used, $\rdt$, is also saved in the restart file. When restarting, if the the time step has been changed, a restart using an Euler time stepping scheme is imposed. Options are defined through the  \ngn{namrun} namelist variables. Note that the time step $\rdt$, is also saved in the restart file. When restarting, if the time step has been changed, or one of the prognostic variables at \textit{before} time step is missing, an Euler time stepping scheme is imposed. A forward initial step can still be enforced by the user by setting the namelist variable \np{nn\_euler}\forcode{=0}. Other options to control the time integration of the model are defined through the  \ngn{namrun} namelist variables. %%% \gmcomment{
Note: See TracChangeset for help on using the changeset viewer.