Skip to content

baseline⚓︎

Unsophisticated" but robust (widely applicable) DA methods.

Many are based on raanes2016thesis.

Modules:

Name Description
series

Time series management and processing.

Climatology ⚓︎

A baseline/reference method.

Note that the "climatology" is computed from truth, which might be (unfairly) advantageous if the simulation is too short (vs mixing time).

OptInterp ⚓︎

Optimal Interpolation -- a baseline/reference method.

Uses the Kalman filter equations, but with a prior from the Climatology.

Persistence ⚓︎

Sets estimate to the true state at the previous time index.

The analysis (.a) stat uses the previous obs. time. The forecast and universal (.f and .u) stats use previous integration time index.

PreProg ⚓︎

Simply look-up the estimates in user-specified function (schedule).

For example, with schedule given by lambda k, xx, yy: xx[k] the error (err.rms, err.ma, ...) should be 0.

Var3D ⚓︎

3D-Var -- a baseline/reference method.

This implementation is not "Var"-ish: there is no iterative optimzt. Instead, it does the full analysis update in one step: the Kalman filter, with the background covariance being user specified, through B and xB.

fit_sigmoid(Sb, L, kb) ⚓︎

Return a sigmoid [function S(k)] for approximating error dynamics.

We use the logistic function for the sigmoid; it's the solution of the "population growth" ODE: dS/dt = a*S*(1-S/S(∞)). NB: It might be better to use the "error growth ODE" of Lorenz/Dalcher/Kalnay, but this has a significantly more complicated closed-form solution, and reduces to the above ODE when there's no model error (ODE source term).

The "normalized" sigmoid, S1, is symmetric around 0, and S1(-∞)=0 and S1(∞)=1.

The sigmoid S(k) = S1(a*(k-kb) + b) is fitted with

  • a corresponding to a given corr. length L.
  • b to match values of S(kb) and Sb
Illustration