11 #ifndef OOPS_INTERFACE_ERRORCOVARIANCE_H_
12 #define OOPS_INTERFACE_ERRORCOVARIANCE_H_
17 #include <boost/noncopyable.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 {
59 typedef TParameters_IfAvailableElseFallbackType_t<
62 static const std::string
classname() {
return "oops::ErrorCovariance";}
75 void print(std::ostream &)
const override;
82 template<
typename MODEL>
88 Log::trace() <<
"ErrorCovariance<MODEL>::ErrorCovariance starting" << std::endl;
89 util::Timer timer(
classname(),
"ErrorCovariance");
91 parametersOrConfiguration<HasParameters_<Covariance_>::value>(
94 Log::trace() <<
"ErrorCovariance<MODEL>::ErrorCovariance done" << std::endl;
99 template<
typename MODEL>
101 const eckit::Configuration & conf,
110 template<
typename MODEL>
112 Log::trace() <<
"ErrorCovariance<MODEL>::~ErrorCovariance starting" << std::endl;
113 util::Timer timer(classname(),
"~ErrorCovariance");
115 Log::trace() <<
"ErrorCovariance<MODEL>::~ErrorCovariance done" << std::endl;
120 template<
typename MODEL>
122 Log::trace() <<
"ErrorCovariance<MODEL>::doRandomize starting" << std::endl;
123 util::Timer timer(classname(),
"doRandomize");
125 Log::trace() <<
"ErrorCovariance<MODEL>::doRandomize done" << std::endl;
130 template<
typename MODEL>
132 Log::trace() <<
"ErrorCovariance<MODEL>::doMultiply starting" << std::endl;
133 util::Timer timer(classname(),
"doMultiply");
135 Log::trace() <<
"ErrorCovariance<MODEL>::doMultiply done" << std::endl;
140 template<
typename MODEL>
142 Log::trace() <<
"ErrorCovariance<MODEL>::doInverseMultiply starting" << std::endl;
143 util::Timer timer(classname(),
"doInverseMultiply");
145 Log::trace() <<
"ErrorCovariance<MODEL>::doInverseMultiply done" << std::endl;
150 template<
typename MODEL>
152 Log::trace() <<
"ErrorCovariance<MODEL>::print starting" << std::endl;
153 util::Timer timer(classname(),
"print");
155 Log::trace() <<
"ErrorCovariance<MODEL>::print done" << std::endl;
162 #endif // OOPS_INTERFACE_ERRORCOVARIANCE_H_