FV3 Bundle
ChangeVar.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2018 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 #ifndef QG_MODEL_CHANGEVAR_H_
9 #define QG_MODEL_CHANGEVAR_H_
10 
11 #include <ostream>
12 #include <string>
13 
14 #include "model/QgFortran.h"
15 #include "oops/util/Printable.h"
16 
17 // Forward declarations
18 namespace eckit {
19  class Configuration;
20 }
21 
22 namespace qg {
23  class GeometryQG;
24  class StateQG;
25  class IncrementQG;
26 
27 // -----------------------------------------------------------------------------
28 /// QG linear change of variable
29 
30 class ChangeVar: public util::Printable {
31  public:
32  static const std::string classname() {return "qg::ChangeVar";}
33 
34  ChangeVar(const StateQG &, const StateQG &, const GeometryQG &, const eckit::Configuration &);
35  ~ChangeVar();
36 
37 /// Perform linear transforms
38  void multiply(const IncrementQG &, IncrementQG &) const;
39  void multiplyInverse(const IncrementQG &, IncrementQG &) const;
40  void multiplyAD(const IncrementQG &, IncrementQG &) const;
41  void multiplyInverseAD(const IncrementQG &, IncrementQG &) const;
42 
43  private:
44  void print(std::ostream &) const override;
45 
46 // Data
48 };
49 // -----------------------------------------------------------------------------
50 
51 } // namespace qg
52 #endif // QG_MODEL_CHANGEVAR_H_
F90model keyConfig_
Definition: ChangeVar.h:47
void multiplyInverseAD(const IncrementQG &, IncrementQG &) const
Definition: ChangeVar.cc:49
void print(std::ostream &) const override
Definition: ChangeVar.cc:53
void multiplyAD(const IncrementQG &, IncrementQG &) const
Definition: ChangeVar.cc:42
QG model state.
Definition: StateQG.h:50
GeometryQG handles geometry for QG model.
Definition: GeometryQG.h:33
void multiply(const IncrementQG &, IncrementQG &) const
Perform linear transforms.
Definition: ChangeVar.cc:31
QG linear change of variable.
Definition: ChangeVar.h:30
static const std::string classname()
Definition: ChangeVar.h:32
ChangeVar(const StateQG &, const StateQG &, const GeometryQG &, const eckit::Configuration &)
Definition: ChangeVar.cc:21
The namespace for the qg model.
int F90model
Definition: QgFortran.h:30
void multiplyInverse(const IncrementQG &, IncrementQG &) const
Definition: ChangeVar.cc:38
Increment Class: Difference between two states.
Definition: IncrementQG.h:55