Go to the documentation of this file.
8 #ifndef UFO_LINEAROBSOPERATORBASE_H_
9 #define UFO_LINEAROBSOPERATORBASE_H_
14 #include <boost/noncopyable.hpp>
16 #include "eckit/config/Configuration.h"
17 #include "ioda/ObsSpace.h"
18 #include "oops/base/Variables.h"
19 #include "oops/util/abor1_cpp.h"
20 #include "oops/util/Printable.h"
35 private boost::noncopyable {
49 virtual void print(std::ostream &)
const = 0;
63 static std::map < std::string, LinearObsOperatorFactory * > &
getMakers() {
64 static std::map < std::string, LinearObsOperatorFactory * > makers_;
74 const eckit::Configuration &
conf) {
75 return new T(odb,
conf);
85 #endif // UFO_LINEAROBSOPERATORBASE_H_
virtual void simulateObsAD(GeoVaLs &, const ioda::ObsVector &) const =0
LinearObsOperatorFactory(const std::string &)
virtual LinearObsOperatorBase * make(const ioda::ObsSpace &odb, const eckit::Configuration &conf)
virtual void print(std::ostream &) const =0
Class to handle observation bias parameters.
virtual void setTrajectory(const GeoVaLs &, const ObsBias &, ObsDiagnostics &)=0
Obs Operator.
virtual LinearObsOperatorBase * make(const ioda::ObsSpace &, const eckit::Configuration &)=0
static LinearObsOperatorBase * create(const ioda::ObsSpace &, const eckit::Configuration &)
LinearObsOperatorMaker(const std::string &name)
GeoVaLs: geophysical values at locations.
virtual void simulateObsTL(const GeoVaLs &, ioda::ObsVector &) const =0
virtual ~LinearObsOperatorBase()
virtual const oops::Variables & requiredVars() const =0
Operator input required from Model.
virtual ~LinearObsOperatorFactory()=default
Base class for observation operators.
static std::map< std::string, LinearObsOperatorFactory * > & getMakers()