Go to the documentation of this file.
8 #ifndef UFO_OBSOPERATORBASE_H_
9 #define UFO_OBSOPERATORBASE_H_
15 #include <boost/noncopyable.hpp>
17 #include "eckit/config/Configuration.h"
18 #include "ioda/ObsSpace.h"
19 #include "oops/base/Variables.h"
20 #include "oops/util/abor1_cpp.h"
21 #include "oops/util/DateTime.h"
22 #include "oops/util/Printable.h"
37 private boost::noncopyable {
50 virtual std::unique_ptr<Locations>
locations(
const util::DateTime &,
51 const util::DateTime &)
const;
54 virtual void print(std::ostream &)
const = 0;
55 const ioda::ObsSpace &
odb_;
69 static std::map < std::string, ObsOperatorFactory * > &
getMakers() {
70 static std::map < std::string, ObsOperatorFactory * > makers_;
80 {
return new T(odb,
conf); }
89 #endif // UFO_OBSOPERATORBASE_H_
virtual ~ObsOperatorBase()
ObsOperatorFactory(const std::string &)
virtual void print(std::ostream &) const =0
ObsOperatorBase(const ioda::ObsSpace &odb, const eckit::Configuration &)
ObsOperatorMaker(const std::string &name)
Base class for observation operators.
virtual ObsOperatorBase * make(const ioda::ObsSpace &odb, const eckit::Configuration &conf)
virtual const oops::Variables & requiredVars() const =0
Operator input required from Model.
virtual ObsOperatorBase * make(const ioda::ObsSpace &, const eckit::Configuration &)=0
virtual std::unique_ptr< Locations > locations(const util::DateTime &, const util::DateTime &) const
Locations for GeoVaLs.
GeoVaLs: geophysical values at locations.
const ioda::ObsSpace & odb_
static std::map< std::string, ObsOperatorFactory * > & getMakers()
virtual ~ObsOperatorFactory()=default
static ObsOperatorBase * create(const ioda::ObsSpace &, const eckit::Configuration &)
virtual void simulateObs(const GeoVaLs &, ioda::ObsVector &, ObsDiagnostics &) const =0
Obs Operator.