Skip to content

variational⚓︎

Variational DA methods (iEnKS, 4D-Var, etc).

Var4D ⚓︎

4D-Var.

Cycling scheme is same as in iEnKS (i.e. the shift is always 1*ko).

This implementation does NOT do gradient decent (nor quasi-Newton) in an inner loop, with simplified models. Instead, each (outer) iteration is computed non-iteratively as a Gauss-Newton step. Thus, since the full (approximate) Hessian is formed, there is no benefit to the adjoint trick (back-propagation). => This implementation is not suited for big systems.

Incremental formulation is used, so the formulae look like the ones in iEnKS.

iEnKS ⚓︎

Iterative EnKS.

Special cases: EnRML, ES-MDA, iEnKF, EnKF raanes2019.

As in bocquet2014, optimization uses Gauss-Newton. See bocquet2012a for Levenberg-Marquardt. If MDA=True, then there's not really any optimization, but rather Gaussian annealing.

Args: upd_a (str): Analysis update form (flavour). One of:

- "Sqrt"   : as in ETKF  , using a deterministic matrix square root transform.
- "PertObs": as in EnRML , using stochastic, perturbed-observations.
- "Order1" : as in DEnKF of [sakov2008b][].

Lag: Length of the DA window (DAW, multiples of dko, i.e. cycles).

- Lag=1 (default) => iterative "filter" iEnKF [sakov2012a][].
- Lag=0           => maximum-likelihood filter [zupanski2005][].

Shift : How far (in cycles) to slide the DAW. Fixed at 1 for code simplicity.

nIter : Maximal num. of iterations used (>=1). Default: 10. Supporting nIter==0 requires more code than it's worth.

wtol : Rel. tolerance defining convergence. Default: 0 => always do nIter iterations. Recommended: 1e-5.

MDA : Use iterations of the "multiple data assimlation" type. Ref emerick2012

bundle: Use finite-diff. linearization instead of of least-squares regression. Makes the iEnKS very much alike the iterative, extended KF (IEKS).

xN : If set, use EnKF_N() pre-inflation. See further documentation there.

Total number of model simulations (of duration dto): N * (nIter*Lag + 1). (due to boundary cases: only asymptotically valid)

Refs: bocquet2012a, bocquet2013, bocquet2014.

var_method ⚓︎

Declare default variational arguments.

iEnKS_update(upd_a, E, DAW, HMM, stats, EPS, y, time, Rm12, xN, MDA, threshold) ⚓︎

Perform the iEnKS update.

This implementation includes several flavours and forms, specified by upd_a (See iEnKS)