Skip to content

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 ⚓︎

Bases: Ensemble

Inititallize the multilevel class. Similar for all ML schemes, hence make one class for all.

init_ml_prior() ⚓︎

This function changes the structure of prior from independent ensembles to a nested structure.

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