11 #ifndef OOPS_RUNS_GENENSPERTB_H_
12 #define OOPS_RUNS_GENENSPERTB_H_
19 #include "eckit/config/Configuration.h"
32 #include "oops/util/DateTime.h"
33 #include "oops/util/Duration.h"
34 #include "oops/util/Logger.h"
48 instantiateCovarFactory<MODEL>();
53 int execute(
const eckit::Configuration & fullConfig)
const {
55 const eckit::LocalConfiguration resolConfig(fullConfig,
"geometry");
59 const eckit::LocalConfiguration modelConfig(fullConfig,
"model");
63 const eckit::LocalConfiguration initialConfig(fullConfig,
"initial condition");
64 const State_ xx(resol, initialConfig);
65 Log::test() <<
"Initial state: " << xx << std::endl;
68 const ModelAux_ moderr(resol, fullConfig.getSubConfiguration(
"model aux control"));
71 const util::Duration fclength(fullConfig.getString(
"forecast length"));
72 const util::DateTime bgndate(xx.
validTime());
73 const util::DateTime enddate(bgndate + fclength);
74 Log::info() <<
"Running forecast from " << bgndate <<
" to " << enddate << std::endl;
77 const Variables vars(fullConfig,
"perturbed variables");
80 const eckit::LocalConfiguration covar(fullConfig,
"background error");
81 std::unique_ptr< ModelSpaceCovarianceBase<MODEL> >
86 const int members = fullConfig.getInt(
"members");
87 for (
int jm = 0; jm < members; ++jm) {
98 eckit::LocalConfiguration outConfig(fullConfig,
"output");
99 outConfig.set(
"member", jm+1);
104 model.forecast(xp, moderr, fclength, post);
105 Log::test() <<
"Member " << jm <<
" final state: " << xp << std::endl;
113 return "oops::GenEnsPertB<" + MODEL::name() +
">";
119 #endif // OOPS_RUNS_GENENSPERTB_H_