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> > {
44 static const std::string
classname() {
return "oops::ObsAuxCovariance";}
56 void print(std::ostream &)
const;
57 std::unique_ptr<ObsAuxCovariance_>
cov_;
62 template<
typename OBS>
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;
const ObsAuxControl_ & obsauxcontrol() const
Interfacing.
static const std::string classname()
ObsAuxIncrement< OBS > ObsAuxIncrement_
void linearize(const ObsAuxControl_ &, const eckit::Configuration &)
Operators.
OBS::ObsAuxCovariance ObsAuxCovariance_
void multiply(const ObsAuxIncrement_ &, ObsAuxIncrement_ &) const
void print(std::ostream &) const
std::unique_ptr< ObsAuxCovariance_ > cov_
ObsAuxCovariance_::Parameters_ Parameters_
void randomize(ObsAuxIncrement_ &) const
ObsAuxControl< OBS > ObsAuxControl_
void inverseMultiply(const ObsAuxIncrement_ &, ObsAuxIncrement_ &) const
ObsAuxCovariance(const ObsSpace< OBS > &, const Parameters_ &)
const ObsAuxIncrement_ & obsauxincrement() const
Interfacing.
ObsSpace_ & obsspace() const
Interfacing.
The namespace for the main oops code.