8 #ifndef OOPS_INTERFACE_LINEARVARIABLECHANGE_H_
9 #define OOPS_INTERFACE_LINEARVARIABLECHANGE_H_
14 #include <boost/noncopyable.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>
44 typedef TParameters_IfAvailableElseFallbackType_t<
47 static const std::string
classname() {
return "oops::LinearVariableChange";}
59 void print(std::ostream &)
const override;
66 template<
typename MODEL,
typename CHVAR>
72 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::LinearVariableChange starting" << std::endl;
73 util::Timer timer(
classname(),
"LinearVariableChange");
75 parametersOrConfiguration<HasParameters_<CHVAR>::value>(params)));
76 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::LinearVariableChange done" << std::endl;
81 template<
typename MODEL,
typename CHVAR>
83 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::~LinearVariableChange starting" << std::endl;
84 util::Timer timer(classname(),
"~LinearVariableChange");
86 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::~LinearVariableChange done" << std::endl;
91 template<
typename MODEL,
typename CHVAR>
93 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiply starting" << std::endl;
94 util::Timer timer(classname(),
"multiply");
96 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiply done" << std::endl;
101 template<
typename MODEL,
typename CHVAR>
104 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverse starting" << std::endl;
105 util::Timer timer(classname(),
"multiplyInverse");
107 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverse done" << std::endl;
112 template<
typename MODEL,
typename CHVAR>
115 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyAD starting" << std::endl;
116 util::Timer timer(classname(),
"multiplyAD");
118 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyAD done" << std::endl;
123 template<
typename MODEL,
typename CHVAR>
126 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverseAD starting" << std::endl;
127 util::Timer timer(classname(),
"multiplyInverseAD");
129 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::multiplyInverseAD done" << std::endl;
134 template<
typename MODEL,
typename CHVAR>
136 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::print starting" << std::endl;
137 util::Timer timer(classname(),
"print");
139 Log::trace() <<
"LinearVariableChange<MODEL, CHVAR>::print done" << std::endl;
A subclass of LinearVariableChangeParametersBase storing the values of all options in a single Config...
Geometry class used in oops; subclass of interface class interface::Geometry.
Increment class used in oops.
Wrapper for change of variable.
Increment< MODEL > Increment_
std::unique_ptr< CHVAR > chvar_
static const std::string classname()
TParameters_IfAvailableElseFallbackType_t< CHVAR, GenericLinearVariableChangeParameters > Parameters_
void multiplyInverse(const Increment_ &, Increment_ &) const override
virtual ~LinearVariableChange()
Geometry< MODEL > Geometry_
LinearVariableChange(const State_ &, const State_ &, const Geometry_ &, const Parameters_ &)
void multiply(const Increment_ &, Increment_ &) const override
void multiplyAD(const Increment_ &, Increment_ &) const override
void print(std::ostream &) const override
void multiplyInverseAD(const Increment_ &, Increment_ &) const override
State class used in oops; subclass of interface class interface::State.
const Geometry_ & geometry() const
const Increment_ & increment() const
State_ & state()
Accessor.
The namespace for the main oops code.