11 #ifndef OOPS_ASSIMILATION_SADDLEPOINTPRECONDMATRIX_H_ 12 #define OOPS_ASSIMILATION_SADDLEPOINTPRECONDMATRIX_H_ 14 #include <boost/noncopyable.hpp> 32 template<
typename MODEL>
54 template<
typename MODEL>
62 template<
typename MODEL>
74 j_.jb().multiplyB(z.
lambda().
dx(), l);
78 Lhatinv(l, z.
dx(), norder);
80 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
87 template<
typename MODEL>
89 const int norder)
const {
94 for (
int i = 0;
i < norder; ++
i) {
95 j_.runTLM(ww, idmodel_);
102 template<
typename MODEL>
104 const int norder)
const {
109 for (
int i = 0;
i < norder; ++
i) {
110 j_.runADJ(ww, idmodel_);
118 #endif // OOPS_ASSIMILATION_SADDLEPOINTPRECONDMATRIX_H_ SaddlePointPrecondMatrix(const CostFct_ &j)
l_size ! loop over number of fields ke do je do i
CostFctWeak< MODEL > CostFctWeak_
void Lhatinv(const CtrlInc_ &, CtrlInc_ &, const int) const
ControlIncrement< MODEL > CtrlInc_
SaddlePointVector< MODEL > SPVector_
integer(long), parameter false
l_size ! loop over number of fields ke do j
CostFunction< MODEL > CostFct_
The namespace for the main oops code.
Weak Constraint 4D-Var Cost Function.
The preconditioner for the saddle-point minimizer.
void Lhatinvt(const CtrlInc_ &, CtrlInc_ &, const int) const
Increment< MODEL > Increment_
Increment Class: Difference between two states.
const Multipliers_ & lambda() const
Accessor method to get the lambda_ component.
void multiply(const SPVector_ &, SPVector_ &) const
void append(GeneralizedDepartures *)
Control vector for the saddle point formulation.
const CtrlInc_ & dx() const
Accessor method to get the dx_ component.
boost::shared_ptr< const GeneralizedDepartures > getv(const unsigned) const