11 #ifndef OOPS_ASSIMILATION_SADDLEPOINTMATRIX_H_ 12 #define OOPS_ASSIMILATION_SADDLEPOINTMATRIX_H_ 14 #include <boost/noncopyable.hpp> 24 template<
typename MODEL>
class JqTermTLAD;
32 template<
typename MODEL>
50 template<
typename MODEL>
62 costad.enrollProcessor(jqad);
63 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
64 costad.enrollProcessor(j_.jterm(jj).setupAD(x.
lambda().
getv(jj), ww));
66 j_.runADJ(ww, costad);
73 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
77 j_.runTLM(mdx, costtl);
80 j_.jb().finalizeTL(jqtl, x.
dx(), z.
lambda().
dx());
81 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
89 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
102 #endif // OOPS_ASSIMILATION_SADDLEPOINTMATRIX_H_ GeneralizedDepartures * releaseOutputFromTL(unsigned int ii)
Get TL dual space output.
Container of dual space vectors for all terms of the cost function.
SaddlePointMatrix(const CostFct_ &j)
void initializeTL(const Increment_ &dx, const util::DateTime &end, const util::Duration &step)
Tangent linear methods.
l_size ! loop over number of fields ke do j
The namespace for the main oops code.
SaddlePointVector< MODEL > SPVector_
ControlIncrement< MODEL > CtrlInc_
void initializeAD(Increment_ &dx, const util::DateTime &bgn, const util::Duration &step)
Adjoint methods.
Control model post processing.
Increment< MODEL > Increment_
void enrollProcessor(PostBaseTLAD_ *pp)
void multiply(const SPVector_ &, SPVector_ &) const
JqTermTLAD< MODEL > JqTermTLAD_
Increment Class: Difference between two states.
const Multipliers_ & lambda() const
Accessor method to get the lambda_ component.
void append(GeneralizedDepartures *)
Control vector for the saddle point formulation.
const CtrlInc_ & dx() const
Accessor method to get the dx_ component.
CostFunction< MODEL > CostFct_
boost::shared_ptr< const GeneralizedDepartures > getv(const unsigned) const