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_STO.tex in NEMO/trunk/doc/latex/NEMO/subfiles – NEMO

source: NEMO/trunk/doc/latex/NEMO/subfiles/chap_STO.tex @ 11150

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

Modification of LaTeX subfiles accordingly to new citations keys

File size: 8.2 KB
RevLine 
[10414]1\documentclass[../main/NEMO_manual]{subfiles}
2
[6997]3\begin{document}
[5404]4% ================================================================
5% Chapter stochastic parametrization of EOS (STO)
6% ================================================================
[9393]7\chapter{Stochastic Parametrization of EOS (STO)}
[9407]8\label{chap:STO}
[5404]9
[6497]10Authors: P.-A. Bouttier
11
[5404]12\minitoc
13
[6497]14\newpage
[5404]15
[10354]16The stochastic parametrization module aims to explicitly simulate uncertainties in the model.
[11123]17More particularly, \cite{brankart_OM13} has shown that,
[10354]18because of the nonlinearity of the seawater equation of state, unresolved scales represent a major source of
19uncertainties in the computation of the large scale horizontal density gradient (from T/S large scale fields),
20and that the impact of these uncertainties can be simulated by
21random processes representing unresolved T/S fluctuations.
[6497]22
23The stochastic formulation of the equation of state can be written as:
24\begin{equation}
[10414]25  \label{eq:eos_sto}
[6497]26  \rho = \frac{1}{2} \sum_{i=1}^m\{ \rho[T+\Delta T_i,S+\Delta S_i,p_o(z)] + \rho[T-\Delta T_i,S-\Delta S_i,p_o(z)] \}
27\end{equation}
[10354]28where $p_o(z)$ is the reference pressure depending on the depth and,
29$\Delta T_i$ and $\Delta S_i$ are a set of T/S perturbations defined as
30the scalar product of the respective local T/S gradients with random walks $\mathbf{\xi}$:
[6497]31\begin{equation}
[10414]32  \label{eq:sto_pert}
33  \Delta T_i = \mathbf{\xi}_i \cdot \nabla T \qquad \hbox{and} \qquad \Delta S_i = \mathbf{\xi}_i \cdot \nabla S
[6497]34\end{equation}
[10354]35$\mathbf{\xi}_i$ are produced by a first-order autoregressive processes (AR-1) with
36a parametrized decorrelation time scale, and horizontal and vertical standard deviations $\sigma_s$.
[6497]37$\mathbf{\xi}$ are uncorrelated over the horizontal and fully correlated along the vertical.
38
39
40\section{Stochastic processes}
[9407]41\label{sec:STO_the_details}
[6497]42
[10354]43The starting point of our implementation of stochastic parameterizations in NEMO is to observe that
44many existing parameterizations are based on autoregressive processes,
45which are used as a basic source of randomness to transform a deterministic model into a probabilistic model.
[6497]46A generic approach is thus to add one single new module in NEMO,
[10354]47generating processes with appropriate statistics to simulate each kind of uncertainty in the model
[11123]48(see \cite{brankart.candille.ea_GMD15} for more details).
[6497]49
[10354]50In practice, at every model grid point,
51independent Gaussian autoregressive processes~$\xi^{(i)},\,i=1,\ldots,m$ are first generated using
52the same basic equation:
[6497]53
54\begin{equation}
[10414]55  \label{eq:autoreg}
56  \xi^{(i)}_{k+1} = a^{(i)} \xi^{(i)}_k + b^{(i)} w^{(i)} + c^{(i)}
[6497]57\end{equation}
58
59\noindent
[10354]60where $k$ is the index of the model timestep and
61$a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are parameters defining the mean ($\mu^{(i)}$) standard deviation ($\sigma^{(i)}$) and
62correlation timescale ($\tau^{(i)}$) of each process:
[6497]63
64\begin{itemize}
[10354]65\item
66  for order~1 processes, $w^{(i)}$ is a Gaussian white noise, with zero mean and standard deviation equal to~1,
67  and the parameters $a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are given by:
[6497]68
[10414]69  \[
70    % \label{eq:ord1}
71    \left\{
72      \begin{array}{l}
73        a^{(i)} = \varphi \\
74        b^{(i)} = \sigma^{(i)} \sqrt{ 1 - \varphi^2 }        \qquad\qquad\mbox{with}\qquad\qquad \varphi = \exp \left( - 1 / \tau^{(i)} \right) \\
75        c^{(i)} = \mu^{(i)} \left( 1 - \varphi \right) \\
76      \end{array}
77    \right.
78  \]
[6497]79
[10354]80\item
81  for order~$n>1$ processes, $w^{(i)}$ is an order~$n-1$ autoregressive process, with zero mean,
82  standard deviation equal to~$\sigma^{(i)}$;
83  correlation timescale equal to~$\tau^{(i)}$;
84  and the parameters $a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are given by:
[6497]85
[10414]86  \begin{equation}
87    \label{eq:ord2}
88    \left\{
89      \begin{array}{l}
90        a^{(i)} = \varphi \\
91        b^{(i)} = \frac{n-1}{2(4n-3)} \sqrt{ 1 - \varphi^2 }
92        \qquad\qquad\mbox{with}\qquad\qquad
93        \varphi = \exp \left( - 1 / \tau^{(i)} \right) \\
94        c^{(i)} = \mu^{(i)} \left( 1 - \varphi \right) \\
95      \end{array}
96    \right.
97  \end{equation}
[6497]98
99\end{itemize}
100
101\noindent
[10354]102In this way, higher order processes can be easily generated recursively using the same piece of code implementing
103(\autoref{eq:autoreg}), and using succesively processes from order $0$ to~$n-1$ as~$w^{(i)}$.
104The parameters in (\autoref{eq:ord2}) are computed so that this recursive application of
105(\autoref{eq:autoreg}) leads to processes with the required standard deviation and correlation timescale,
106with the additional condition that the $n-1$ first derivatives of the autocorrelation function are equal to
107zero at~$t=0$, so that the resulting processes become smoother and smoother as $n$ is increased.
[6497]108
[10354]109Overall, this method provides quite a simple and generic way of generating a wide class of stochastic processes.
110However, this also means that new model parameters are needed to specify each of these stochastic processes.
111As in any parameterization of lacking physics, a very important issues then to tune these new parameters using
112either first principles, model simulations, or real-world observations.
[6497]113
114\section{Implementation details}
[9407]115\label{sec:STO_thech_details}
[6497]116
[6289]117%---------------------------------------namsbc--------------------------------------------------
[10146]118
119\nlst{namsto}
[6289]120%--------------------------------------------------------------------------------------------------------------
121
[6497]122The computer code implementing stochastic parametrisations can be found in the STO directory.
123It involves three modules :
124\begin{description}
[10354]125\item[\mdl{stopar}:]
126  define the Stochastic parameters and their time evolution.
127\item[\mdl{storng}:]
128  a random number generator based on (and includes) the 64-bit KISS (Keep It Simple Stupid) random number generator
129  distributed by George Marsaglia
130  (see \href{https://groups.google.com/forum/#!searchin/comp.lang.fortran/64-bit$20KISS$20RNGs}{here})
131\item[\mdl{stopts}:]
132  stochastic parametrisation associated with the non-linearity of the equation of seawater,
133  implementing \autoref{eq:sto_pert} and specific piece of code in
134  the equation of state implementing \autoref{eq:eos_sto}.
[6497]135\end{description}
[6289]136
[6497]137The \mdl{stopar} module has 3 public routines to be called by the model (in our case, NEMO):
138
[9407]139The first routine (\rou{sto\_par}) is a direct implementation of (\autoref{eq:autoreg}),
[10354]140applied at each model grid point (in 2D or 3D), and called at each model time step ($k$) to
141update every autoregressive process ($i=1,\ldots,m$).
[6497]142This routine also includes a filtering operator, applied to $w^{(i)}$,
143to introduce a spatial correlation between the stochastic processes.
144
[10354]145The second routine (\rou{sto\_par\_init}) is an initialization routine mainly dedicated to
146the computation of parameters $a^{(i)}, b^{(i)}, c^{(i)}$ for each autoregressive process,
147as a function of the statistical properties required by the model user
148(mean, standard deviation, time correlation, order of the process,\ldots).
[6497]149
150Parameters for the processes can be specified through the following \ngn{namsto} namelist parameters:
151\begin{description}
[10354]152\item[\np{nn\_sto\_eos}:]   number of independent random walks
153\item[\np{rn\_eos\_stdxy}:] random walk horz. standard deviation (in grid points)
154\item[\np{rn\_eos\_stdz}:]  random walk vert. standard deviation (in grid points)
155\item[\np{rn\_eos\_tcor}:]  random walk time correlation (in timesteps)
156\item[\np{nn\_eos\_ord}:]   order of autoregressive processes
157\item[\np{nn\_eos\_flt}:]   passes of Laplacian filter
158\item[\np{rn\_eos\_lim}:]   limitation factor (default = 3.0)
[6497]159\end{description}
160This routine also includes the initialization (seeding) of the random number generator.
161
[10354]162The third routine (\rou{sto\_rst\_write}) writes a restart file
163(which suffix name is given by \np{cn\_storst\_out} namelist parameter) containing the current value of
[6497]164all autoregressive processes to allow restarting a simulation from where it has been interrupted.
165This file also contains the current state of the random number generator.
[10354]166When \np{ln\_rststo} is set to \forcode{.true.}),
167the restart file (which suffix name is given by \np{cn\_storst\_in} namelist parameter) is read by
168the initialization routine (\rou{sto\_par\_init}).
169The simulation will continue exactly as if it was not interrupted only
170when \np{ln\_rstseed} is set to \forcode{.true.},
[10442]171\ie when the state of the random number generator is read in the restart file.
[6997]172
[10414]173\biblio
[6997]174
[10442]175\pindex
176
[6997]177\end{document}
Note: See TracBrowser for help on using the repository browser.