Skip to content

subspace2⚓︎

Ensemble-transform IES: Gauss-Newton on the ne x ne transform matrix.

subspace2_update ⚓︎

Bases: AnalysisBase

Ensemble-transform subspace update (matrix-formulation IES).

Solves directly for the ensemble transform W (shape ne x ne), starting from W = I, minimising

J(W) = 0.5 (ne-1) ||W - I||_F^2 + 0.5 ||D - g(xbar + Xp W)||^2_{Cd^-1}

by Gauss-Newton. Unlike :class:subspace_update it uses the analytic data covariance throughout -- via scale_data -- rather than the ensemble representation E E.T, so there is no SVD and energy/trunc_energy is not consulted. The trial state is reconstructed by propose_state as mean(prior_enX) + prior_anomalies * sqrt(ne - 1) @ W.

This is exactly :class:margIS_update with Ratio fixed at 1: the data error scale is taken as known instead of being marginalised over an inverse-chi2 prior. tests/assimilation/test_subspace2.py pins that identity.

References

Raanes, P. N., Stordal, A. S., & Evensen, G. (2019). Revising the stochastic iterative ensemble smoother. Nonlinear Processes in Geophysics, 26(3), 325-338. https://doi.org/10.5194/npg-26-325-2019

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

Perform one Gauss-Newton step on the ensemble transform.

Parameters:

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

State ensemble matrix (unused; the reconstruction works from the prior).

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

Predicted data ensemble matrix.

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

Perturbed observations.

required

Returns:

Type Description
AnalysisResult

The transform step W_step of shape (ne, ne).