Go to the documentation of this file.
11 #ifndef OOPS_INTERFACE_OBSOPERATOR_H_
12 #define OOPS_INTERFACE_OBSOPERATOR_H_
17 #include <boost/noncopyable.hpp>
25 #include "oops/util/DateTime.h"
26 #include "oops/util/Logger.h"
27 #include "oops/util/ObjectCounter.h"
28 #include "oops/util/Printable.h"
29 #include "oops/util/Timer.h"
35 template <
typename OBS>
37 private boost::noncopyable,
38 private util::ObjectCounter<ObsOperator<OBS> > {
48 static const std::string
classname() {
return "oops::ObsOperator";}
64 void print(std::ostream &)
const;
65 std::unique_ptr<ObsOperator_>
oper_;
70 template <
typename OBS>
72 const eckit::Configuration & config) : oper_() {
73 Log::trace() <<
"ObsOperator<OBS>::ObsOperator starting" << std::endl;
74 util::Timer timer(
classname(),
"ObsOperator");
76 Log::trace() <<
"ObsOperator<OBS>::ObsOperator done" << std::endl;
81 template <
typename OBS>
83 Log::trace() <<
"ObsOperator<OBS>::~ObsOperator starting" << std::endl;
84 util::Timer timer(classname(),
"~ObsOperator");
86 Log::trace() <<
"ObsOperator<OBS>::~ObsOperator done" << std::endl;
91 template <
typename OBS>
94 Log::trace() <<
"ObsOperator<OBS>::simulateObs starting" << std::endl;
95 util::Timer timer(classname(),
"simulateObs");
97 Log::trace() <<
"ObsOperator<OBS>::simulateObs done" << std::endl;
102 template <
typename OBS>
104 Log::trace() <<
"ObsOperator<OBS>::requiredVars starting" << std::endl;
105 util::Timer timer(classname(),
"requiredVars");
106 return oper_->requiredVars();
111 template <
typename OBS>
113 const util::DateTime & t2)
const {
114 Log::trace() <<
"ObsOperator<OBS>::locations starting" << std::endl;
115 util::Timer timer(classname(),
"locations");
121 template<
typename OBS>
123 Log::trace() <<
"ObsOperator<OBS>::print starting" << std::endl;
124 util::Timer timer(classname(),
"print");
126 Log::trace() <<
"ObsOperator<OBS>::print done" << std::endl;
133 #endif // OOPS_INTERFACE_OBSOPERATOR_H_
ObsVector_ & obsvector()
Interfacing.
The namespace for the main oops code.
ObsOperator(const ObsSpace_ &, const eckit::Configuration &)
const GeoVaLs_ & geovals() const
Interfacing.
const ObsOperator_ & obsoperator() const
Interfacing.
ObsSpace_ & obsspace() const
Interfacing.
void simulateObs(const GeoVaLs_ &, ObsVector_ &, const ObsAuxControl_ &, ObsDiags_ &) const
Obs Operator.
ObsVector< OBS > ObsVector_
Locations< OBS > Locations_
std::unique_ptr< ObsOperator_ > oper_
ObsDiags_ & obsdiagnostics()
Interfacing.
ObsAuxControl< OBS > ObsAuxControl_
static const std::string classname()
Locations_ locations(const util::DateTime &, const util::DateTime &) const
ObsDiagnostics< OBS > ObsDiags_
ObsSpace< OBS > ObsSpace_
const Variables & requiredVars() const
Other.
const ObsAuxControl_ & obsauxcontrol() const
Interfacing.
OBS::ObsOperator ObsOperator_
Locations of observations for observation operator.
void print(std::ostream &) const