XdVAR
This module defines methods for classical variational data assimilation such as 3D- / 4D-VAR. Primal cost functions are defined, with their implicit differentiation performed with automatic differentiation with JuliaDiff methods. Development of gradient-based optimization schemes using automatic differentiation is ongoing, with future development planned to integrate variational benchmark experiments.
The basic 3D-VAR cost function API is defined as follows
D3_var_cost(x::VecA(T), obs::VecA(T), x_background::VecA(T), state_cov::CovM(T),
obs_cov::CovM(T), kwargs::StepKwargs) where T <: Realwhere the control variable x is optimized, with fixed hyper-parameters defined in a wrapping function passed to auto-differentiation.
Methods
DataAssimilationBenchmarks.XdVAR.D3_var_NewtonOp — MethodD3_var_NewtonOp(x_bkg::VecA(T), obs::VecA(T), state_cov::CovM(T), H_obs::Function,
obs_cov::CovM(T), kwargs::StepKwargs) where T <: Float64Computes the local minima of the three-dimension variational cost function with a static background covariance using a simple Newton optimization method
x_bkg is the initial state proposal vector, obs is to the observation vector, state_cov is the background error covariance matrix, H_obs is a model mapping operator for observations, obs_cov is the observation error covariance matrix, and kwargs refers to any additional arguments needed for the operation computation.
return xDataAssimilationBenchmarks.XdVAR.D3_var_cost — MethodD3_var_cost(x::VecA(T), obs::VecA(T), x_bkg::VecA(T), state_cov::CovM(T),
H_obs::Function, obs_cov::CovM(T), kwargs::StepKwargs) where T <: RealComputes the cost of the three-dimensional variational analysis increment from an initial state proposal with a static background covariance
x is a free argument used to evaluate the cost of the given state proposal versus other proposal states, obs is to the observation vector, x_bkg is the initial state proposal vector, state_cov is the background error covariance matrix, H_obs is a model mapping operator for observations, and obs_cov is the observation error covariance matrix. kwargs refers to any additional arguments needed for the operation computation.
return 0.5*back_component + 0.5*obs_componentDataAssimilationBenchmarks.XdVAR.D3_var_grad — MethodD3_var_grad(x::VecA(T), obs::VecA(T), x_bkg::VecA(T), state_cov::CovM(T),
H_obs::Function, obs_cov::CovM(T), kwargs::StepKwargs) where T <: Float64Computes the gradient of the three-dimensional variational analysis increment from an initial state proposal with a static background covariance using a wrapper function for automatic differentiation
x is a free argument used to evaluate the cost of the given state proposal versus other proposal states, obs is to the observation vector, x_bkg is the initial state proposal vector, state_cov is the background error covariance matrix, H_obs is a model mapping operator for observations, and obs_cov is the observation error covariance matrix. kwargs refers to any additional arguments needed for the operation computation.
wrap_cost is a function that allows differentiation with respect to the free argument x while treating all other hyperparameters of the cost function as constant.
return ForwardDiff.gradient(wrap_cost, x)DataAssimilationBenchmarks.XdVAR.D3_var_hessian — MethodD3_var_hessian(x::VecA(T), obs::VecA(T), x_bkg::VecA(T), state_cov::CovM(T),
H_obs::Function, obs_cov::CovM(T), kwargs::StepKwargs) where T <: Float64Computes the Hessian of the three-dimensional variational analysis increment from an initial state proposal with a static background covariance using a wrapper function for automatic differentiation
x is a free argument used to evaluate the cost of the given state proposal versus other proposal states, obs is to the observation vector, x_bkg is the initial state proposal vector, state_cov is the background error covariance matrix, H_obs is a model mapping operator for observations, and obs_cov is the observation error covariance matrix. kwargs refers to any additional arguments needed for the operation computation.
wrap_cost is a function that allows differentiation with respect to the free argument x while treating all other hyperparameters of the cost function as constant.
return ForwardDiff.hessian(wrap_cost, x)