Skip to content

full⚓︎

Full (model-space) LM ensemble update.

full_update ⚓︎

Bases: AnalysisBase

Full LM update as in Chen & Oliver (2013).

Unlike the approximate update, the state-error covariance is represented in model space via the Am matrix, which adds an explicit regularisation term pulling the ensemble toward the prior.

Reference

Chen, Y., & Oliver, D. S. (2013). Levenberg-Marquardt forms of the iterative ensemble smoother for efficient history matching and uncertainty quantification. Computational Geosciences, 17(4), 689-703. https://doi.org/10.1007/s10596-013-9351-5

Note

No localization is implemented for this update scheme.

ext_Am() ⚓︎

Compute and cache the Am matrix from the scaled prior anomalies.

The anomalies are divided by state_scaling, the same scaled space update puts X_anom and the prior misfit in, so that Am @ Am.T approximates the inverse of the scaled prior covariance. Multiplying by the scaling instead, as this once did, made the regularisation term off by the squared standard deviation for any variable whose prior standard deviation was not 1.

update(enX, enY, enE, **kwargs) ⚓︎

Perform the full LM update.

Parameters:

Name Type Description Default
enX (ndarray, shape(nx, ne))

State ensemble matrix.

required
enY (ndarray, shape(nd, ne))

Predicted data ensemble matrix.

required
enE (ndarray, shape(nd, ne))

Perturbed observations ensemble.

required

Returns:

Type Description
(ndarray, shape(nx, ne))

Update step to be added to the state ensemble.