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
|
|
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:
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:
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
.