11 #ifndef OOPS_RUNS_FORECAST_H_
12 #define OOPS_RUNS_FORECAST_H_
16 #include "eckit/config/LocalConfiguration.h"
26 #include "oops/util/DateTime.h"
27 #include "oops/util/Duration.h"
28 #include "oops/util/Logger.h"
44 int execute(
const eckit::Configuration & fullConfig)
const {
46 const eckit::LocalConfiguration resolConfig(fullConfig,
"geometry");
50 const eckit::LocalConfiguration modelConfig(fullConfig,
"model");
54 const eckit::LocalConfiguration initialConfig(fullConfig,
"initial condition");
55 State_ xx(resol, initialConfig);
56 Log::test() <<
"Initial state: " << xx << std::endl;
59 const ModelAux_ moderr(resol, fullConfig.getSubConfiguration(
"model aux control"));
62 const util::Duration fclength(fullConfig.getString(
"forecast length"));
63 const util::DateTime bgndate(xx.
validTime());
64 const util::DateTime enddate(bgndate + fclength);
65 Log::info() <<
"Running forecast from " << bgndate <<
" to " << enddate << std::endl;
70 eckit::LocalConfiguration prtConfig;
71 if (fullConfig.has(
"prints")) {
72 prtConfig = eckit::LocalConfiguration(fullConfig,
"prints");
76 const eckit::LocalConfiguration outConfig(fullConfig,
"output");
80 model.forecast(xx, moderr, fclength, post);
82 Log::test() <<
"Final state: " << xx << std::endl;
89 return "oops::Forecast<" + MODEL::name() +
">";
95 #endif // OOPS_RUNS_FORECAST_H_