15 #include "eckit/config/LocalConfiguration.h" 23 #include "oops/util/abor1_cpp.h" 24 #include "oops/util/DateTime.h" 25 #include "oops/util/Logger.h" 32 : keyConfig_(0), tstep_(), resol_(resol), traj_(),
33 lrmodel_(resol_,
eckit::LocalConfiguration(tlConf,
"trajectory")),
34 linvars_(
std::vector<
std::string>{
"x",
"q",
"u",
"v"})
36 tstep_ = util::Duration(tlConf.getString(
"tstep"));
38 const eckit::Configuration * configc = &tlConf;
41 oops::Log::trace() <<
"TlmQG created" << std::endl;
49 oops::Log::trace() <<
"TlmQG destructed" << std::endl;
59 std::vector<double> zstat(15);
62 for (
unsigned int jj = 0; jj < 5; ++jj) {
64 <<
", RMS=" << zstat[3*jj+2] << std::endl;
77 if (itra ==
traj_.end()) {
79 ABORT(
"TlmQG: trajectory not available");
100 if (itra ==
traj_.end()) {
102 ABORT(
"TlmQG: trajectory not available");
116 os <<
"QG TLM Trajectory, nstep=" <<
traj_.size() << std::endl;
117 typedef std::map< util::DateTime, int >::const_iterator
trajICst;
118 if (
traj_.size() > 0) {
119 os <<
"QG TLM Trajectory: times are:";
121 os <<
" " << jtra->first;
void stepTL(IncrementQG &, const ModelBiasIncrement &) const override
Model error for the QG model.
void qg_prepare_integration_ad_f90(const F90model &, const F90flds &)
FieldsQG & fields()
Access to fields.
int saveTrajectory(StateQG &, const ModelBias &) const
void print(std::ostream &) const override
void qg_propagate_ad_f90(const F90model &, const F90flds &, const F90traj &)
subroutine std(a, mean, stdv, area)
std::map< util::DateTime, int >::iterator trajIter
bool isForModel(const bool &) const
const util::DateTime & validTime() const
void initializeAD(IncrementQG &) const override
void initializeTL(IncrementQG &) const override
Run TLM and its adjoint.
static oops::LinearModelMaker< QgTraits, TlmQG > makerQGTLM_("QgTLM")
void qg_setup_f90(const eckit::Configuration *const *, const F90geom &, F90model &)
void qg_prepare_integration_tl_f90(const F90model &, const F90flds &)
const util::DateTime & validTime() const
void qg_traj_minmaxrms_f90(const F90traj &, double &)
void stepAD(IncrementQG &, ModelBiasIncrement &) const override
void finalizeTL(IncrementQG &) const override
void qg_propagate_tl_f90(const F90model &, const F90flds &, const F90traj &)
void qg_wipe_traj_f90(F90traj &)
void setTrajectory(const StateQG &, StateQG &, const ModelBias &) override
Model trajectory computation.
GeometryQG handles geometry for QG model.
void qg_delete_f90(F90model &)
TlmQG(const GeometryQG &, const eckit::Configuration &)
std::map< util::DateTime, int >::const_iterator trajICst
void changeResolution(const StateQG &xx)
Interpolate full fields.
std::map< util::DateTime, F90traj > traj_
The namespace for the qg model.
void finalizeAD(IncrementQG &) const override
Increment Class: Difference between two states.