11 #ifndef OOPS_INTERFACE_MODELAUXCOVARIANCE_H_ 12 #define OOPS_INTERFACE_MODELAUXCOVARIANCE_H_ 17 #include <boost/noncopyable.hpp> 18 #include <boost/scoped_ptr.hpp> 20 #include "eckit/config/Configuration.h" 24 #include "oops/util/Logger.h" 25 #include "oops/util/ObjectCounter.h" 26 #include "oops/util/Printable.h" 27 #include "oops/util/Timer.h" 33 template <
typename MODEL>
35 private boost::noncopyable,
36 private util::ObjectCounter<ModelAuxCovariance<MODEL> > {
43 static const std::string
classname() {
return "oops::ModelAuxCovariance";}
54 const eckit::Configuration &
config()
const {
return cov_->config();}
57 void print(std::ostream &)
const;
58 boost::scoped_ptr<ModelAuxCovariance_>
cov_;
63 template<
typename MODEL>
67 Log::trace() <<
"ModelAuxCovariance<MODEL>::ModelAuxCovariance starting" << std::endl;
68 util::Timer timer(
classname(),
"ModelAuxCovariance");
70 Log::trace() <<
"ModelAuxCovariance<MODEL>::ModelAuxCovariance done" << std::endl;
75 template<
typename MODEL>
77 Log::trace() <<
"ModelAuxCovariance<MODEL>::~ModelAuxCovariance starting" << std::endl;
78 util::Timer timer(classname(),
"~ModelAuxCovariance");
80 Log::trace() <<
"ModelAuxCovariance<MODEL>::~ModelAuxCovariance done" << std::endl;
85 template<
typename MODEL>
87 Log::trace() <<
"ModelAuxCovariance<MODEL>::linearize starting" << std::endl;
88 util::Timer timer(classname(),
"linearize");
90 Log::trace() <<
"ModelAuxCovariance<MODEL>::linearize done" << std::endl;
95 template<
typename MODEL>
98 Log::trace() <<
"ModelAuxCovariance<MODEL>::multiply starting" << std::endl;
99 util::Timer timer(classname(),
"multiply");
101 Log::trace() <<
"ModelAuxCovariance<MODEL>::multiply done" << std::endl;
106 template<
typename MODEL>
109 Log::trace() <<
"ModelAuxCovariance<MODEL>::inverseMultiply starting" << std::endl;
110 util::Timer timer(classname(),
"inverseMultiply");
112 Log::trace() <<
"ModelAuxCovariance<MODEL>::inverseMultiply done" << std::endl;
117 template<
typename MODEL>
119 Log::trace() <<
"ModelAuxCovariance<MODEL>::randomize starting" << std::endl;
120 util::Timer timer(classname(),
"randomize");
122 Log::trace() <<
"ModelAuxCovariance<MODEL>::randomize done" << std::endl;
127 template<
typename MODEL>
129 Log::trace() <<
"ModelAuxCovariance<MODEL>::print starting" << std::endl;
130 util::Timer timer(classname(),
"print");
132 Log::trace() <<
"ModelAuxCovariance<MODEL>::print done" << std::endl;
139 #endif // OOPS_INTERFACE_MODELAUXCOVARIANCE_H_
ModelAuxControl< MODEL > ModelAuxControl_
static const std::string classname()
void randomize(ModelAuxIncrement_ &) const
const eckit::Configuration & config() const
ModelAuxIncrement< MODEL > ModelAuxIncrement_
void print(std::ostream &) const
boost::scoped_ptr< ModelAuxCovariance_ > cov_
The namespace for the main oops code.
void inverseMultiply(const ModelAuxIncrement_ &, ModelAuxIncrement_ &) const
Geometry< MODEL > Geometry_
const ModelAuxControl_ & modelauxcontrol() const
Interfacing.
void multiply(const ModelAuxIncrement_ &, ModelAuxIncrement_ &) const
ModelAuxCovariance(const eckit::Configuration &, const Geometry_ &)
const Geometry_ & geometry() const
Interfacing.
const ModelAuxIncrement_ & modelauxincrement() const
Interfacing.
void linearize(const ModelAuxControl_ &, const Geometry_ &)
Operators.
MODEL::ModelAuxCovariance ModelAuxCovariance_