A Modular Arbitrary-Order Ocean-Atmosphere Model -- Stochastic implementation
doc/sto_doc.md
Go to the documentation of this file.
1 # Modular arbitrary-order ocean-atmosphere model: The MTV and WL parameterizations #
2 
3 ## The stochastic version of MAOOAM ##
4 
5 The stochastic version of MAOOAM is given by
6 
7 \f[ \frac{d \boldsymbol{z}}{dt} = f(\boldsymbol{z})+ \boldsymbol{q} \cdot \boldsymbol{dW} (t)\f]
8 
9 where \f$\boldsymbol{dW}\f$ is a vector of standard Gaussian White noise and where several choice for \f$f(\boldsymbol{z})\f$ are available.
10 For instance, the default choice is to use the full dynamics:
11 \f[ f(\boldsymbol{z}) = \sum_{j,k=0}^{ndim} \, \mathcal{T}_{i,j,k} \, z_k \; z_j . \f]
12 The implementation uses thus the tensorial framework of MAOOAM and add some noise to it. To study parameterization methods in MAOOAM, the models variables \f$\boldsymbol z\f$ is divised in two components: the resolved component \f$\boldsymbol x\f$ and the unresolved component \f$\boldsymbol y\f$ (see below for more details).
13 
14  Since MAOOAM is a ocean-atmosphere model, it can be decomposed further into oceanic and atmospheric components:
15 \f[ \boldsymbol z = \{ \boldsymbol{x}_{\text{a}}, \boldsymbol{x}_{\text{o}}, \boldsymbol{y}_{\text{a}}, \boldsymbol{y}_{\text{o}}\} \f]
16 and in the present implementation, the noise amplitude can be set in each component:
17 \f[ \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)\f]
18 \f[ \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)\f]
19 \f[ \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)\f]
20 \f[ \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)\f]
21 through the parameters stoch_params::q_ar, stoch_params::q_au, stoch_params::q_or and stoch_params::q_ou.
22 
23 ------------------------------------------------------------------------
24 
25 ## The resolved-unresolved components ##
26 
27 Due to the decomposition into resoved variables \f$ \boldsymbol x\f$ and unresolved variables \f$ \boldsymbol y\f$, the equation of the MAOOAM model can be rewritten:
28 
29 \f[ \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 \f]
30 \f[ \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 \f]
31 
32 where \f$\boldsymbol{q}_x= \{\boldsymbol{q}_{x,\text{a}},\boldsymbol{q}_{x,\text{o}}\}\f$ and \f$\boldsymbol{q}_y= \{\boldsymbol{q}_{y,\text{a}},\boldsymbol{q}_{y,\text{o}}\}\f$. We have thus also \f$\boldsymbol{dW}_x=\{\boldsymbol{dW}_{x,\text{a}},\boldsymbol{dW}_{x,\text{o}}\}\f$ and \f$\boldsymbol{dW}_y= \{\boldsymbol{dW}_{y,\text{a}},\boldsymbol{dW}_{y,\text{o}}\}\f$. 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.
33 
34 The purpose of the parameterization is to reduce the \f$\boldsymbol x\f$ 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:
35 
36 \f[ \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}) \f]
37 \f[ \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}) \f]
38 
39 where \f$\varepsilon\f$ is the resolved-unresolved components coupling strength given by the parameter stoch_params::eps_pert. \f$\delta\f$ is the timescale separation parameter given by the parameter stoch_params::tdelta. By setting those to 1, one recover the first equations above.
40 
41 The function \f$\Psi_x\f$ includes all the \f$\boldsymbol x\f$ terms, and thus \f$F_x\f$ and \f$\Psi_x\f$ are unequivocally defined.
42 On the other hand, depending on the value of the parameter stoch_params::mode, the terms regrouped in the function \f$F_y\f$ can be different.
43 Indeed, if stoch_params::mode is set to
44  - 'qfst', then:
45  \f[ F_y(\boldsymbol{y})= \boldsymbol{B}^{yyy} : \boldsymbol{y} \otimes \boldsymbol{y} \f]
46  - 'ures', then:
47  \f[ F_y(\boldsymbol{y})= \boldsymbol{H}^y + \boldsymbol{L}^{yy}\cdot\boldsymbol{y} + \boldsymbol{B}^{yyy} : \boldsymbol{y} \otimes \boldsymbol{y} \f]
48  However, for the WL parameterization, this parameter must be set to 'ures' by definition. See the article accompagnying this code for more details.
49 
50 ------------------------------------------------------------------------
51 
52 ## The MTV parameterization ##
53 
54 This parameterization is also called homogenization. Its acronym comes from the names of
55 the authors that proposed this approach for climate modes: Majda, Timofeyev and Vanden Eijnden
56 (Majda et al., 2001). It is given by
57 
58 \f[ \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} \f]
59 
60 where \f$\boldsymbol{x}\f$ is the set of resolved variables and \f$\boldsymbol{dW}\f$ is a vector of standard Gaussian White noise.
61 \f$F_x\f$ is the set of tendencies of resolved system alone and \f$\delta\f$ is the timescale separation parameter.
62 
63 ### Correlations specification ###
64 
65 The ingredients needed to compute the terms\f$R,G,\boldsymbol\sigma\f$ of this parametrization are the unresolved variables covariance matrix and the integrated correlation matrices.
66 The unresolved variables covariance matrix is given by
67 \f[\boldsymbol\sigma_y = \langle \boldsymbol y \otimes \boldsymbol y \rangle \f]
68 and is present in the implementation through the matrices corrmod::corr_i and corrmod::corr_i_full.
69 Their inverses are also available through corrmod::inv_corr_i and corrmod::inv_corr_i_full .
70 The integrated correlation matrices are given by
71 \f[ \boldsymbol\Sigma = \int_0^\infty \, ds \langle \, \boldsymbol y \otimes \boldsymbol y^s \rangle \f]
72 \f[ \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) \f]
73 and is present in the implementation through the matrices int_corr::corrint and int_corr::corr2int .
74 
75 These matrices are computed from the correlation matrix \f$\langle \boldsymbol y \otimes \boldsymbol y^s \rangle\f$ which is accessible
76 through the function corrmod::corrcomp.
77 For instance, the covariance matrix \f$\boldsymbol\sigma_y\f$ is then simply the correlation matrix at the lagtime 0,
78 and \f$\boldsymbol\Sigma\f$ and \f$\boldsymbol\Sigma_2\f$ can be computed via integration over the lagtime.
79 
80 There exists three different ways to load the correlation matrix, specified by the value
81 of the parameters stoch_params::load_mode and stoch_params::int_corr_mode .
82 The stoch_params::load_mode specify how the correlation matrix is loaded can take three different values:
83  - 'defi': from an analytical definition encoded in the corrmod module function corrmod::corrcomp_from_def .
84  - 'spli': from a spline definition file 'corrspline.def' .
85  - 'expo': from a fit with exponentials definition file 'correxpo.def'
86 
87 The stoch_params::int_corr_mode specify how the correlation are integrated and can take two different values:
88  - 'file': Integration results provided by files 'corrint.def' and 'corr2int.def'
89  - 'prog': Integration computed directly by the program with the correlation matrix. Write 'corrint.def' and 'corr2int.def' files to be reused later.
90 
91 These parameters can be set up in the namelist file stoch_params.nml .
92 Examples of the ".def" files specifying the integrals are provided with the code.
93 
94 ### Other MTV setup parameters ###
95 
96 Some additional parameters complete the options possible for the MTV parameters :
97  - stoch_params::mnuti : Multiplicative noise update time interval -- Time interval over which the matrix \f$\boldsymbol\sigma(\boldsymbol x)\f$ is updated.
98  - stoch_params::t_trans_stoch : Transient period of the stochastic model.
99  - stoch_params::maxint : Specify the upper limit of the numerical integration if stoch_params::int_corr_mode is set to 'prog'.
100 
101 ### Definition files ###
102 
103 The following definition files are needed by the parameterization, depending on the value of the parameters described above.
104 Examples of those files are joined to the code. The files include:
105  - 'correxpo.def': Coefficients \f$a_i\f$ of the fit of the correlations with the function \f[ a_4+a_0 \, \exp\left(-\frac{t}{a_1}\right) \, \cos(a_2 \, t + a_3) \f]
106  where \f$t\f$ is the lag-time and \f$\tau\f$ is the decorrelation time. Used if stoch_params::load_mode is set to 'expo'.
107  - 'corrspline.def': Coefficients \f$b_i\f$ of the spline used to model the correlation functions. Used if stoch_params::load_mode is set to 'spli'.
108  - 'corrint.def': File holding the matrix \f$\boldsymbol\Sigma\f$. Used if stoch_params::int_corr_mode is set to 'file'.
109  - 'corr2int.def': File holding the matrix \f$\boldsymbol\Sigma_2\f$.
110 
111 ------------------------------------------------------------------------
112 
113 ## The WL parameterization ##
114 
115 This parameterization is based on the Ruelle response theory. Its acronym comes from the names of
116 the authors that proposed this approach: Wouters and Lucarini (Wouters and Lucarini, 2012). It is given by
117 
118 \f[\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)\f]
119 
120 where \f$\varepsilon\f$ is the resolved-unresolved components coupling strength and where the different terms \f$M_i\f$ account for average, correlation and memory effects.
121 
122 ### Correlations specification ###
123 
124 The ingredients needed to compute the \f$M_i\f$ terms of this parametrization are the unresolved variable covariance matrix \f$\langle \boldsymbol y \otimes \boldsymbol y \rangle\f$ and correlation matrix \f$\langle \boldsymbol y \otimes \boldsymbol y^s \rangle\f$.
125 The unresolved variables covariance matrix is given by
126 \f[\boldsymbol\sigma_y = \langle \boldsymbol y \otimes \boldsymbol y \rangle \f]
127 and is present in the implementation through the matrices corrmod::corr_i and corrmod::corr_i_full.
128 Their inverses are also available through corrmod::inv_corr_i and corrmod::inv_corr_i_full.
129 
130 The correlation matrix \f$\langle \boldsymbol y \otimes \boldsymbol y^s \rangle\f$ is accessible
131 through the function corrmod::corrcomp.
132 
133 As for the MTV case, there exists three different ways to load the correlation matrix, specified by the value
134 of the parameters stoch_params::load_mode and stoch_params::int_corr_mode .
135 The stoch_params::load_mode specify how the correlation matrix is loaded can take three different values:
136  - 'defi': from an analytical definition encoded in the corrmod module function corrmod::corrcomp_from_def .
137  - 'spli': from a spline definition file 'corrspline.def' .
138  - 'expo': from a fit with exponentials definition file 'correxpo.def'
139 
140 The correlation term \f$M_2\f$ is emulated by an order \f$m\f$ multidimensional AutoRegressive (MAR) process:
141 \f[ \boldsymbol u_n = \sum_{i=1}^m \boldsymbol u_{n-i} \cdot \boldsymbol W_i + \boldsymbol Q \cdot \boldsymbol\xi_n \f]
142 of which the \f$\boldsymbol W_i\f$ and \f$\boldsymbol Q\f$ matrices are also needed (the \f$\boldsymbol\xi_n\f$ are vectors of standard Gaussian white noise). It is implemented in the MAR module.
143 
144 ### Other WL setup parameters ###
145 
146 Some additional parameters complete the options possible for the WL parameters :
147  - stoch_params::muti : Memory term \f$M_3\f$ update time interval.
148  - stoch_params::t_trans_stoch : Transient period of the stochastic model.
149  - stoch_params::meml : Time over which the memory kernel is numericaly integrated.
150  - stoch_params::t_trans_mem : Transient period of the stochastic model to initialize the memory term.
151  - stoch_params::dts : Intrisic resolved dynamics time step.
152  - stoch_params::x_int_mode : Integration mode for the resolved component (not used for the moment -- must be set to 'reso').
153 
154 Note that the stoch_params::mode must absolutely be set to 'ures', by definition.
155 
156 ### Definition files ###
157 
158 The following definition files are needed by the parameterization, depending on the value of the parameters described above.
159 Examples of those files are joined to the code. The files include:
160  - 'correxpo.def': Coefficients \f$a_i\f$ of the fit of the correlations with the function \f[ a_4+a_0 \, \exp\left(-\frac{t}{a_1}\right) \, \cos(a_2 \, t + a_3) \f]
161  where \f$t\f$ is the lag-time and \f$\tau\f$ is the decorrelation time. Used if stoch_params::load_mode is set to 'expo'.
162  - 'corrspline.def': Coefficients \f$b_i\f$ of the spline used to model the correlation functions. Used if stoch_params::load_mode is set to 'spli'.
163  - 'MAR_R_params.def': File specifying the \f$\boldsymbol R = \boldsymbol Q^2\f$ matrix for the MAR.
164  - 'MAR_W_params.def': File specifying the \f$\boldsymbol W_i\f$ matrices for the MAR.
165 
166 The various terms are then constructed according to these definition files.
167 
168 ------------------------------------------------------------------------
169 
170 ## References ##
171 
172 * Vannitsem, S., Demaeyer, J., De Cruz, L., and Ghil, M.: Low-frequency
173 variability and heat transport in a loworder nonlinear coupled ocean-atmosphere
174 model, Physica D: Nonlinear Phenomena, 309, 71-85, 2015.
175 
176 * De Cruz, L., Demaeyer, J., & Vannitsem, S.: The Modular Arbitrary-Order
177 Ocean-Atmosphere Model: MAOOAM v1.0,
178 Geoscientific Model Development, 9(8), 2793-2808, 2016.
179 
180 * Majda, A. J., Timofeyev, I., & Vanden Eijnden, E.: A mathematical framework
181 for stochastic climate models,
182 Communications on Pure and Applied Mathematics, 54(8), 891-974, 2001.
183 
184 * Franzke, C., Majda, A. J., & Vanden-Eijnden, E.: Low-order stochastic mode
185 reduction for a realistic barotropic model climate,
186 Journal of the atmospheric sciences, 62(6), 1722-1745, 2005.
187 
188 * Wouters, J., & Lucarini, V.: Disentangling multi-level systems: averaging,
189 correlations and memory.
190 Journal of Statistical Mechanics: Theory and Experiment, 2012(03), P03003, 2012.
191 
192 * Demaeyer, J., & Vannitsem, S.: Stochastic parametrization of subgrid‐scale
193 processes in coupled ocean–atmosphere systems: benefits and limitations of response theory,
194 Quarterly Journal of the Royal Meteorological Society, 143(703), 881-896, 2017.
195 
196 Please see the main article for the full list of references.