12 #include "eckit/config/Configuration.h"
13 #include "ioda/ObsSpace.h"
14 #include "oops/util/abor1_cpp.h"
15 #include "oops/util/Logger.h"
16 #include "ufo/Locations.h"
23 std::vector<float> lons(
odb_.nlocs());
24 std::vector<float> lats(
odb_.nlocs());
25 std::vector<util::DateTime> times(
odb_.nlocs());
26 odb_.get_db(
"MetaData",
"latitude", lats);
27 odb_.get_db(
"MetaData",
"longitude", lons);
28 odb_.get_db(
"MetaData",
"datetime", times);
29 return std::unique_ptr<Locations>(
new Locations(lons, lats, times,
odb_.distribution()));
35 return odb_.obsvariables();
42 oops::Log::error() << name <<
" already registered in ufo::ObsOperatorFactory." << std::endl;
43 ABORT(
"Element already registered in ufo::ObsOperatorFactory.");
52 oops::Log::trace() <<
"ObsOperatorBase::create starting" << std::endl;
53 const std::string &
id = params.
name.value().value();
54 typename std::map<std::string, ObsOperatorFactory*>::iterator jloc =
getMakers().find(
id);
56 oops::Log::error() <<
id <<
" does not exist in ufo::ObsOperatorFactory." << std::endl;
57 ABORT(
"Element does not exist in ufo::ObsOperatorFactory.");
60 oops::Log::trace() <<
"ObsOperatorBase::create done" << std::endl;
66 std::unique_ptr<ObsOperatorParametersBase>
68 typename std::map<std::string, ObsOperatorFactory*>::iterator it =
71 throw std::runtime_error(name +
" does not exist in ufo::ObsOperatorFactory");
73 return it->second->makeParameters();
Locations class to handle simple lat-lon-time locations.
virtual std::unique_ptr< Locations > locations() const
Locations for GeoVaLs.
virtual oops::Variables simulatedVars() const
List of variables simulated by this operator.
const ioda::ObsSpace & odb_
ObsOperatorFactory(const std::string &name)
Register a maker able to create observation operators of type name.
static ObsOperatorBase * create(const ioda::ObsSpace &, const ObsOperatorParametersBase ¶ms)
Create and return a new observation operator.
static std::map< std::string, ObsOperatorFactory * > & getMakers()
static std::unique_ptr< ObsOperatorParametersBase > createParameters(const std::string &name)
Create and return an instance of the subclass of ObsOperatorParametersBase storing parameters of obse...
Base class of classes storing configuration parameters of specific observation operators and linear o...
oops::OptionalParameter< std::string > name
Observation operator type.