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 |