11 #ifndef OOPS_INTERFACE_OBSAUXCOVARIANCE_H_ 12 #define OOPS_INTERFACE_OBSAUXCOVARIANCE_H_ 17 #include <boost/noncopyable.hpp> 18 #include <boost/scoped_ptr.hpp> 20 #include "eckit/config/Configuration.h" 23 #include "oops/util/Logger.h" 24 #include "oops/util/ObjectCounter.h" 25 #include "oops/util/Printable.h" 26 #include "oops/util/Timer.h" 32 template <
typename MODEL>
34 private boost::noncopyable,
35 private util::ObjectCounter<ObsAuxCovariance<MODEL> > {
41 static const std::string
classname() {
return "oops::ObsAuxCovariance";}
52 const eckit::Configuration &
config()
const {
return cov_->config();}
55 void print(std::ostream &)
const;
56 boost::scoped_ptr<ObsAuxCovariance_>
cov_;
61 template<
typename MODEL>
64 Log::trace() <<
"ObsAuxCovariance<MODEL>::ObsAuxCovariance starting" << std::endl;
65 util::Timer timer(
classname(),
"ObsAuxCovariance");
67 Log::trace() <<
"ObsAuxCovariance<MODEL>::ObsAuxCovariance done" << std::endl;
72 template<
typename MODEL>
74 Log::trace() <<
"ObsAuxCovariance<MODEL>::~ObsAuxCovariance starting" << std::endl;
75 util::Timer timer(classname(),
"~ObsAuxCovariance");
77 Log::trace() <<
"ObsAuxCovariance<MODEL>::~ObsAuxCovariance done" << std::endl;
82 template<
typename MODEL>
84 Log::trace() <<
"ObsAuxCovariance<MODEL>::linearize starting" << std::endl;
85 util::Timer timer(classname(),
"linearize");
87 Log::trace() <<
"ObsAuxCovariance<MODEL>::linearize done" << std::endl;
92 template<
typename MODEL>
94 Log::trace() <<
"ObsAuxCovariance<MODEL>::multiply starting" << std::endl;
95 util::Timer timer(classname(),
"multiply");
97 Log::trace() <<
"ObsAuxCovariance<MODEL>::multiply done" << std::endl;
102 template<
typename MODEL>
105 Log::trace() <<
"ObsAuxCovariance<MODEL>::inverseMultiply starting" << std::endl;
106 util::Timer timer(classname(),
"inverseMultiply");
108 Log::trace() <<
"ObsAuxCovariance<MODEL>::inverseMultiply done" << std::endl;
113 template<
typename MODEL>
115 Log::trace() <<
"ObsAuxCovariance<MODEL>::randomize starting" << std::endl;
116 util::Timer timer(classname(),
"randomize");
118 Log::trace() <<
"ObsAuxCovariance<MODEL>::randomize done" << std::endl;
123 template<
typename MODEL>
125 Log::trace() <<
"ObsAuxCovariance<MODEL>::print starting" << std::endl;
126 util::Timer timer(classname(),
"print");
128 Log::trace() <<
"ObsAuxCovariance<MODEL>::print done" << std::endl;
135 #endif // OOPS_INTERFACE_OBSAUXCOVARIANCE_H_ ObsAuxCovariance(const eckit::Configuration &)
const eckit::Configuration & config() const
const ObsAuxIncrement_ & obsauxincrement() const
Interfacing.
The namespace for the main oops code.
void multiply(const ObsAuxIncrement_ &, ObsAuxIncrement_ &) const
void print(std::ostream &) const
boost::scoped_ptr< ObsAuxCovariance_ > cov_
void randomize(ObsAuxIncrement_ &) const
ObsAuxControl< MODEL > ObsAuxControl_
void inverseMultiply(const ObsAuxIncrement_ &, ObsAuxIncrement_ &) const
MODEL::ObsAuxCovariance ObsAuxCovariance_
void linearize(const ObsAuxControl_ &)
Operators.
const ObsAuxControl_ & obsauxcontrol() const
Interfacing.
static const std::string classname()
ObsAuxIncrement< MODEL > ObsAuxIncrement_