FV3-JEDI
Tlm.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017 UCAR
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  */
7 
8 #pragma once
9 
10 #include <map>
11 #include <ostream>
12 #include <string>
13 
14 #include "oops/base/LinearModelBase.h"
15 #include "oops/util/Duration.h"
16 #include "oops/util/ObjectCounter.h"
17 #include "oops/util/Printable.h"
18 
20 
21 // Forward declarations
22 namespace eckit {
23  class Configuration;
24 }
25 
26 namespace fv3jedi {
27 
28 // -------------------------------------------------------------------------------------------------
29 
30 // Linear model definition.
31 
32 class Tlm: public oops::LinearModelBase<Traits>,
33  private util::ObjectCounter<Tlm> {
34  public:
35  static const std::string classname() {return "fv3jedi::Tlm";}
36 
37  // Constructor/destructor
38  Tlm(const Geometry &, const eckit::Configuration &);
39  ~Tlm();
40 
41  // Set the trajectory
42  void setTrajectory(const State &, State &, const ModelBias &) override;
43 
44  // Run TLM and its adjoint
45  void initializeTL(Increment &) const override;
46  void stepTL(Increment &, const ModelBiasIncrement &) const override;
47  void finalizeTL(Increment &) const override;
48 
49  void initializeAD(Increment &) const override;
50  void stepAD(Increment &, ModelBiasIncrement &) const override;
51  void finalizeAD(Increment &) const override;
52 
53  // Accessor functions
54  const util::Duration & timeResolution() const override {return tstep_;}
55  const oops::Variables & variables() const override {return linvars_;}
56 
57  private:
58  void print(std::ostream &) const override;
59  typedef std::map< util::DateTime, int >::iterator trajIter;
60  typedef std::map< util::DateTime, int >::const_iterator trajICst;
61 
62 // Data
64  util::Duration tstep_;
65  std::map< util::DateTime, F90traj> trajmap_;
66  const oops::Variables linvars_;
67 };
68 // -------------------------------------------------------------------------------------------------
69 
70 } // namespace fv3jedi
fv3jedi::Tlm::finalizeAD
void finalizeAD(Increment &) const override
Definition: Tlm.cc:146
fv3jedi::Tlm::setTrajectory
void setTrajectory(const State &, State &, const ModelBias &) override
Definition: Tlm.cc:62
Traits.h
fv3jedi::Tlm::stepAD
void stepAD(Increment &, ModelBiasIncrement &) const override
Definition: Tlm.cc:125
fv3jedi::Tlm::finalizeTL
void finalizeTL(Increment &) const override
Definition: Tlm.cc:107
fv3jedi::Tlm::Tlm
Tlm(const Geometry &, const eckit::Configuration &)
Definition: Tlm.cc:30
fv3jedi::Tlm::linvars_
const oops::Variables linvars_
Definition: Tlm.h:66
fv3jedi::Tlm::print
void print(std::ostream &) const override
Definition: Tlm.cc:155
fv3jedi::F90model
int F90model
Definition: interface.h:28
fv3jedi::Tlm::trajIter
std::map< util::DateTime, int >::iterator trajIter
Definition: Tlm.h:59
fv3jedi::Tlm::initializeAD
void initializeAD(Increment &) const override
Definition: Tlm.cc:116
fv3jedi::ModelBias
Model error for the FV3JEDI model.
Definition: ModelBias.h:41
eckit
Definition: FieldsMetadata.h:25
fv3jedi::Tlm
Definition: Tlm.h:33
fv3jedi::Tlm::timeResolution
const util::Duration & timeResolution() const override
Definition: Tlm.h:54
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::Tlm::~Tlm
~Tlm()
Definition: Tlm.cc:49
fv3jedi::Tlm::tstep_
util::Duration tstep_
Definition: Tlm.h:64
fv3jedi::Increment
Definition: Increment.h:52
fv3jedi::Tlm::keySelf_
F90model keySelf_
Definition: Tlm.h:63
fv3jedi::Tlm::classname
static const std::string classname()
Definition: Tlm.h:35
fv3jedi::Tlm::stepTL
void stepTL(Increment &, const ModelBiasIncrement &) const override
Definition: Tlm.cc:86
fv3jedi::State
Definition: State.h:45
fv3jedi::Tlm::trajmap_
std::map< util::DateTime, F90traj > trajmap_
Definition: Tlm.h:65
fv3jedi::Tlm::initializeTL
void initializeTL(Increment &) const override
Definition: Tlm.cc:77
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
fv3jedi::ModelBiasIncrement
Definition: ModelBiasIncrement.h:27
fv3jedi::Tlm::variables
const oops::Variables & variables() const override
Definition: Tlm.h:55
fv3jedi::Tlm::trajICst
std::map< util::DateTime, int >::const_iterator trajICst
Definition: Tlm.h:60