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"
37 : keyConfig_(0), tstep_(), resol_(resol), traj_(),
40 eckit::LocalConfiguration(tlConf,
"trajectory"))),
43 if (tlConf.has(
"tlm variables")) linvars_ =
oops::Variables(tlConf,
"tlm variables");
44 tstep_ = util::Duration(tlConf.getString(
"tstep"));
47 oops::Log::trace() <<
"TlmQG created" << std::endl;
55 oops::Log::trace() <<
"TlmQG destructed" << std::endl;
67 oops::Log::debug() <<
"TlmQG::initializeTL" << dx.
fields() << std::endl;
72 if (itra ==
traj_.end()) {
74 ABORT(
"TlmQG: trajectory not available");
77 oops::Log::debug() <<
"TlmQG::stepTL fields in" << dx.
fields() << std::endl;
79 oops::Log::debug() <<
"TlmQG::stepTL fields out" << dx.
fields() << std::endl;
84 oops::Log::debug() <<
"TlmQG::finalizeTL" << dx.
fields() << std::endl;
89 oops::Log::debug() <<
"TlmQG::initializeAD" << dx.
fields() << std::endl;
95 if (itra ==
traj_.end()) {
97 ABORT(
"TlmQG: trajectory not available");
100 oops::Log::debug() <<
"TlmQG::stepAD fields in" << dx.
fields() << std::endl;
102 oops::Log::debug() <<
"TlmQG::stepAD fields out" << dx.
fields() << std::endl;
106 oops::Log::debug() <<
"TlmQG::finalizeAD" << dx.
fields() << std::endl;
110 os <<
"QG TLM Trajectory, nstep=" <<
traj_.size() << std::endl;
111 typedef std::map< util::DateTime, int >::const_iterator
trajICst;
112 if (
traj_.size() > 0) {
113 os <<
"QG TLM Trajectory: times are:";
116 os <<
" " << jtra->first;
117 os <<
" " << jtra->second;
A subclass of LinearModelFactory able to create instances of T (a concrete subclass of interface::Lin...
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
Print, used in logging.
void initializeTL(IncrementQG &) const override
Prepare model integration.
void stepTL(IncrementQG &, const ModelBiasIncrement &) const override
Model integration.
std::map< util::DateTime, int >::iterator trajIter
void finalizeTL(IncrementQG &) const override
Finish model integration.
void setTrajectory(const StateQG &, StateQG &, const ModelBias &) override
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 &)
void qg_fields_delete_f90(F90flds &)
void qg_model_propagate_ad_f90(const F90model &, const F90flds &, const F90flds &)
static oops::interface::LinearModelMaker< QgTraits, TlmQG > makerQGTLM_("QgTLM")
void qg_model_propagate_tl_f90(const F90model &, const F90flds &, const F90flds &)