Variational data assimilation in OOPS¶
The variational application is a generic application for running incremental variational data assimilation.
Supported cost functions and minimizers are described below.
Supported cost functions¶
3D-Var¶
Uses 3D state in the update and in the observer. Does not require model TL/AD. Background, background error covariance and analysis increment are all defined at a single time in the middle of the assimilation window.
3D-FGAT¶
3D-FGAT (First Guess at Appropriate Time). The model (including pseudo model) is run to generate the background trajectory, so the observer can use model states at several times throughout the assimilation window. Background error covariance and analysis increment are still defined at a single time in the middle of the assimilation window.
To turn on linear time interpolation of observation operators, set the following option in the yaml file for each of the observation types that need it:
observers:
...
get values:
time interpolation: linear
4D-Ens-Var¶
4DEnVar uses ensembles for estimating 4-dimensional ensemble background error covariances. Does not require model TL/AD.
To configure 4DEnVar in the yaml file, use the following structure:
cost type: 4D-Ens-Var
time window:
begin: ...
length: PT6H
subwindow: PT1H
parallel subwindows: true # optional, default is true
The number of subwindows is determined from the time window length and the subwindow length. If “parallel subwindows” is set to true, the subwindows are processed in parallel, and the number of MPI tasks needs to be a multiple of the number of subwindows. Configuring 4DEnVar requires specifying backgrounds and ensemble backgrounds (for ensemble background error covariances) for each of the subwindows, e.g.:
cost function:
cost type: 4D-Ens-Var
time window:
begin: 2010-01-01T00:00:00Z
length: PT6H
subwindow: PT3H
background:
states:
- date: 2010-01-01T00:00:00Z
...
- date: 2010-01-01T03:00:00Z
...
- date: 2010-01-01T06:00:00Z
...
background error:
covariance model: ensemble
localization:
...
members from template:
template:
states:
- date: 2010-01-01T00:00:00Z
...
- date: 2010-01-01T03:00:00Z
...
- date: 2010-01-01T06:00:00Z
...
pattern: %mem%
nmembers: 100
4D-Var¶
The 4D-Var cost function name is reserved for the strong-constraint (perfect model) 4DVar. Requires model TL/AD.
4D-Var-Weak¶
This name is reserved for weak-constraint 4DVar. Two options are available:
using model error forcing control variable
using 4D model state control variable.
Any of the above cost functions could be run with any of the supported minimizers:
Supported minimizers¶
Primal Minimizers¶
PCG : Preconditioned Conjugate Gradients solver
IPCG : Inexact-Preconditioned Conjugate Gradients (G.H. Golub and Q. Ye 1999/00, SIAM J. Sci. Comput. 21(4) 1305-1320)
MINRES : minimal residual method, based on implementation following C. C. Paige and M. A. Saunders, 1975.
GMRESR : generalized minimal residual method (H.A. Van der Vorst and C. Vuik, 1994, Numerical Linear Algebra with Applications, 1(4), 369-386)
PLanczos : standard Preconditioned Lanczos algorithm
Derber-Rosati Minimizers¶
All the minimizers in this section are based on J. Derber and A. Rosati, 1989, J. Phys. Oceanog. 1333-1347
DRPCG : Derber-Rosati Preconditioned Conjugate Gradients. For details see S. Gurol, PhD Manuscript, 2013.
DRIPCG : Derber-Rosati IPCG Minimizer
DRGMRESR : Derber-Rosati GMRESR: “double” version of GMRESR (Van der Vorst & Vuik) following Derber and Rosati.
DRPLanczos : Derber-Rosati Preconditioned Lanczos
DRPFOM : Preconditioned Full Orthogonal Method (FOM): generalization of the Lanczos method to the unsymmetric case.
Left B Preconditioned Minimizer¶
LBGMRESR : Left B Preconditioned GMRESR solver
Dual minimizers¶
RPCG : Augmented Restricted Preconditioned Conjugate Gradients. Based on the algorithm proposed in Gratton and Tshimanga, QJRMS, 135: 1573-1585 (2009).
RPLanczos : Augmented Restricted Lanczos. Lanczos version of RPCG. Based on the algorithm from Gurol, PhD Manuscript, 2013.
SaddlePoint minimizer¶
Variational application yaml structure¶
The following block of code gives the main components of the yaml file needed to run a 3d-var:
---
cost function:
cost type: #one of the supported cost functions
time window:
begin: # beginning of the data assimilation window
length: # length of the data assimilation window
bound to include: end # which window bound is inclusive (options: begin, end (default)).
analysis variables: #variables used for the analysis
geometry:
#geometry of the model
background:
#background file
background error:
#one of the supported background error covariance matrix
observations:
obs perturbations: #switch for observation perturbations (default false)
observers:
#list of observation files
variational:
minimizer:
algorithm: #one of the supported minimizers
iterations: #each item of this list defines an outer loop
- diagnostics: #(optional)
departures: ombg #will save 'observations - H(background)' in the output file
gradient norm reduction: #target norm for the minimization of the gradient
ninner: #maximum number of iterations in this outer loop
geometry:
#geometry of the model
- #another outer loop
[...]
final:
diagnostics: #(optional)
departures: oman #will save 'observations - H(analysis)' in the output file
output:
#path, file name, ... to save the analysis