Go to the documentation of this file.
11 #ifndef OOPS_ASSIMILATION_COSTFCT3DVAR_H_
12 #define OOPS_ASSIMILATION_COSTFCT3DVAR_H_
16 #include "eckit/config/Configuration.h"
17 #include "eckit/mpi/Comm.h"
29 #include "oops/util/DateTime.h"
30 #include "oops/util/Duration.h"
31 #include "oops/util/Logger.h"
53 CostFct3DVar(
const eckit::Configuration &,
const eckit::mpi::Comm &);
87 template<
typename MODEL,
typename OBS>
89 const eckit::mpi::Comm & comm)
91 windowLength_(), windowHalf_(), comm_(comm),
92 resol_(
eckit::LocalConfiguration(config,
"geometry"), comm),
93 ctlvars_(config,
"analysis variables")
95 Log::trace() <<
"CostFct3DVar::CostFct3DVar start" << std::endl;
96 windowLength_ = util::Duration(config.getString(
"window length"));
97 windowBegin_ = util::DateTime(config.getString(
"window begin"));
104 Log::trace() <<
"CostFct3DVar::CostFct3DVar done" << std::endl;
109 template <
typename MODEL,
typename OBS>
113 Log::trace() <<
"CostFct3DVar::newJb" << std::endl;
119 template <
typename MODEL,
typename OBS>
121 Log::trace() <<
"CostFct3DVar::newJo" << std::endl;
127 template <
typename MODEL,
typename OBS>
130 Log::trace() <<
"CostFct3DVar::newJc" << std::endl;
138 template <
typename MODEL,
typename OBS>
140 Log::trace() <<
"CostFct3DVar::runNL start" << std::endl;
148 Log::trace() <<
"CostFct3DVar::runNL done" << std::endl;
153 template<
typename MODEL,
typename OBS>
158 Log::trace() <<
"CostFct3DVar::doLinearize start" << std::endl;
160 Log::trace() <<
"CostFct3DVar::doLinearize done" << std::endl;
165 template <
typename MODEL,
typename OBS>
170 Log::trace() <<
"CostFct3DVar::runTLM start" << std::endl;
183 Log::trace() <<
"CostFct3DVar::runTLM done" << std::endl;
188 template <
typename MODEL,
typename OBS>
190 Log::trace() <<
"CostFct3DVar::zeroAD start" << std::endl;
194 Log::trace() <<
"CostFct3DVar::zeroAD done" << std::endl;
199 template <
typename MODEL,
typename OBS>
204 Log::trace() <<
"CostFct3DVar::runADJ start" << std::endl;
218 Log::trace() <<
"CostFct3DVar::runADJ done" << std::endl;
223 template<
typename MODEL,
typename OBS>
226 Log::trace() <<
"CostFct3DVar::addIncr start" << std::endl;
230 Log::trace() <<
"CostFct3DVar::addIncr done" << std::endl;
237 #endif // OOPS_ASSIMILATION_COSTFCT3DVAR_H_
const util::DateTime validTime() const
Time.
The namespace for the main oops code.
util::DateTime windowEnd_
ObsAuxIncrs_ & obsVar()
Get augmented observation control variable.
Base Class for Cost Function Terms.
void process(const FLDS &xx)
ControlVariable< MODEL, OBS > CtrlVar_
void finalizeTL(const Increment_ &dx)
void zero()
Linear algebra operators.
ModelAuxIncr_ & modVar()
Get augmented model control variable.
void zeroAD(CtrlInc_ &) const override
void finalize(const FLDS &xx)
Increment< MODEL > Increment_
CostTermBase< MODEL, OBS > * newJc(const eckit::Configuration &, const Geometry_ &) const override
ControlIncrement< MODEL, OBS > CtrlInc_
CostJb3D< MODEL > * newJb(const eckit::Configuration &, const Geometry_ &, const CtrlVar_ &) const override
util::DateTime windowBegin_
CostFunction< MODEL, OBS > CostFct_
const util::DateTime validTime() const
Time.
CostFct3DVar(const eckit::Configuration &, const eckit::mpi::Comm &)
void initializeAD(Increment_ &dx, const util::DateTime &bgn, const util::Duration &step)
Adjoint methods.
void enrollProcessor(PostBase_ *pp)
util::DateTime windowHalf_
const Geometry_ & geometry() const override
void finalizeAD(Increment_ &dx)
void initialize(const FLDS &xx, const util::DateTime &end, const util::Duration &step)
void doLinearize(const Geometry_ &, const eckit::Configuration &, const CtrlVar_ &, const CtrlVar_ &, PostProcessor< State_ > &, PostProcessorTLAD< MODEL > &) override
Geometry< MODEL > Geometry_
Control model post processing.
Geometry class used in oops; subclass of interface class above.
CostJo< MODEL, OBS > * newJo(const eckit::Configuration &) const override
void runADJ(CtrlInc_ &, PostProcessorTLAD< MODEL > &, PostProcessor< Increment_ >, const bool) const override
Increment_ & state()
Get state control variable.
util::Duration windowLength_
void addIncr(CtrlVar_ &, const CtrlInc_ &, PostProcessor< Increment_ > &) const override
Encapsulates the model state.
void runNL(CtrlVar_ &, PostProcessor< State_ > &) const override
Control model post processing.
void setupTerms(const eckit::Configuration &)
void processTL(const Increment_ &dx)
Increment Class: Difference between two states.
Save trajectory during forecast run.
void processAD(Increment_ &dx)
void initializeTL(const Increment_ &dx, const util::DateTime &end, const util::Duration &step)
Tangent linear methods.
const eckit::mpi::Comm & comm_
void runTLM(CtrlInc_ &, PostProcessorTLAD< MODEL > &, PostProcessor< Increment_ >, const bool) const override
State_ & state()
Get state control variable.