baseline⚓︎
Unsophisticated" but robust (widely applicable) DA methods.
Many are based on raanes2016thesis.
Climatology
⚓︎
Bases: da_method
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
⚓︎
Bases: da_method
Optimal Interpolation -- a baseline/reference method.
Uses the Kalman filter equations, but with a prior from the Climatology.
Persistence
⚓︎
Bases: da_method
Sets estimate to the true state at the previous time index.
The analysis (.a) stat uses the previous obs. time.
The forecast and integrational (.f and .i) stats use previous integration time
index.
PreProg
⚓︎
Bases: da_method
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
⚓︎
Bases: da_method
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
acorresponding to a given corr. lengthL.bto match values ofS(kb)andSb