11 #ifndef OOPS_INTERFACE_OBSAUXCOVARIANCE_H_
12 #define OOPS_INTERFACE_OBSAUXCOVARIANCE_H_
18 #include <boost/noncopyable.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 OBS>
35 private boost::noncopyable,
36 private util::ObjectCounter<ObsAuxCovariance<OBS> > {
42 static const std::string
classname() {
return "oops::ObsAuxCovariance";}
53 const eckit::Configuration &
config()
const {
return cov_->config();}
56 void print(std::ostream &)
const;
57 std::unique_ptr<ObsAuxCovariance_>
cov_;
62 template<
typename OBS>
64 const eckit::Configuration & conf) : cov_()
66 Log::trace() <<
"ObsAuxCovariance<OBS>::ObsAuxCovariance starting" << std::endl;
67 util::Timer timer(
classname(),
"ObsAuxCovariance");
69 Log::trace() <<
"ObsAuxCovariance<OBS>::ObsAuxCovariance done" << std::endl;
74 template<
typename OBS>
76 Log::trace() <<
"ObsAuxCovariance<OBS>::~ObsAuxCovariance starting" << std::endl;
77 util::Timer timer(classname(),
"~ObsAuxCovariance");
79 Log::trace() <<
"ObsAuxCovariance<OBS>::~ObsAuxCovariance done" << std::endl;
84 template<
typename OBS>
86 const eckit::Configuration & innerConf) {
87 Log::trace() <<
"ObsAuxCovariance<OBS>::linearize starting" << std::endl;
88 util::Timer timer(classname(),
"linearize");
90 Log::trace() <<
"ObsAuxCovariance<OBS>::linearize done" << std::endl;
95 template<
typename OBS>
97 Log::trace() <<
"ObsAuxCovariance<OBS>::multiply starting" << std::endl;
98 util::Timer timer(classname(),
"multiply");
100 Log::trace() <<
"ObsAuxCovariance<OBS>::multiply done" << std::endl;
105 template<
typename OBS>
108 Log::trace() <<
"ObsAuxCovariance<OBS>::inverseMultiply starting" << std::endl;
109 util::Timer timer(classname(),
"inverseMultiply");
111 Log::trace() <<
"ObsAuxCovariance<OBS>::inverseMultiply done" << std::endl;
116 template<
typename OBS>
118 Log::trace() <<
"ObsAuxCovariance<OBS>::randomize starting" << std::endl;
119 util::Timer timer(classname(),
"randomize");
121 Log::trace() <<
"ObsAuxCovariance<OBS>::randomize done" << std::endl;
126 template<
typename OBS>
128 Log::trace() <<
"ObsAuxCovariance<OBS>::print starting" << std::endl;
129 util::Timer timer(classname(),
"print");
131 Log::trace() <<
"ObsAuxCovariance<OBS>::print done" << std::endl;
138 #endif // OOPS_INTERFACE_OBSAUXCOVARIANCE_H_