IODA Bundle
TlmIdQG.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2009-2016 ECMWF.
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  * In applying this licence, ECMWF does not waive the privileges and immunities
7  * granted to it by virtue of its status as an intergovernmental organisation nor
8  * does it submit to any jurisdiction.
9  */
10 
11 #include "model/TlmIdQG.h"
12 
13 #include <vector>
14 
15 #include "eckit/config/LocalConfiguration.h"
16 #include "eckit/exception/Exceptions.h"
17 
18 #include "oops/util/abor1_cpp.h"
19 #include "oops/util/Logger.h"
20 
21 #include "model/GeometryQG.h"
22 #include "model/IncrementQG.h"
24 #include "model/QgFortran.h"
25 #include "model/QgTraits.h"
26 #include "model/StateQG.h"
27 
28 namespace qg {
29 // -----------------------------------------------------------------------------
31 // -----------------------------------------------------------------------------
32 TlmIdQG::TlmIdQG(const GeometryQG & resol, const eckit::Configuration & tlConf)
33  : keyConfig_(0), tstep_(), resol_(resol), linvars_({"x"})
34 {
35  if (tlConf.has("tlm variables")) linvars_ = oops::Variables(tlConf, "tlm variables");
36  tstep_ = util::Duration(tlConf.getString("tstep"));
37  qg_model_setup_f90(keyConfig_, tlConf);
38 
39  oops::Log::trace() << "TlmIdQG created" << std::endl;
40 }
41 // -----------------------------------------------------------------------------
44  oops::Log::trace() << "TlmIdQG destructed" << std::endl;
45 }
46 // -----------------------------------------------------------------------------
47 void TlmIdQG::setTrajectory(const StateQG &, StateQG &, const ModelBias &) {}
48 // -----------------------------------------------------------------------------
50  ASSERT(dx.fields().isForModel(false));
51  oops::Log::debug() << "TlmIdQG::initializeTL" << dx.fields() << std::endl;
52 }
53 // -----------------------------------------------------------------------------
54 void TlmIdQG::stepTL(IncrementQG & dx, const ModelBiasIncrement &) const {
55  dx.updateTime(tstep_);
56 }
57 // -----------------------------------------------------------------------------
58 void TlmIdQG::finalizeTL(IncrementQG & dx) const {
59  oops::Log::debug() << "TlmIdQG::finalizeTL" << dx.fields() << std::endl;
60 }
61 // -----------------------------------------------------------------------------
63  ASSERT(dx.fields().isForModel(false));
64  oops::Log::debug() << "TlmIdQG::initializeAD" << dx.fields() << std::endl;
65 }
66 // -----------------------------------------------------------------------------
68  dx.updateTime(-tstep_);
69 }
70 // -----------------------------------------------------------------------------
71 void TlmIdQG::finalizeAD(IncrementQG & dx) const {
72  oops::Log::debug() << "TlmIdQG::finalizeAD" << dx.fields() << std::endl;
73 }
74 // -----------------------------------------------------------------------------
75 void TlmIdQG::print(std::ostream & os) const {
76  os << "QG Identity TLM";
77 }
78 // -----------------------------------------------------------------------------
79 } // namespace qg
bool isForModel(const bool &) const
Definition: FieldsQG.cc:211
GeometryQG handles geometry for QG model.
Definition: GeometryQG.h:58
Increment Class: Difference between two states.
Definition: IncrementQG.h:64
void updateTime(const util::Duration &dt)
Definition: IncrementQG.h:96
FieldsQG & fields()
Access to fields.
Definition: IncrementQG.h:104
Model error for the QG model.
QG model state.
Definition: StateQG.h:42
void initializeAD(IncrementQG &) const override
Definition: TlmIdQG.cc:62
F90model keyConfig_
Definition: TlmIdQG.h:68
void initializeTL(IncrementQG &) const override
Run TLM and its adjoint.
Definition: TlmIdQG.cc:49
TlmIdQG(const GeometryQG &, const eckit::Configuration &)
Definition: TlmIdQG.cc:32
void stepAD(IncrementQG &, ModelBiasIncrement &) const override
Definition: TlmIdQG.cc:67
void setTrajectory(const StateQG &, StateQG &, const ModelBias &) override
Model trajectory computation.
Definition: TlmIdQG.cc:47
void print(std::ostream &) const override
Definition: TlmIdQG.cc:75
util::Duration tstep_
Definition: TlmIdQG.h:69
void finalizeAD(IncrementQG &) const override
Definition: TlmIdQG.cc:71
void stepTL(IncrementQG &, const ModelBiasIncrement &) const override
Definition: TlmIdQG.cc:54
void finalizeTL(IncrementQG &) const override
Definition: TlmIdQG.cc:58
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, TlmIdQG > makerQGIdTLM_("QgIdTLM")