SOCA
VertConv.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2021 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 SOCA_TRANSFORMS_VERTCONV_VERTCONV_H_
9 #define SOCA_TRANSFORMS_VERTCONV_VERTCONV_H_
10 
11 #include <ostream>
12 #include <string>
13 
14 #include "soca/State/State.h"
15 
16 #include "oops/util/DateTime.h"
17 #include "oops/util/Printable.h"
18 
19 // Forward declarations
20 namespace eckit {
21  class Configuration;
22 }
23 namespace soca {
24  class Geometry;
25  class Increment;
26 }
27 
28 // -----------------------------------------------------------------------------
29 
30 namespace soca {
31 
32 /// SOCA linear change of variable
33 class VertConv: public util::Printable {
34  public:
35  static const std::string classname() {return "soca::VertConv";}
36 
37  explicit VertConv(const State &, const State &, const Geometry &,
38  const eckit::Configuration &);
39  ~VertConv();
40 
41 /// Perform linear transforms
42  void multiply(const Increment &, Increment &) const;
43  void multiplyInverse(const Increment &, Increment &) const;
44  void multiplyAD(const Increment &, Increment &) const;
45  void multiplyInverseAD(const Increment &, Increment &) const;
46 
47  private:
48  void print(std::ostream &) const override;
50  const State bkg_lr_;
51  const Geometry geom_;
52 };
53 // -----------------------------------------------------------------------------
54 
55 } // namespace soca
56 #endif // SOCA_TRANSFORMS_VERTCONV_VERTCONV_H_
Geometry handles geometry for SOCA model.
Definition: Geometry.h:48
Increment Class: Difference between two states.
Definition: Increment.h:61
SOCA model state.
Definition: State.h:48
SOCA linear change of variable.
Definition: VertConv.h:33
const State bkg_lr_
Definition: VertConv.h:50
VertConv(const State &, const State &, const Geometry &, const eckit::Configuration &)
Definition: VertConv.cc:34
const Geometry geom_
Definition: VertConv.h:51
void multiplyAD(const Increment &, Increment &) const
Definition: VertConv.cc:65
void multiply(const Increment &, Increment &) const
Perform linear transforms.
Definition: VertConv.cc:54
void multiplyInverseAD(const Increment &, Increment &) const
Definition: VertConv.cc:71
int keyFtnConfig_
Definition: VertConv.h:49
void multiplyInverse(const Increment &, Increment &) const
Definition: VertConv.cc:60
static const std::string classname()
Definition: VertConv.h:35
void print(std::ostream &) const override
Definition: VertConv.cc:77