8 #ifndef OOPS_INTERFACE_LINEARVARIABLECHANGE_H_ 9 #define OOPS_INTERFACE_LINEARVARIABLECHANGE_H_ 13 #include <boost/noncopyable.hpp> 14 #include <boost/scoped_ptr.hpp> 21 #include "oops/util/Logger.h" 22 #include "oops/util/ObjectCounter.h" 23 #include "oops/util/Printable.h" 24 #include "oops/util/Timer.h" 35 template <
typename MODEL,
typename CHVAR>
42 static const std::string
classname() {
return "oops::LinearVariableChange";}
45 const Geometry_ &,
const eckit::Configuration &);
54 void print(std::ostream &)
const override;
61 template<
typename MODEL,
typename CHVAR>
64 const eckit::Configuration &
conf)
67 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::LinearVariableChange starting" << std::endl;
68 util::Timer timer(
classname(),
"LinearVariableChange");
70 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::LinearVariableChange done" << std::endl;
75 template<
typename MODEL,
typename CHVAR>
77 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::~LinearVariableChange starting" << std::endl;
78 util::Timer timer(classname(),
"~LinearVariableChange");
80 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::~LinearVariableChange done" << std::endl;
85 template<
typename MODEL,
typename CHVAR>
87 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiply starting" << std::endl;
88 util::Timer timer(classname(),
"multiply");
90 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiply done" << std::endl;
95 template<
typename MODEL,
typename CHVAR>
98 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverse starting" << std::endl;
99 util::Timer timer(classname(),
"multiplyInverse");
101 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverse done" << std::endl;
106 template<
typename MODEL,
typename CHVAR>
109 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyAD starting" << std::endl;
110 util::Timer timer(classname(),
"multiplyAD");
112 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyAD done" << std::endl;
117 template<
typename MODEL,
typename CHVAR>
120 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverseAD starting" << std::endl;
121 util::Timer timer(classname(),
"multiplyInverseAD");
123 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverseAD done" << std::endl;
128 template<
typename MODEL,
typename CHVAR>
130 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::print starting" << std::endl;
131 util::Timer timer(classname(),
"print");
133 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::print done" << std::endl;
140 #endif // OOPS_INTERFACE_LINEARVARIABLECHANGE_H_ virtual ~LinearVariableChange()
static const std::string classname()
void multiply(const Increment_ &, Increment_ &) const override
Encapsulates the model state.
State_ & state()
Interfacing.
The namespace for the main oops code.
Increment< MODEL > Increment_
boost::scoped_ptr< CHVAR > chvar_
Base class for generic variable transform.
Wrapper for change of variable.
Increment_ & increment()
Interfacing.
const Geometry_ & geometry() const
Interfacing.
Increment Class: Difference between two states.
void multiplyInverseAD(const Increment_ &, Increment_ &) const override
void print(std::ostream &) const override
void multiplyInverse(const Increment_ &, Increment_ &) const override
LinearVariableChange(const State_ &, const State_ &, const Geometry_ &, const eckit::Configuration &)
void multiplyAD(const Increment_ &, Increment_ &) const override
Geometry< MODEL > Geometry_