11 #ifndef OOPS_ASSIMILATION_HTRINVHMATRIX_H_ 12 #define OOPS_ASSIMILATION_HTRINVHMATRIX_H_ 14 #include <boost/noncopyable.hpp> 15 #include <boost/scoped_ptr.hpp> 16 #include <boost/shared_ptr.hpp> 23 #include "oops/util/dot_product.h" 24 #include "oops/util/formats.h" 25 #include "oops/util/Logger.h" 26 #include "oops/util/PrintAdjTest.h" 38 template<
typename MODEL>
class HtRinvHMatrix :
private boost::noncopyable {
56 template<
typename MODEL>
58 : j_(
j), test_(
test), iter_(0)
63 template<
typename MODEL>
70 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
76 j_.runTLM(mdx, costtl);
85 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
87 zz.
append(j_.jterm(jj).multiplyCoInv(*ww.
getv(jj)));
92 j_.runADJ(dz, costad);
96 double adj_tst_fwd = dot_product(ww, zz);
98 double adj_tst_bwd = dot_product(dx, dz);
100 Log::info() <<
"Online adjoint test, iteration: " << iter_ << std::endl
101 << util::PrintAdjTest(adj_tst_fwd, adj_tst_bwd,
"G")
110 #endif // OOPS_ASSIMILATION_HTRINVHMATRIX_H_
GeneralizedDepartures * releaseOutputFromTL(unsigned int ii)
Get TL dual space output.
Container of dual space vectors for all terms of the cost function.
HtRinvHMatrix(const CostFct_ &j, const bool test=false)
ControlIncrement< MODEL > CtrlInc_
CostFunction< MODEL > CostFct_
Increment< MODEL > Increment_
l_size ! loop over number of fields ke do j
The namespace for the main oops code.
void multiply(const CtrlInc_ &dx, CtrlInc_ &dz) const
subroutine, public info(self)
Control model post processing.
void enrollProcessor(PostBaseTLAD_ *pp)
Increment Class: Difference between two states.
void append(GeneralizedDepartures *)
boost::shared_ptr< const GeneralizedDepartures > getv(const unsigned) const