12 #include "eckit/config/LocalConfiguration.h"
14 #include "oops/util/abor1_cpp.h"
15 #include "oops/util/Logger.h"
22 const oops::Variables & vars)
23 : func_name_(parameters.name),
24 geovars_(), hdiags_(), vars_(vars) {
31 oops::Log::error() << name <<
" already registered in ufo::PredictorFactory."
33 ABORT(
"Element already registered in ufo::PredictorFactory.");
41 const oops::Variables & vars) {
42 oops::Log::trace() <<
"PredictorBase::create starting" << std::endl;
43 const std::string name = parameters.
name;
45 oops::Log::error() << name <<
" does not exist in ufo::PredictorFactory."
47 ABORT(
"Element does not exist in ufo::PredictorFactory.");
49 typename std::map<std::string, PredictorFactory*>::iterator jloc =
51 std::unique_ptr<PredictorBase> ptr = jloc->second->make(parameters, vars);
52 oops::Log::trace() <<
"PredictorBase::create done" << std::endl;
59 const std::string &name) {
60 typename std::map<std::string, PredictorFactory*>::iterator it =
63 throw std::runtime_error(name +
" does not exist in ufo::PredictorFactory");
65 return it->second->makeParameters();
PredictorBase(const PredictorParametersBase &, const oops::Variables &)
static std::unique_ptr< PredictorBase > create(const PredictorParametersBase ¶meters, const oops::Variables &vars)
Create and return a new predictor.
PredictorFactory(const std::string &name)
Register a maker able to create predictors of type name.
static bool predictorExists(const std::string &name)
Return true if a maker has been registered for a predictor of type name.
static std::map< std::string, PredictorFactory * > & getMakers()
static std::unique_ptr< PredictorParametersBase > createParameters(const std::string &name)
Create and return an instance of the subclass of PredictorParametersBase storing parameters of predic...
Base class for predictor parameters.
oops::RequiredParameter< std::string > name
Predictor name.