11 #ifndef OOPS_INTERFACE_OBSOPERATOR_H_
12 #define OOPS_INTERFACE_OBSOPERATOR_H_
17 #include <boost/noncopyable.hpp>
25 #include "oops/util/Logger.h"
26 #include "oops/util/ObjectCounter.h"
27 #include "oops/util/Printable.h"
28 #include "oops/util/Timer.h"
34 template <
typename OBS>
36 private boost::noncopyable,
37 private util::ObjectCounter<ObsOperator<OBS> > {
47 static const std::string
classname() {
return "oops::ObsOperator";}
63 void print(std::ostream &)
const;
64 std::unique_ptr<ObsOperator_>
oper_;
69 template <
typename OBS>
71 const eckit::Configuration & config) : oper_() {
72 Log::trace() <<
"ObsOperator<OBS>::ObsOperator starting" << std::endl;
73 util::Timer timer(
classname(),
"ObsOperator");
75 Log::trace() <<
"ObsOperator<OBS>::ObsOperator done" << std::endl;
80 template <
typename OBS>
82 Log::trace() <<
"ObsOperator<OBS>::~ObsOperator starting" << std::endl;
83 util::Timer timer(classname(),
"~ObsOperator");
85 Log::trace() <<
"ObsOperator<OBS>::~ObsOperator done" << std::endl;
90 template <
typename OBS>
93 Log::trace() <<
"ObsOperator<OBS>::simulateObs starting" << std::endl;
94 util::Timer timer(classname(),
"simulateObs");
96 Log::trace() <<
"ObsOperator<OBS>::simulateObs done" << std::endl;
101 template <
typename OBS>
103 Log::trace() <<
"ObsOperator<OBS>::requiredVars starting" << std::endl;
104 util::Timer timer(classname(),
"requiredVars");
105 return oper_->requiredVars();
110 template <
typename OBS>
112 Log::trace() <<
"ObsOperator<OBS>::locations starting" << std::endl;
113 util::Timer timer(classname(),
"locations");
119 template<
typename OBS>
121 Log::trace() <<
"ObsOperator<OBS>::print starting" << std::endl;
122 util::Timer timer(classname(),
"print");
124 Log::trace() <<
"ObsOperator<OBS>::print done" << std::endl;
const GeoVaLs_ & geovals() const
Interfacing.
Locations of observations for observation operator.
const ObsAuxControl_ & obsauxcontrol() const
Interfacing.
ObsDiags_ & obsdiagnostics()
Interfacing.
void print(std::ostream &) const
ObsDiagnostics< OBS > ObsDiags_
const Variables & requiredVars() const
Other.
std::unique_ptr< ObsOperator_ > oper_
OBS::ObsOperator ObsOperator_
Locations_ locations() const
ObsVector< OBS > ObsVector_
ObsOperator(const ObsSpace_ &, const eckit::Configuration &)
const ObsOperator_ & obsoperator() const
Interfacing.
ObsSpace< OBS > ObsSpace_
Locations< OBS > Locations_
static const std::string classname()
void simulateObs(const GeoVaLs_ &, ObsVector_ &, const ObsAuxControl_ &, ObsDiags_ &) const
Obs Operator.
ObsAuxControl< OBS > ObsAuxControl_
ObsSpace_ & obsspace() const
Interfacing.
ObsVector_ & obsvector()
Interfacing.
The namespace for the main oops code.