11 #ifndef OOPS_INTERFACE_ERRORCOVARIANCE_H_ 12 #define OOPS_INTERFACE_ERRORCOVARIANCE_H_ 16 #include <boost/noncopyable.hpp> 17 #include <boost/scoped_ptr.hpp> 24 #include "oops/util/Logger.h" 25 #include "oops/util/ObjectCounter.h" 26 #include "oops/util/Printable.h" 27 #include "oops/util/Timer.h" 46 template <
typename MODEL>
48 public util::Printable,
49 private util::ObjectCounter<ErrorCovariance<MODEL> >,
50 private boost::noncopyable {
57 static const std::string
classname() {
return "oops::ErrorCovariance";}
69 void print(std::ostream &)
const override;
76 template<
typename MODEL>
78 const eckit::Configuration &
conf,
82 Log::trace() <<
"ErrorCovariance<MODEL>::ErrorCovariance starting" << std::endl;
83 util::Timer timer(
classname(),
"ErrorCovariance");
85 Log::trace() <<
"ErrorCovariance<MODEL>::ErrorCovariance done" << std::endl;
90 template<
typename MODEL>
92 Log::trace() <<
"ErrorCovariance<MODEL>::~ErrorCovariance starting" << std::endl;
93 util::Timer timer(classname(),
"~ErrorCovariance");
95 Log::trace() <<
"ErrorCovariance<MODEL>::~ErrorCovariance done" << std::endl;
100 template<
typename MODEL>
102 Log::trace() <<
"ErrorCovariance<MODEL>::doMultiply starting" << std::endl;
103 util::Timer timer(classname(),
"doMultiply");
105 Log::trace() <<
"ErrorCovariance<MODEL>::doMultiply done" << std::endl;
110 template<
typename MODEL>
112 Log::trace() <<
"ErrorCovariance<MODEL>::doInverseMultiply starting" << std::endl;
113 util::Timer timer(classname(),
"doInverseMultiply");
115 Log::trace() <<
"ErrorCovariance<MODEL>::doInverseMultiply done" << std::endl;
120 template<
typename MODEL>
122 Log::trace() <<
"ErrorCovariance<MODEL>::randomize starting" << std::endl;
123 util::Timer timer(classname(),
"randomize");
125 Log::trace() <<
"ErrorCovariance<MODEL>::randomize done" << std::endl;
130 template<
typename MODEL>
132 Log::trace() <<
"ErrorCovariance<MODEL>::print starting" << std::endl;
133 util::Timer timer(classname(),
"print");
135 Log::trace() <<
"ErrorCovariance<MODEL>::print done" << std::endl;
142 #endif // OOPS_INTERFACE_ERRORCOVARIANCE_H_
void doInverseMultiply(const Increment_ &, Increment_ &) const override
void print(std::ostream &) const override
Geometry< MODEL > Geometry_
Wrapper for model space error covariances.
Encapsulates the model state.
State_ & state()
Interfacing.
Increment< MODEL > Increment_
void doMultiply(const Increment_ &, Increment_ &) const override
The namespace for the main oops code.
virtual ~ErrorCovariance()
ErrorCovariance(const Geometry_ &, const Variables &, const eckit::Configuration &, const State_ &, const State_ &)
Increment_ & increment()
Interfacing.
Abstract base class for model space error covariances.
boost::scoped_ptr< Covariance_ > covariance_
const Geometry_ & geometry() const
Interfacing.
static const std::string classname()
Increment Class: Difference between two states.
void randomize(Increment_ &) const override
MODEL::Covariance Covariance_