![]() |
A Modular Arbitrary-Order Ocean-Atmosphere Model -- Stochastic implementation
|
The stochastic version of MAOOAM is given by
\[ \frac{d \boldsymbol{z}}{dt} = f(\boldsymbol{z})+ \boldsymbol{q} \cdot \boldsymbol{dW} (t)\]
where \(\boldsymbol{dW}\) is a vector of standard Gaussian White noise and where several choice for \(f(\boldsymbol{z})\) are available. For instance, the default choice is to use the full dynamics:
\[ f(\boldsymbol{z}) = \sum_{j,k=0}^{ndim} \, \mathcal{T}_{i,j,k} \, z_k \; z_j . \]
The implementation uses thus the tensorial framework of MAOOAM and add some noise to it. To study parameterization methods in MAOOAM, the models variables \(\boldsymbol z\) is divised in two components: the resolved component \(\boldsymbol x\) and the unresolved component \(\boldsymbol y\) (see below for more details).
Since MAOOAM is a ocean-atmosphere model, it can be decomposed further into oceanic and atmospheric components:
\[ \boldsymbol z = \{ \boldsymbol{x}_{\text{a}}, \boldsymbol{x}_{\text{o}}, \boldsymbol{y}_{\text{a}}, \boldsymbol{y}_{\text{o}}\} \]
and in the present implementation, the noise amplitude can be set in each component:
\[ \frac{d \boldsymbol{x}_{\text{a}}}{dt} = f_{x,\text{a}}(\boldsymbol{z})+ \boldsymbol{q}_{x,\text{a}} \cdot \boldsymbol{dW}_{x,\text{a}} (t)\]
\[ \frac{d \boldsymbol{x}_{\text{o}}}{dt} = f_{x,\text{o}}(\boldsymbol{z})+ \boldsymbol{q}_{x,\text{o}} \cdot \boldsymbol{dW}_{x,\text{o}} (t)\]
\[ \frac{d \boldsymbol{y}_{\text{a}}}{dt} = f_{y,\text{a}}(\boldsymbol{z})+ \boldsymbol{q}_{y,\text{a}} \cdot \boldsymbol{dW}_{y,\text{a}} (t)\]
\[ \frac{d \boldsymbol{y}_{\text{o}}}{dt} = f_{y,\text{o}}(\boldsymbol{z})+ \boldsymbol{q}_{y,\text{o}} \cdot \boldsymbol{dW}_{y,\text{o}} (t)\]
through the parameters stoch_params::q_ar, stoch_params::q_au, stoch_params::q_or and stoch_params::q_ou.
Due to the decomposition into resoved variables \( \boldsymbol x\) and unresolved variables \( \boldsymbol y\), the equation of the MAOOAM model can be rewritten:
\[ \frac{d \boldsymbol x}{dt} = \boldsymbol{H}^x + \boldsymbol{L}^{xx}\cdot\boldsymbol{x} + \boldsymbol{L}^{xy}\cdot\boldsymbol{y} + \boldsymbol{B}^{xxx} : \boldsymbol{x} \otimes \boldsymbol{x} + \boldsymbol{B}^{xxy} : \boldsymbol{x} \otimes \boldsymbol{y} + \boldsymbol{B}^{xyy} : \boldsymbol{y} \otimes \boldsymbol{y} + \boldsymbol{q}_{x} \cdot \boldsymbol{dW}_x \]
\[ \frac{d \boldsymbol y}{dt} = \boldsymbol{H}^y + \boldsymbol{L}^{yx}\cdot\boldsymbol{x} + \boldsymbol{L}^{yy}\cdot\boldsymbol{y} + \boldsymbol{B}^{yxx} : \boldsymbol{x} \otimes \boldsymbol{x} + \boldsymbol{B}^{yxy} : \boldsymbol{x} \otimes \boldsymbol{y} + \boldsymbol{B}^{yyy} : \boldsymbol{y} \otimes \boldsymbol{y} + \boldsymbol{q}_{y} \cdot \boldsymbol{dW}_y \]
where \(\boldsymbol{q}_x= \{\boldsymbol{q}_{x,\text{a}},\boldsymbol{q}_{x,\text{o}}\}\) and \(\boldsymbol{q}_y= \{\boldsymbol{q}_{y,\text{a}},\boldsymbol{q}_{y,\text{o}}\}\). We have thus also \(\boldsymbol{dW}_x=\{\boldsymbol{dW}_{x,\text{a}},\boldsymbol{dW}_{x,\text{o}}\}\) and \(\boldsymbol{dW}_y= \{\boldsymbol{dW}_{y,\text{a}},\boldsymbol{dW}_{y,\text{o}}\}\). The various terms of the equations above are accessible in the dec_tensor module. To specify which variables belong to the resolved (unresolved) component, the user must fill the SF.nml namelist file by setting the component of the vector sf_def::sf to 0 (1). This file must be filled before starting any of the stochastic and parameterization codes. If this file is not present, launch one of the programs. It will generate a new SF.nml file and then abort.
The purpose of the parameterization is to reduce the \(\boldsymbol x\) equation by closing it while keeping the statisical properies of the full system. To apply the parameterizations proposed in this implementation, we consider a modified version of the equation above:
\[ \frac{d \boldsymbol x}{dt} = F_x(\boldsymbol{x}) + \boldsymbol{q}_{x} \cdot \boldsymbol{dW}_x + \frac{\varepsilon}{\delta} \, \Psi_x(\boldsymbol{x},\boldsymbol{y}) \]
\[ \frac{d \boldsymbol y}{dt} = \frac{1}{\delta^2}\, \Big( F_y(\boldsymbol{y}) + \delta \, \boldsymbol{q}_{y} \cdot \boldsymbol{dW}_y \Big) + \frac{\varepsilon}{\delta} \, \Psi_y(\boldsymbol{x},\boldsymbol{y}) \]
where \(\varepsilon\) is the resolved-unresolved components coupling strength given by the parameter stoch_params::eps_pert. \(\delta\) is the timescale separation parameter given by the parameter stoch_params::tdelta. By setting those to 1, one recover the first equations above.
The function \(\Psi_x\) includes all the \(\boldsymbol x\) terms, and thus \(F_x\) and \(\Psi_x\) are unequivocally defined. On the other hand, depending on the value of the parameter stoch_params::mode, the terms regrouped in the function \(F_y\) can be different. Indeed, if stoch_params::mode is set to
\[ F_y(\boldsymbol{y})= \boldsymbol{B}^{yyy} : \boldsymbol{y} \otimes \boldsymbol{y} \]
\[ F_y(\boldsymbol{y})= \boldsymbol{H}^y + \boldsymbol{L}^{yy}\cdot\boldsymbol{y} + \boldsymbol{B}^{yyy} : \boldsymbol{y} \otimes \boldsymbol{y} \]
However, for the WL parameterization, this parameter must be set to 'ures' by definition. See the article accompagnying this code for more details.This parameterization is also called homogenization. Its acronym comes from the names of the authors that proposed this approach for climate modes: Majda, Timofeyev and Vanden Eijnden (Majda et al., 2001). It is given by
\[ \frac{d\boldsymbol{x}}{dt} = F_X(\boldsymbol{x}) + \frac{1}{\delta} R(\boldsymbol{x}) + G(\boldsymbol{x}) + \sqrt{2} \,\, \boldsymbol{\sigma}(\boldsymbol{x}) \cdot \boldsymbol{dW} \]
where \(\boldsymbol{x}\) is the set of resolved variables and \(\boldsymbol{dW}\) is a vector of standard Gaussian White noise. \(F_x\) is the set of tendencies of resolved system alone and \(\delta\) is the timescale separation parameter.
The ingredients needed to compute the terms \(R,G,\boldsymbol\sigma\) of this parametrization are the unresolved variables covariance matrix and the integrated correlation matrices. The unresolved variables covariance matrix is given by
\[\boldsymbol\sigma_y = \langle \boldsymbol y \otimes \boldsymbol y \rangle \]
and is present in the implementation through the matrices corrmod::corr_i and corrmod::corr_i_full. Their inverses are also available through corrmod::inv_corr_i and corrmod::inv_corr_i_full . The integrated correlation matrices are given by
\[ \boldsymbol\Sigma = \int_0^\infty \, ds \langle \, \boldsymbol y \otimes \boldsymbol y^s \rangle \]
\[ \boldsymbol\Sigma_2 = \int_0^\infty ds \, \left(\langle \boldsymbol y \otimes \boldsymbol y^s \rangle \otimes \langle \boldsymbol y \otimes \boldsymbol y^s \rangle\right) \]
and is present in the implementation through the matrices int_corr::corrint and int_corr::corr2int .
These matrices are computed from the correlation matrix \(\langle \boldsymbol y \otimes \boldsymbol y^s \rangle\) which is accessible through the function corrmod::corrcomp. For instance, the covariance matrix \(\boldsymbol\sigma_y\) is then simply the correlation matrix at the lagtime 0, and \(\boldsymbol\Sigma\) and \(\boldsymbol\Sigma_2\) can be computed via integration over the lagtime.
There exists three different ways to load the correlation matrix, specified by the value of the parameters stoch_params::load_mode and stoch_params::int_corr_mode . The stoch_params::load_mode specify how the correlation matrix is loaded can take three different values:
The stoch_params::int_corr_mode specify how the correlation are integrated and can take two different values:
These parameters can be set up in the namelist file stoch_params.nml . Examples of the ".def" files specifying the integrals are provided with the code.
Some additional parameters complete the options possible for the MTV parameters :
The following definition files are needed by the parameterization, depending on the value of the parameters described above. Examples of those files are joined to the code. The files include:
\[ a_4+a_0 \, \exp\left(-\frac{s}{a_1}\right) \, \cos(a_2 \, s + a_3) \]
where \(t\) is the lag-time and \(\tau\) is the decorrelation time. Used if stoch_params::load_mode is set to 'expo'.The various terms are then constructed according to these definition files. More details on the format of the definition files can be found here.
This parameterization is based on the Ruelle response theory. Its acronym comes from the names of the authors that proposed this approach: Wouters and Lucarini (Wouters and Lucarini, 2012). It is given by
\[\frac{d\boldsymbol{x}}{dt} = F_x(\boldsymbol{x}) + \varepsilon \, M_1(\boldsymbol{x}) + \varepsilon^2 \, M_2(\boldsymbol{x},t) + \varepsilon^2 \, M_3 (\boldsymbol{x},t)\]
where \(\varepsilon\) is the resolved-unresolved components coupling strength and where the different terms \(M_i\) account for average, correlation and memory effects.
The ingredients needed to compute the \(M_i\) terms of this parametrization are the unresolved variable covariance matrix \(\langle \boldsymbol y \otimes \boldsymbol y \rangle\) and correlation matrix \(\langle \boldsymbol y \otimes \boldsymbol y^s \rangle\). The unresolved variables covariance matrix is given by
\[\boldsymbol\sigma_y = \langle \boldsymbol y \otimes \boldsymbol y \rangle \]
and is present in the implementation through the matrices corrmod::corr_i and corrmod::corr_i_full. Their inverses are also available through corrmod::inv_corr_i and corrmod::inv_corr_i_full.
The correlation matrix \(\langle \boldsymbol y \otimes \boldsymbol y^s \rangle\) is accessible through the function corrmod::corrcomp.
As for the MTV case, there exists three different ways to load the correlation matrix, specified by the value of the parameters stoch_params::load_mode and stoch_params::int_corr_mode . The stoch_params::load_mode specify how the correlation matrix is loaded can take three different values:
The correlation term \(M_2\) is emulated by an order \(m\) multidimensional AutoRegressive (MAR) process:
\[ \boldsymbol u_n = \sum_{i=1}^m \boldsymbol u_{n-i} \cdot \boldsymbol W_i + \boldsymbol Q \cdot \boldsymbol\xi_n \]
of which the \(\boldsymbol W_i\) and \(\boldsymbol Q\) matrices are also needed (the \(\boldsymbol\xi_n\) are vectors of standard Gaussian white noise). It is implemented in the MAR module.
Some additional parameters complete the options possible for the WL parameters :
Note that the stoch_params::mode must absolutely be set to 'ures', by definition.
The following definition files are needed by the parameterization, depending on the value of the parameters described above. Examples of those files are joined to the code. The files include:
\[ a_4+a_0 \, \exp\left(-\frac{s}{a_1}\right) \, \cos(a_2 \, s + a_3) \]
where \(t\) is the lag-time and \(\tau\) is the decorrelation time. Used if stoch_params::load_mode is set to 'expo'.The various terms are then constructed according to these definition files. More details on the format of the definition files can be found here.
Please see the main article for the full list of references: