FV3 Bundle
VarChaC2MFV3JEDI.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 SRC_VARIABLECHANGE_VARCHAC2MFV3JEDI_H_
9 #define SRC_VARIABLECHANGE_VARCHAC2MFV3JEDI_H_
10 
11 #include <ostream>
12 #include <string>
13 
15 #include "GeometryFV3JEDI.h"
16 #include "eckit/config/Configuration.h"
17 #include "oops/util/Printable.h"
18 
19 // Forward declarations
20 namespace eckit {
21  class Configuration;
22 }
23 
24 namespace fv3jedi {
25  class GeometryFV3JEDI;
26  class StateFV3JEDI;
27  class IncrementFV3JEDI;
28 
29 // -----------------------------------------------------------------------------
30 /// FV3JEDI linear change of variable
31 
32 class VarChaC2MFV3JEDI: public util::Printable {
33  public:
34  static const std::string classname() {return "fv3jedi::VarChaC2MFV3JEDI";}
35 
36  explicit VarChaC2MFV3JEDI(const StateFV3JEDI &, const StateFV3JEDI &,
37  const GeometryFV3JEDI &, const eckit::Configuration &);
39 
40 /// Perform linear multiplications
41  void multiply(const IncrementFV3JEDI &, IncrementFV3JEDI &) const;
42  void multiplyInverse(const IncrementFV3JEDI &, IncrementFV3JEDI &) const;
43  void multiplyAD(const IncrementFV3JEDI &, IncrementFV3JEDI &) const;
45 
46  private:
47  boost::shared_ptr<const GeometryFV3JEDI> geom_;
49  void print(std::ostream &) const override;
50 };
51 // -----------------------------------------------------------------------------
52 
53 } // namespace fv3jedi
54 #endif // SRC_VARIABLECHANGE_VARCHAC2MFV3JEDI_H_
VarChaC2MFV3JEDI(const StateFV3JEDI &, const StateFV3JEDI &, const GeometryFV3JEDI &, const eckit::Configuration &)
void multiplyInverse(const IncrementFV3JEDI &, IncrementFV3JEDI &) const
boost::shared_ptr< const GeometryFV3JEDI > geom_
void multiply(const IncrementFV3JEDI &, IncrementFV3JEDI &) const
Perform linear multiplications.
void print(std::ostream &) const override
static const std::string classname()
FV3JEDI linear change of variable.
void multiplyInverseAD(const IncrementFV3JEDI &, IncrementFV3JEDI &) const
void multiplyAD(const IncrementFV3JEDI &, IncrementFV3JEDI &) const
GeometryFV3JEDI handles geometry for FV3JEDI model.