11 #ifndef OOPS_ASSIMILATION_HBHTMATRIX_H_ 12 #define OOPS_ASSIMILATION_HBHTMATRIX_H_ 14 #include <boost/noncopyable.hpp> 21 #include "oops/util/PrintAdjTest.h" 33 template<
typename MODEL>
class HBHtMatrix :
private boost::noncopyable {
41 const bool test =
false);
53 template<
typename MODEL>
56 : j_(
j), test_(
test), iter_(0)
61 template<
typename MODEL>
70 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
73 j_.runADJ(ww, costad);
77 j_.jb().multiplyB(ww, zz);
81 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
85 j_.runTLM(mzz, costtl);
89 for (
unsigned jj = 0; jj < j_.nterms(); ++jj) {
95 double adj_tst_fwd = dot_product(dz, dy);
97 double adj_tst_bwd = dot_product(zz, ww);
99 Log::info() <<
"Online adjoint test, iteration: " << iter_ << std::endl
100 << util::PrintAdjTest(adj_tst_fwd, adj_tst_bwd,
"G")
109 #endif // OOPS_ASSIMILATION_HBHTMATRIX_H_ GeneralizedDepartures * releaseOutputFromTL(unsigned int ii)
Get TL dual space output.
Container of dual space vectors for all terms of the cost function.
CostFunction< MODEL > CostFct_
Increment< MODEL > Increment_
l_size ! loop over number of fields ke do j
The namespace for the main oops code.
DualVector< MODEL > Dual_
subroutine, public info(self)
Control model post processing.
void enrollProcessor(PostBaseTLAD_ *pp)
Increment Class: Difference between two states.
ControlIncrement< MODEL > CtrlInc_
void multiply(const Dual_ &dy, Dual_ &dz) const
void append(GeneralizedDepartures *)
boost::shared_ptr< const GeneralizedDepartures > getv(const unsigned) const
HBHtMatrix(const CostFct_ &j, const bool test=false)