16 #include "eckit/config/LocalConfiguration.h"
17 #include "eckit/exception/Exceptions.h"
19 #include "oops/util/abor1_cpp.h"
20 #include "oops/util/DateTime.h"
21 #include "oops/util/Logger.h"
36 : keyConfig_(0), tstep_(), resol_(resol), traj_(),
39 eckit::LocalConfiguration(tlConf,
"trajectory"))),
42 if (tlConf.has(
"tlm variables")) linvars_ =
oops::Variables(tlConf,
"tlm variables");
43 tstep_ = util::Duration(tlConf.getString(
"tstep"));
46 oops::Log::trace() <<
"TlmQG created" << std::endl;
54 oops::Log::trace() <<
"TlmQG destructed" << std::endl;
66 oops::Log::debug() <<
"TlmQG::initializeTL" << dx.
fields() << std::endl;
71 if (itra ==
traj_.end()) {
73 ABORT(
"TlmQG: trajectory not available");
76 oops::Log::debug() <<
"TlmQG::stepTL fields in" << dx.
fields() << std::endl;
78 oops::Log::debug() <<
"TlmQG::stepTL fields out" << dx.
fields() << std::endl;
83 oops::Log::debug() <<
"TlmQG::finalizeTL" << dx.
fields() << std::endl;
88 oops::Log::debug() <<
"TlmQG::initializeAD" << dx.
fields() << std::endl;
94 if (itra ==
traj_.end()) {
96 ABORT(
"TlmQG: trajectory not available");
99 oops::Log::debug() <<
"TlmQG::stepAD fields in" << dx.
fields() << std::endl;
101 oops::Log::debug() <<
"TlmQG::stepAD fields out" << dx.
fields() << std::endl;
105 oops::Log::debug() <<
"TlmQG::finalizeAD" << dx.
fields() << std::endl;
109 os <<
"QG TLM Trajectory, nstep=" <<
traj_.size() << std::endl;
110 typedef std::map< util::DateTime, int >::const_iterator
trajICst;
111 if (
traj_.size() > 0) {
112 os <<
"QG TLM Trajectory: times are:";
115 os <<
" " << jtra->first;
116 os <<
" " << jtra->second;
const int & toFortran() const
bool isForModel(const bool &) const
GeometryQG handles geometry for QG model.
Increment Class: Difference between two states.
const util::DateTime & validTime() const
FieldsQG & fields()
Access to fields.
Model error for the QG model.
int saveTrajectory(StateQG &, const ModelBias &) const
void changeResolution(const StateQG &xx)
Interpolate full fields.
const util::DateTime & validTime() const
void print(std::ostream &) const override
void initializeTL(IncrementQG &) const override
Run TLM and its adjoint.
void stepTL(IncrementQG &, const ModelBiasIncrement &) const override
std::map< util::DateTime, int >::iterator trajIter
void finalizeTL(IncrementQG &) const override
void setTrajectory(const StateQG &, StateQG &, const ModelBias &) override
Model trajectory computation.
void stepAD(IncrementQG &, ModelBiasIncrement &) const override
std::map< util::DateTime, F90flds > traj_
TlmQG(const GeometryQG &, const eckit::Configuration &)
void initializeAD(IncrementQG &) const override
std::map< util::DateTime, int >::const_iterator trajICst
void finalizeAD(IncrementQG &) const override
The namespace for the main oops code.
The namespace for the qg model.
void qg_model_setup_f90(F90model &, const eckit::Configuration &)
void qg_model_delete_f90(F90model &)
static oops::LinearModelMaker< QgTraits, TlmQG > makerQGTLM_("QgTLM")
void qg_fields_delete_f90(F90flds &)
void qg_model_propagate_ad_f90(const F90model &, const F90flds &, const F90flds &)
void qg_model_propagate_tl_f90(const F90model &, const F90flds &, const F90flds &)