Skip to content

enrml⚓︎

EnRML type schemes

co_lm_enrml ⚓︎

Bases: lmenrmlMixIn, approx_update

This is the implementation of the approximative LM-EnRML algorithm as described in chen2013.

This algorithm is quite similar to the lm_enrml as provided above, and will therefore inherit most of its methods. We only change the calc_analysis part...

% Copyright © 2019-2022 NORCE, All Rights Reserved. 4DSEIS

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

calc_analysis() ⚓︎

Calculate the update step in approximate LM-EnRML code.

Attributes:

Name Type Description
iteration int

Iteration number

Returns:

Name Type Description
success bool

True if data mismatch is decreasing, False if increasing

gn_enrml ⚓︎

Bases: lmenrmlMixIn

This is the implementation of the stochastig IES as described in raanes2019.

More information about the method is found in evensen2019. This implementation is the Gauss-Newton version.

This algorithm is quite similar to the lm_enrml as provided above, and will therefore inherit most of its methods. We only change the calc_analysis part...

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

calc_analysis() ⚓︎

Changelog
  • KF 25/2-20

check_convergence() ⚓︎

Check if GN-EnRML have converged based on evaluation of change sizes of objective function, state and damping parameter. Very similar to original function, but exit if there is no reduction in obj. function.

Returns:

Name Type Description
conv bool

Logic variable indicating if the algorithm has converged.

status bool

Indicates whether the objective function has reduced.

why_stop dict

Dictionary with keys corresponding to convergence criteria, with logical variables indicating which of them has been met.

Changelog
  • ST 3/6-16
  • ST 6/6-16: Added LM damping param. check
  • KF 16/11-20: Modified for GN-EnRML
  • KF 10/3-21: Output whether the method reduced the objective function

gnenrmlMixIn ⚓︎

Bases: Ensemble

This is an implementation of EnRML using the Gauss-Newton approach. The update scheme is selected by a MixIn with multiple update_methods_ns. This class must therefore facititate many different update schemes.

__init__(keys_da, keys_fwd, sim) ⚓︎

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.

calc_analysis() ⚓︎

Calculate the update step in LM-EnRML, which is just the Levenberg-Marquardt update algorithm with the sensitivity matrix approximated by the ensemble.

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

gnenrml_margis ⚓︎

Bases: gnenrmlMixIn, margIS_update

The marg-IS scheme is currently not available in this version of PIPT. To utilize the scheme you have to import the margIS_update class from a standalone repository.

lmenrmlMixIn ⚓︎

Bases: Ensemble

This is an implementation of EnRML using Levenberg-Marquardt. The update scheme is selected by a MixIn with multiple update_methods_ns. This class must therefore facititate many different update schemes.

__init__(keys_da, keys_fwd, sim) ⚓︎

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.

calc_analysis() ⚓︎

Calculate the update step in LM-EnRML, which is just the Levenberg-Marquardt update algorithm with the sensitivity matrix approximated by the ensemble.

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