11 #ifndef OOPS_ASSIMILATION_INCREMENTALASSIMILATION_H_ 12 #define OOPS_ASSIMILATION_INCREMENTALASSIMILATION_H_ 15 #include <boost/scoped_ptr.hpp> 17 #include "eckit/config/Configuration.h" 25 #include "oops/util/Logger.h" 29 template<
typename MODEL>
31 const eckit::Configuration & config) {
37 std::vector<eckit::LocalConfiguration> iterconfs;
38 config.get(
"variational.iteration", iterconfs);
39 const unsigned int nouter = iterconfs.size();
40 Log::info() <<
"Running incremental assimilation with " << nouter
41 <<
" outer iterations." << std::endl;
44 eckit::LocalConfiguration minConf(config,
"minimizer");
45 minConf.set(
"nouter", static_cast<const int>(nouter));
48 for (
unsigned jouter = 0; jouter < nouter; ++jouter) {
50 Log::info() <<
"IncrementalAssimilation: Configuration for outer iteration " 51 << jouter <<
":\n" << iterconfs[jouter];
55 if (iterconfs[jouter].has(
"prints")) {
56 const eckit::LocalConfiguration prtConfig(iterconfs[jouter],
"prints");
64 boost::scoped_ptr<CtrlInc_> dx(minim->minimize(iterconfs[jouter]));
75 #endif // OOPS_ASSIMILATION_INCREMENTALASSIMILATION_H_
void addIncrement(CtrlVar_ &, const CtrlInc_ &, PostProcessor< Increment_ > post=PostProcessor< Increment_ >()) const
double linearize(const CtrlVar_ &, const eckit::Configuration &, PostProcessor< State_ > post=PostProcessor< State_ >())
Encapsulates the model state.
void IncrementalAssimilation(ControlVariable< MODEL > &xx, CostFunction< MODEL > &J, const eckit::Configuration &config)
The namespace for the main oops code.
Handles writing-out of forecast fields.
subroutine, public info(self)
void resetLinearization()
Control model post processing.
A Minimizer knows how to minimize a cost function.
void enrollProcessor(PostBase_ *pp)