IODA Bundle
TlmQG.h
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 #ifndef QG_MODEL_TLMQG_H_
12 #define QG_MODEL_TLMQG_H_
13 
14 #include <map>
15 #include <ostream>
16 #include <string>
17 
18 #include <boost/noncopyable.hpp>
19 
21 #include "oops/base/Variables.h"
22 #include "oops/util/Duration.h"
23 #include "oops/util/ObjectCounter.h"
24 #include "oops/util/Printable.h"
25 
26 #include "oops/qg/ModelQG.h"
27 #include "oops/qg/QgFortran.h"
28 #include "oops/qg/QgTraits.h"
29 
30 // Forward declarations
31 namespace eckit {
32  class Configuration;
33 }
34 
35 namespace qg {
36 // -----------------------------------------------------------------------------
37 /// QG linear model definition.
38 /*!
39  * QG linear model definition and configuration parameters.
40  */
41 
42 class TlmQG: public oops::LinearModelBase<QgTraits>,
43  private util::ObjectCounter<TlmQG> {
44  public:
45  static const std::string classname() {return "qg::TlmQG";}
46 
47  TlmQG(const GeometryQG &, const eckit::Configuration &);
48  ~TlmQG();
49 
50 /// Model trajectory computation
51  void setTrajectory(const StateQG &, StateQG &, const ModelBias &) override;
52 
53 /// Run TLM and its adjoint
54  void initializeTL(IncrementQG &) const override;
55  void stepTL(IncrementQG &, const ModelBiasIncrement &) const override;
56  void finalizeTL(IncrementQG &) const override;
57 
58  void initializeAD(IncrementQG &) const override;
59  void stepAD(IncrementQG &, ModelBiasIncrement &) const override;
60  void finalizeAD(IncrementQG &) const override;
61 
62 /// Other utilities
63  const util::Duration & timeResolution() const override {return tstep_;}
64  const GeometryQG & resolution() const {return resol_;}
65  const oops::Variables & variables() const override {return linvars_;}
66 
67  private:
68  void print(std::ostream &) const override;
69  typedef std::map< util::DateTime, int >::iterator trajIter;
70  typedef std::map< util::DateTime, int >::const_iterator trajICst;
71 
72 // Data
74  util::Duration tstep_;
76  std::map< util::DateTime, F90flds> traj_;
79 };
80 // -----------------------------------------------------------------------------
81 
82 } // namespace qg
83 #endif // QG_MODEL_TLMQG_H_
Base class for encapsulation of the linear forecast model.
GeometryQG handles geometry for QG model.
Definition: GeometryQG.h:58
Increment Class: Difference between two states.
Definition: IncrementQG.h:64
Model error for the QG model.
QG model definition.
Definition: ModelQG.h:60
QG model state.
Definition: StateQG.h:42
QG linear model definition.
Definition: TlmQG.h:43
void print(std::ostream &) const override
Definition: TlmQG.cc:108
const util::Duration & timeResolution() const override
Other utilities.
Definition: TlmQG.h:63
void initializeTL(IncrementQG &) const override
Run TLM and its adjoint.
Definition: TlmQG.cc:64
oops::Variables linvars_
Definition: TlmQG.h:78
void stepTL(IncrementQG &, const ModelBiasIncrement &) const override
Definition: TlmQG.cc:69
std::map< util::DateTime, int >::iterator trajIter
Definition: TlmQG.h:69
void finalizeTL(IncrementQG &) const override
Definition: TlmQG.cc:82
const GeometryQG resol_
Definition: TlmQG.h:75
void setTrajectory(const StateQG &, StateQG &, const ModelBias &) override
Model trajectory computation.
Definition: TlmQG.cc:57
F90model keyConfig_
Definition: TlmQG.h:73
void stepAD(IncrementQG &, ModelBiasIncrement &) const override
Definition: TlmQG.cc:91
std::map< util::DateTime, F90flds > traj_
Definition: TlmQG.h:76
~TlmQG()
Definition: TlmQG.cc:49
TlmQG(const GeometryQG &, const eckit::Configuration &)
Definition: TlmQG.cc:35
void initializeAD(IncrementQG &) const override
Definition: TlmQG.cc:86
std::map< util::DateTime, int >::const_iterator trajICst
Definition: TlmQG.h:70
void finalizeAD(IncrementQG &) const override
Definition: TlmQG.cc:104
const ModelQG lrmodel_
Definition: TlmQG.h:77
const oops::Variables & variables() const override
Definition: TlmQG.h:65
const GeometryQG & resolution() const
Definition: TlmQG.h:64
static const std::string classname()
Definition: TlmQG.h:45
util::Duration tstep_
Definition: TlmQG.h:74
The namespace for the qg model.
int F90model
Definition: QgFortran.h:45