multilevel⚓︎
Here we place the classes that are required to run the multilevel schemes developed in the 4DSeis project. All methods inherit the ensemble class, hence the main loop is inherited. These classes will consider the analysis step.
esmda_h
⚓︎
Bases: multilevel
, hybrid_update
, esmdaMixIn
A multilevel implementation of the ES-MDA algorithm with the hybrid gain
check_convergence()
⚓︎
Check ESMDA objective function for logging purposes.
esmda_seq_h
⚓︎
Bases: multilevel
, esmda_approx
A multilevel implementation of the Sequeontial ES-MDA algorithm with the hybrid gain
check_convergence()
⚓︎
Check ESMDA objective function for logging purposes.
mlhs_full
⚓︎
Bases: multilevel
Multilevel Hybrid Ensemble Smoother
__init__(keys_da, keys_fwd, sim)
⚓︎
Standard initiallization
calc_analysis()
⚓︎
This class has been written based on the enkf class. It is designed for simultaneous assimilation of seismic data with multilevel spatial data. Using this calc_analysis tool we generate a seperate level-based covariance matrix for every level and update them seperate from each other This scheme updates each level based on the covariance and cross-covariance matrix which are generated based on all the levels which are up/down-scaled to that specific level. In short Modified Kristian's Idea
calc_kalmangain(cov_cross, cov_auto, cov_data, opt=None)
⚓︎
Calculate the Kalman gain Using mainly two options: linear soultion and pseudo inverse of the matrix MN 04/2020
check_convergence()
⚓︎
Check if LM-EnRML have converged based on evaluation of change sizes of objective function, state and damping parameter.
Returns:
Name | Type | Description |
---|---|---|
conv |
bool
|
Logic variable telling if algorithm has converged |
why_stop |
dict
|
Dict. with keys corresponding to conv. criteria, with logical variable telling which of them that has been met |
check_fault()
⚓︎
Checks if there is a statement for generating a fault in the input file and if so generates a synthetic fault based on the given input in there.
efficient_real_gen(mean, var, number, level, original_size=False, limits=None, return_chol=False)
⚓︎
This function is added to prevent additional computational cost if var is diagonal MN 04/20
multilevel
⚓︎
smlses_s
⚓︎
Bases: multilevel
, esmda_approx
The Sequential multilevel ensemble smoother with the "straightforward" flavour as descibed in Nezhadali, M., Bhakta, T., Fossum, K., & Mannseth, T. (2023). Sequential multilevel assimilation of inverted seismic data. Computational Geosciences, 27(2), 265–287. https://doi.org/10.1007/s10596-023-10191-9
Since the update schemes are basically a esmda update we inherit the esmda_approx method. Hence, we only have to care about handling the multi-level features.
check_convergence()
⚓︎
Check convergence for the smlses-s method