Skip to content

esmda⚓︎

ES-MDA type schemes

esmdaMixIn ⚓︎

Bases: Ensemble

This is the implementation of the ES-MDA algorithm given in emerick2013a. This algorithm have been implemented mostly to illustrate how a algorithm using the Mda loop can be implemented.

__init__(keys_da, keys_en, sim) ⚓︎

The class is initialized by passing the keywords and simulator object upwards in the hierarchy.

Parameters:

Name Type Description Default
keys_da
  • tot_assim_steps: total number of iterations in MDA, e.g., 3
  • inflation_param: covariance inflation factors, e.g., [2, 4, 4]
required
keys_en dict
required
sim callable
required

calc_analysis() ⚓︎

Analysis step of ES-MDA. The analysis algorithm is similar to EnKF analysis, only difference is that the data covariance matrix is inflated with an inflation parameter alpha. The update is done as an iterative smoother where all data is assimilated at once.

Notes

ES-MDA is an iterative ensemble smoother with a predefined number of iterations, where the updates is done with the EnKF update equations but where the data covariance matrix have been inflated:

\[ \begin{align} d_{obs} &= d_{true} + \sqrt{\alpha}C_d^{1/2}Z \\ m &= m_{prior} + C_{md}(C_g + \alpha C_d)^{-1}(g(m) - d_{obs}) \end{align} \]

where \(d_{true}\) is the true observed data, \(\alpha\) is the inflation factor, \(C_d\) is the data covariance matrix, \(Z\) is a standard normal random variable, \(C_{md}\) and \(C_{g}\) are sample covariance matrices, \(m\) is the model parameter, and \(g(\)\) is the predicted data. Note that \(\alpha\) can have a different value in each assimilation step and must fulfill:

\[ \sum_{i=1}^{N_a} \frac{1}{\alpha} = 1 \]

where \(N_a\) being the total number of assimilation steps.

check_convergence() ⚓︎

Check if LM-EnRML have converged based on evaluation of change sizes of objective function, state and damping parameter.

Returns:

Type Description
bool

Logic variable telling if algorithm has converged

dict

Dict. with keys corresponding to conv. criteria, with logical variable telling which of them that has been met

esmda_geo ⚓︎

Bases: esmda_approx

This is the implementation of the ES-MDA-GEO algorithm from [1]. The main analysis step in this algorithm is the same as the standard ES-MDA algorithm (implemented in the es_mda class). The difference between this and the standard algorithm is the calculation of the inflation factor. Also see rafiee2017.

__init__(keys_da) ⚓︎

The class is initialized by passing the PIPT init. file upwards in the hierarchy to be read and parsed in pipt.input_output.pipt_init.ReadInitFile.