Go to the documentation of this file.
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;
146 #endif // OOPS_INTERFACE_LINEARVARIABLECHANGE_H_
The namespace for the main oops code.
void multiplyInverse(const Increment_ &, Increment_ &) const override
void multiply(const Increment_ &, Increment_ &) const override
void multiplyAD(const Increment_ &, Increment_ &) const override
LinearVariableChange(const State_ &, const State_ &, const Geometry_ &, const Parameters_ &)
void multiplyInverseAD(const Increment_ &, Increment_ &) const override
std::unique_ptr< CHVAR > chvar_
A subclass of LinearVariableChangeParametersBase storing the values of all options in a single Config...
Increment< MODEL > Increment_
State_ & state()
Interfacing.
virtual ~LinearVariableChange()
Geometry< MODEL > Geometry_
void print(std::ostream &) const override
Wrapper for change of variable.
Increment_ & increment()
Interfacing.
Geometry class used in oops; subclass of interface class above.
static const std::string classname()
Encapsulates the model state.
Increment Class: Difference between two states.
TParameters_IfAvailableElseFallbackType_t< CHVAR, GenericLinearVariableChangeParameters > Parameters_
const Geometry_ & geometry() const
Interfacing with other oops classes.