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"
44 template <
typename OBS>
46 private boost::noncopyable,
47 private util::ObjectCounter<ObsOperator<OBS> > {
60 static const std::string
classname() {
return "oops::ObsOperator";}
89 void print(std::ostream &)
const;
92 std::unique_ptr<ObsOperator_>
oper_;
97 template <
typename OBS>
100 Log::trace() <<
"ObsOperator<OBS>::ObsOperator starting" << std::endl;
101 util::Timer timer(
classname(),
"ObsOperator");
103 Log::trace() <<
"ObsOperator<OBS>::ObsOperator done" << std::endl;
108 template <
typename OBS>
110 Log::trace() <<
"ObsOperator<OBS>::~ObsOperator starting" << std::endl;
111 util::Timer timer(classname(),
"~ObsOperator");
113 Log::trace() <<
"ObsOperator<OBS>::~ObsOperator done" << std::endl;
118 template <
typename OBS>
122 Log::trace() <<
"ObsOperator<OBS>::simulateObs starting" << std::endl;
123 util::Timer timer(classname(),
"simulateObs");
126 Log::trace() <<
"ObsOperator<OBS>::simulateObs done" << std::endl;
131 template <
typename OBS>
133 Log::trace() <<
"ObsOperator<OBS>::requiredVars starting" << std::endl;
134 util::Timer timer(classname(),
"requiredVars");
135 return oper_->requiredVars();
140 template <
typename OBS>
142 Log::trace() <<
"ObsOperator<OBS>::locations starting" << std::endl;
143 util::Timer timer(classname(),
"locations");
149 template<
typename OBS>
151 Log::trace() <<
"ObsOperator<OBS>::print starting" << std::endl;
152 util::Timer timer(classname(),
"print");
154 Log::trace() <<
"ObsOperator<OBS>::print done" << std::endl;
const GeoVaLs_ & geovals() const
Interfacing.
Locations of observations for observation operator.
Auxiliary state related to observations, templated on <OBS>
const ObsAuxControl_ & obsauxcontrol() const
const Accessor
ObsDiags_ & obsdiagnostics()
Interfacing.
MODEL-agnostic part of nonlinear observation (forward) operator. The full nonlinear observation opera...
void print(std::ostream &) const
Print, used for logging.
ObsDiagnostics< OBS > ObsDiags_
const Variables & requiredVars() const
std::unique_ptr< ObsOperator_ > oper_
Pointer to the implementation of ObsOperator.
OBS::ObsOperator ObsOperator_
Locations_ locations() const
Locations used for computing GeoVaLs that will be passed to simulateObs.
void simulateObs(const GeoVaLs_ &x_int, ObsVector_ &y, const ObsAuxControl_ &obsaux, ObsVector_ &obsbias, ObsDiags_ &obsdiags) const
ObsVector< OBS > ObsVector_
ObsOperator(const ObsSpace_ &obsspace, const Parameters_ ¶meters)
ObsOperator_::Parameters_ Parameters_
A subclass of oops::Parameters holding the configuration settings of the operator.
ObsSpace< OBS > ObsSpace_
Locations< OBS > Locations_
static const std::string classname()
ObsAuxControl< OBS > ObsAuxControl_
ObsSpace_ & obsspace() const
Interfacing.
ObsVector class used in oops; subclass of interface class interface::ObsVector.
ObsVector_ & obsvector()
Accessor.
The namespace for the main oops code.