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.
Changeset 6440 for branches/UKMO/dev_r5518_GC3p0_package/DOC/TexFiles/Chapters/Chap_STO.tex – NEMO

Ignore:
Timestamp:
2016-04-07T16:32:24+02:00 (8 years ago)
Author:
dancopsey
Message:

Merged in nemo_v3_6_STABLE_copy up to revision 6436.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GC3p0_package/DOC/TexFiles/Chapters/Chap_STO.tex

    r5404 r6440  
    55\label{STO} 
    66 
     7Authors: P.-A. Bouttier 
     8 
    79\minitoc 
    8  
    910 
    1011\newpage 
    1112$\ $\newline    % force a new line 
     13 
     14The stochastic parametrization module aims to explicitly simulate uncertainties in the model. More particularly, \cite{Brankart_OM2013} has shown that, because of the nonlinearity of the seawater equation of state, unresolved scales represent a major source of uncertainties in the computation of the large scale horizontal density gradient (from T/S large scale fields), and that the impact of these uncertainties can be simulated by random processes representing unresolved T/S fluctuations. 
     15 
     16The stochastic formulation of the equation of state can be written as: 
     17\begin{equation} 
     18 \label{eq:eos_sto} 
     19  \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)] \} 
     20\end{equation} 
     21where $p_o(z)$ is the reference pressure depending on the depth and $\Delta T_i$ and $\Delta S_i$ are a set of T/S perturbations defined as the scalar product of the respective local T/S gradients with random walks $\mathbf{\xi}$: 
     22\begin{equation} 
     23 \label{eq:sto_pert} 
     24 \Delta T_i = \mathbf{\xi}_i \cdot \nabla T \qquad \hbox{and} \qquad \Delta S_i = \mathbf{\xi}_i \cdot \nabla S 
     25\end{equation} 
     26$\mathbf{\xi}_i$ are produced by a first-order autoregressive processes (AR-1) with a parametrized decorrelation time scale, and horizontal and vertical standard deviations $\sigma_s$. $\mathbf{\xi}$ are uncorrelated over the horizontal and fully correlated along the vertical. 
     27 
     28 
     29\section{Stochastic processes} 
     30\label{STO_the_details} 
     31 
     32The starting point of our implementation of stochastic parameterizations 
     33in NEMO is to observe that many existing parameterizations are based 
     34on autoregressive processes, which are used as a basic source of randomness 
     35to transform a deterministic model into a probabilistic model. 
     36A generic approach is thus to add one single new module in NEMO, 
     37generating processes with appropriate statistics 
     38to simulate each kind of uncertainty in the model 
     39(see \cite{Brankart_al_GMD2015} for more details). 
     40 
     41In practice, at every model grid point, independent Gaussian autoregressive 
     42processes~$\xi^{(i)},\,i=1,\ldots,m$ are first generated 
     43using the same basic equation: 
     44 
     45\begin{equation} 
     46\label{eq:autoreg} 
     47\xi^{(i)}_{k+1} = a^{(i)} \xi^{(i)}_k + b^{(i)} w^{(i)} + c^{(i)} 
     48\end{equation} 
     49 
     50\noindent 
     51where $k$ is the index of the model timestep; and 
     52$a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are parameters defining 
     53the mean ($\mu^{(i)}$) standard deviation ($\sigma^{(i)}$) 
     54and correlation timescale ($\tau^{(i)}$) of each process: 
     55 
     56\begin{itemize} 
     57\item for order~1 processes, $w^{(i)}$ is a Gaussian white noise, 
     58with zero mean and standard deviation equal to~1, and the parameters 
     59$a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are given by: 
     60 
     61\begin{equation} 
     62\label{eq:ord1} 
     63\left\{ 
     64\begin{array}{l} 
     65a^{(i)} = \varphi \\ 
     66b^{(i)} = \sigma^{(i)} \sqrt{ 1 - \varphi^2 }  
     67 \qquad\qquad\mbox{with}\qquad\qquad 
     68\varphi = \exp \left( - 1 / \tau^{(i)} \right) \\ 
     69c^{(i)} = \mu^{(i)} \left( 1 - \varphi \right) \\ 
     70\end{array} 
     71\right. 
     72\end{equation} 
     73 
     74\item for order~$n>1$ processes, $w^{(i)}$ is an order~$n-1$ autoregressive process, 
     75with zero mean, standard deviation equal to~$\sigma^{(i)}$; correlation timescale 
     76equal to~$\tau^{(i)}$; and the parameters 
     77$a^{(i)}$, $b^{(i)}$, $c^{(i)}$ are given by: 
     78 
     79\begin{equation} 
     80\label{eq:ord2} 
     81\left\{ 
     82\begin{array}{l} 
     83a^{(i)} = \varphi \\ 
     84b^{(i)} = \frac{n-1}{2(4n-3)} \sqrt{ 1 - \varphi^2 }  
     85 \qquad\qquad\mbox{with}\qquad\qquad 
     86\varphi = \exp \left( - 1 / \tau^{(i)} \right) \\ 
     87c^{(i)} = \mu^{(i)} \left( 1 - \varphi \right) \\ 
     88\end{array} 
     89\right. 
     90\end{equation} 
     91 
     92\end{itemize} 
     93 
     94\noindent 
     95In this way, higher order processes can be easily generated recursively using the same piece of code implementing Eq.~(\ref{eq:autoreg}), and using succesively processes from order $0$ to~$n-1$ as~$w^{(i)}$. 
     96The parameters in Eq.~(\ref{eq:ord2}) are computed so that this recursive application 
     97of Eq.~(\ref{eq:autoreg}) leads to processes with the required standard deviation 
     98and correlation timescale, with the additional condition that 
     99the $n-1$ first derivatives of the autocorrelation function 
     100are equal to zero at~$t=0$, so that the resulting processes 
     101become smoother and smoother as $n$ is increased. 
     102 
     103Overall, this method provides quite a simple and generic way of generating a wide class of stochastic processes. However, this also means that new model parameters are needed to specify each of these stochastic processes. As in any parameterization of lacking physics, a very important issues then to tune these new parameters using either first principles, model simulations, or real-world observations. 
     104 
     105\section{Implementation details} 
     106\label{STO_thech_details} 
     107The computer code implementing stochastic parametrisations is made of one single FORTRAN module, 
     108with 3 public routines to be called by the model (in our case, NEMO): 
     109 
     110The first routine ({sto\_par}) is a direct implementation of Eq.~(\ref{eq:autoreg}), 
     111applied at each model grid point (in 2D or 3D), 
     112and called at each model time step ($k$) to update 
     113every autoregressive process ($i=1,\ldots,m$). 
     114This routine also includes a filtering operator, applied to $w^{(i)}$, 
     115to introduce a spatial correlation between the stochastic processes. 
     116 
     117The second routine ({sto\_par\_init}) 
     118is an initialization routine mainly dedicated 
     119to the computation of parameters $a^{(i)}, b^{(i)}, c^{(i)}$ 
     120for each autoregressive process, as a function of the statistical properties 
     121required by the model user (mean, standard deviation, time correlation, 
     122order of the process,\ldots). Parameters for the processes can be specified through the following namelist parameters: 
     123\begin{alltt} 
     124\tiny 
     125\begin{verbatim} 
     126   nn_sto_eos = 1                ! number of independent random walks  
     127   rn_eos_stdxy = 1.4            ! random walk horz. standard deviation (in grid points) 
     128   rn_eos_stdz  = 0.7            ! random walk vert. standard deviation (in grid points) 
     129   rn_eos_tcor  = 1440.0         ! random walk time correlation (in timesteps) 
     130   nn_eos_ord  = 1               ! order of autoregressive processes 
     131   nn_eos_flt  = 0               ! passes of Laplacian filter 
     132   rn_eos_lim  = 2.0             ! limitation factor (default = 3.0) 
     133\end{verbatim} 
     134\end{alltt} 
     135This routine also includes the initialization (seeding) 
     136of the random number generator. 
     137 
     138The third routine ({sto\_rst\_write}) writes a ``restart file'' 
     139with the current value of all autoregressive processes 
     140to allow restarting a simulation from where it has been interrupted. 
     141This file also contains the current state of the random number generator. 
     142In case of a restart, this file is then read by the initialization routine 
     143({sto\_par\_init}), so that the simulation can continue exactly 
     144as if it was not interrupted. 
     145Restart capabilities of the module are driven by the following namelist parameters: 
     146\begin{alltt} 
     147\tiny 
     148\begin{verbatim} 
     149   ln_rststo = .false.           ! start from mean parameter (F) or from restart file (T) 
     150   ln_rstseed = .true.           ! read seed of RNG from restart file 
     151   cn_storst_in  = "restart_sto" !  suffix of stochastic parameter restart file (input) 
     152   cn_storst_out = "restart_sto" !  suffix of stochastic parameter restart file (output) 
     153\end{verbatim} 
     154\end{alltt} 
     155 
     156In the particular case of the stochastic equation of state, there is also an additional module ({sto\_pts}) implementing Eq~\ref{eq:sto_pert} and specific piece of code in the equation of state implementing Eq~\ref{eq:eos_sto}. 
     157 
     158 
Note: See TracChangeset for help on using the changeset viewer.