Changeset 10354 for NEMO/trunk/doc/latex/NEMO/subfiles/chap_STO.tex
- Timestamp:
- 2018-11-21T17:59:55+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/doc/latex/NEMO/subfiles/chap_STO.tex
r10146 r10354 14 14 15 15 16 The stochastic parametrization module aims to explicitly simulate uncertainties in the model. 17 More particularly, \cite{Brankart_OM2013} has shown that, 18 because of the nonlinearity of the seawater equation of state, unresolved scales represent 19 a major source of uncertainties in the computation of the large scale horizontal density gradient 20 (from T/S large scale fields), and that the impact of these uncertainties can be simulated 21 byrandom processes representing unresolved T/S fluctuations.16 The stochastic parametrization module aims to explicitly simulate uncertainties in the model. 17 More particularly, \cite{Brankart_OM2013} has shown that, 18 because of the nonlinearity of the seawater equation of state, unresolved scales represent a major source of 19 uncertainties in the computation of the large scale horizontal density gradient (from T/S large scale fields), 20 and that the impact of these uncertainties can be simulated by 21 random processes representing unresolved T/S fluctuations. 22 22 23 23 The stochastic formulation of the equation of state can be written as: … … 26 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 27 \end{equation} 28 where $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 the scalar product30 of the respective local T/S gradients with random walks $\mathbf{\xi}$:28 where $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 30 the scalar product of the respective local T/S gradients with random walks $\mathbf{\xi}$: 31 31 \begin{equation} 32 32 \label{eq:sto_pert} 33 33 \Delta T_i = \mathbf{\xi}_i \cdot \nabla T \qquad \hbox{and} \qquad \Delta S_i = \mathbf{\xi}_i \cdot \nabla S 34 34 \end{equation} 35 $\mathbf{\xi}_i$ are produced by a first-order autoregressive processes (AR-1) with 36 a parametrized decorrelation time scale, and horizontal and vertical standard deviations $\sigma_s$. 35 $\mathbf{\xi}_i$ are produced by a first-order autoregressive processes (AR-1) with 36 a parametrized decorrelation time scale, and horizontal and vertical standard deviations $\sigma_s$. 37 37 $\mathbf{\xi}$ are uncorrelated over the horizontal and fully correlated along the vertical. 38 38 … … 41 41 \label{sec:STO_the_details} 42 42 43 The starting point of our implementation of stochastic parameterizations 44 in NEMO is to observe that many existing parameterizations are based 45 on autoregressive processes, which are used as a basic source of randomness 46 to transform a deterministic model into a probabilistic model. 43 The starting point of our implementation of stochastic parameterizations in NEMO is to observe that 44 many existing parameterizations are based on autoregressive processes, 45 which are used as a basic source of randomness to transform a deterministic model into a probabilistic model. 47 46 A generic approach is thus to add one single new module in NEMO, 48 generating processes with appropriate statistics 49 to simulate each kind of uncertainty in the model 47 generating processes with appropriate statistics to simulate each kind of uncertainty in the model 50 48 (see \cite{Brankart_al_GMD2015} for more details). 51 49 52 In practice, at every model grid point, independent Gaussian autoregressive53 processes~$\xi^{(i)},\,i=1,\ldots,m$ are first generated 54 usingthe same basic equation:50 In practice, at every model grid point, 51 independent Gaussian autoregressive processes~$\xi^{(i)},\,i=1,\ldots,m$ are first generated using 52 the same basic equation: 55 53 56 54 \begin{equation} … … 60 58 61 59 \noindent 62 where $k$ is the index of the model timestep; and 63 $a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are parameters defining 64 the mean ($\mu^{(i)}$) standard deviation ($\sigma^{(i)}$) 65 and correlation timescale ($\tau^{(i)}$) of each process: 60 where $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 62 correlation timescale ($\tau^{(i)}$) of each process: 66 63 67 64 \begin{itemize} 68 \item for order~1 processes, $w^{(i)}$ is a Gaussian white noise,69 with zero mean and standard deviation equal to~1, and the parameters 70 $a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are given by: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: 71 68 72 69 \begin{equation} … … 83 80 \end{equation} 84 81 85 \item for order~$n>1$ processes, $w^{(i)}$ is an order~$n-1$ autoregressive process, 86 with zero mean, standard deviation equal to~$\sigma^{(i)}$; correlation timescale 87 equal to~$\tau^{(i)}$; and the parameters $a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are given by: 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: 88 87 89 88 \begin{equation} … … 103 102 104 103 \noindent 105 In this way, higher order processes can be easily generated recursively using 106 the same piece of code implementing (\autoref{eq:autoreg}), 107 and using succesively processes from order $0$ to~$n-1$ as~$w^{(i)}$. 108 The parameters in (\autoref{eq:ord2}) are computed so that this recursive application 109 of (\autoref{eq:autoreg}) leads to processes with the required standard deviation 110 and correlation timescale, with the additional condition that 111 the $n-1$ first derivatives of the autocorrelation function 112 are equal to zero at~$t=0$, so that the resulting processes 113 become smoother and smoother as $n$ is increased. 104 In 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)}$. 106 The 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, 108 with the additional condition that the $n-1$ first derivatives of the autocorrelation function are equal to 109 zero at~$t=0$, so that the resulting processes become smoother and smoother as $n$ is increased. 114 110 115 Overall, this method provides quite a simple and generic way of generating 116 a wide class of stochastic processes. 117 However, this also means that new model parameters are needed to specify each of 118 these stochastic processes. As in any parameterization of lacking physics, 119 a very important issues then to tune these new parameters using either first principles, 120 model simulations, or real-world observations. 111 Overall, this method provides quite a simple and generic way of generating a wide class of stochastic processes. 112 However, this also means that new model parameters are needed to specify each of these stochastic processes. 113 As in any parameterization of lacking physics, a very important issues then to tune these new parameters using 114 either first principles, model simulations, or real-world observations. 121 115 122 116 \section{Implementation details} … … 131 125 It involves three modules : 132 126 \begin{description} 133 \item[\mdl{stopar}] : define the Stochastic parameters and their time evolution. 134 \item[\mdl{storng}] : a random number generator based on (and includes) the 64-bit KISS 135 (Keep It Simple Stupid) random number generator distributed by George Marsaglia 136 (see \href{https://groups.google.com/forum/#!searchin/comp.lang.fortran/64-bit$20KISS$20RNGs}{here}) 137 \item[\mdl{stopts}] : stochastic parametrisation associated with the non-linearity of the equation of seawater, 138 implementing \autoref{eq:sto_pert} and specific piece of code in the equation of state implementing \autoref{eq:eos_sto}. 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}. 139 137 \end{description} 140 138 … … 142 140 143 141 The first routine (\rou{sto\_par}) is a direct implementation of (\autoref{eq:autoreg}), 144 applied at each model grid point (in 2D or 3D), 145 and called at each model time step ($k$) to update 146 every autoregressive process ($i=1,\ldots,m$). 142 applied at each model grid point (in 2D or 3D), and called at each model time step ($k$) to 143 update every autoregressive process ($i=1,\ldots,m$). 147 144 This routine also includes a filtering operator, applied to $w^{(i)}$, 148 145 to introduce a spatial correlation between the stochastic processes. 149 146 150 The second routine (\rou{sto\_par\_init}) is an initialization routine mainly dedicated 151 to the computation of parameters $a^{(i)}, b^{(i)}, c^{(i)}$ 152 for each autoregressive process, as a function of the statistical properties 153 required by the model user (mean, standard deviation, time correlation, 154 order of the process,\ldots). 147 The second routine (\rou{sto\_par\_init}) is an initialization routine mainly dedicated to 148 the computation of parameters $a^{(i)}, b^{(i)}, c^{(i)}$ for each autoregressive process, 149 as a function of the statistical properties required by the model user 150 (mean, standard deviation, time correlation, order of the process,\ldots). 155 151 156 152 Parameters for the processes can be specified through the following \ngn{namsto} namelist parameters: 157 153 \begin{description} 158 \item[\np{nn\_sto\_eos}] : number of independent random walks 159 \item[\np{rn\_eos\_stdxy}] :random walk horz. standard deviation (in grid points)160 \item[\np{rn\_eos\_stdz}] :random walk vert. standard deviation (in grid points)161 \item[\np{rn\_eos\_tcor}] :random walk time correlation (in timesteps)162 \item[\np{nn\_eos\_ord}] :order of autoregressive processes163 \item[\np{nn\_eos\_flt}] :passes of Laplacian filter164 \item[\np{rn\_eos\_lim}] :limitation factor (default = 3.0)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) 165 161 \end{description} 166 162 This routine also includes the initialization (seeding) of the random number generator. 167 163 168 The third routine (\rou{sto\_rst\_write}) writes a restart file (which suffix name is169 given by \np{cn\_storst\_out} namelist parameter) containing the current value of 164 The 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 170 166 all autoregressive processes to allow restarting a simulation from where it has been interrupted. 171 167 This file also contains the current state of the random number generator. 172 When \np{ln\_rststo} is set to \forcode{.true.}), the restart file (which suffix name is 173 given by \np{cn\_storst\_in} namelist parameter) is read by the initialization routine 174 (\rou{sto\_par\_init}). The simulation will continue exactly as if it was not interrupted 175 only when \np{ln\_rstseed} is set to \forcode{.true.}, $i.e.$ when the state of 176 the random number generator is read in the restart file. 168 When \np{ln\_rststo} is set to \forcode{.true.}), 169 the restart file (which suffix name is given by \np{cn\_storst\_in} namelist parameter) is read by 170 the initialization routine (\rou{sto\_par\_init}). 171 The simulation will continue exactly as if it was not interrupted only 172 when \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. 177 174 178 175
Note: See TracChangeset
for help on using the changeset viewer.