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/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/doc/latex/NEMO/subfiles – NEMO

source: NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/doc/latex/NEMO/subfiles/chap_STO.tex @ 10368

Last change on this file since 10368 was 10368, checked in by smasson, 5 years ago

dev_r10164_HPC09_ESIWACE_PREP_MERGE: merge with trunk@10365, see #2133

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