11 #ifndef OOPS_ASSIMILATION_SADDLEPOINTPRECONDMATRIX_H_
12 #define OOPS_ASSIMILATION_SADDLEPOINTPRECONDMATRIX_H_
14 #include <boost/noncopyable.hpp>
31 template<
typename MODEL,
typename OBS>
52 template<
typename MODEL,
typename OBS>
60 template<
typename MODEL,
typename OBS>
68 Lhatinvt(x.
dx(),
z.lambda().dx(), norder);
71 j_.jb().multiplyB(
z.lambda().dx(), l);
75 Lhatinv(l,
z.dx(), norder);
77 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
78 z.lambda().append(j_.jterm(jj).multiplyCoInv(*x.
lambda().
getv(jj)));
84 template<
typename MODEL,
typename OBS>
86 const int norder)
const {
91 for (
int jj = 0; jj < norder; ++jj) {
92 j_.runTLM(ww, idmodel_);
100 template<
typename MODEL,
typename OBS>
102 const int norder)
const {
107 for (
int jj = 0; jj < norder; ++jj) {
109 j_.runADJ(ww, idmodel_);
Weak Constraint 4D-Var Cost Function.
std::shared_ptr< const GeneralizedDepartures > getv(const unsigned) const
The preconditioner for the saddle-point minimizer.
void Lhatinv(const CtrlInc_ &, CtrlInc_ &, const int) const
void Lhatinvt(const CtrlInc_ &, CtrlInc_ &, const int) const
ControlIncrement< MODEL, OBS > CtrlInc_
CostFctWeak< MODEL, OBS > CostFctWeak_
SaddlePointPrecondMatrix(const CostFct_ &j)
void multiply(const SPVector_ &, SPVector_ &) const
CostFunction< MODEL, OBS > CostFct_
SaddlePointVector< MODEL, OBS > SPVector_
Control vector for the saddle point formulation.
const Multipliers_ & lambda() const
Accessor method to get the lambda_ component.
const CtrlInc_ & dx() const
Accessor method to get the dx_ component.
The namespace for the main oops code.