SOCA
HorizFilt.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_HORIZFILT_HORIZFILT_H_
9 #define SOCA_TRANSFORMS_HORIZFILT_HORIZFILT_H_
10 
11 #include <memory>
12 #include <ostream>
13 #include <string>
14 
15 #include "oops/base/Variables.h"
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 Fields;
25  class State;
26  class Increment;
27  class Geometry;
28 }
29 
30 // -----------------------------------------------------------------------------
31 
32 namespace soca {
33 
34 /// SOCA linear change of variable
35 class HorizFilt: public util::Printable {
36  public:
37  static const std::string classname() {return "soca::HorizFilt";}
38 
39  explicit HorizFilt(const State &, const State &, const Geometry &,
40  const eckit::Configuration &);
41  ~HorizFilt();
42 
43 /// Perform linear transforms
44  void multiply(const Increment &, Increment &) const;
45  void multiplyInverse(const Increment &, Increment &) const;
46  void multiplyAD(const Increment &, Increment &) const;
47  void multiplyInverseAD(const Increment &, Increment &) const;
48 
49  private:
50  void print(std::ostream &) const override;
52  std::unique_ptr<const Geometry> geom_;
53  oops::Variables vars_;
54  unsigned int niter_;
55 };
56 // -----------------------------------------------------------------------------
57 
58 } // namespace soca
59 #endif // SOCA_TRANSFORMS_HORIZFILT_HORIZFILT_H_
Geometry handles geometry for SOCA model.
Definition: Geometry.h:48
SOCA linear change of variable.
Definition: HorizFilt.h:35
void print(std::ostream &) const override
Definition: HorizFilt.cc:93
unsigned int niter_
Definition: HorizFilt.h:54
HorizFilt(const State &, const State &, const Geometry &, const eckit::Configuration &)
Definition: HorizFilt.cc:33
static const std::string classname()
Definition: HorizFilt.h:37
void multiply(const Increment &, Increment &) const
Perform linear transforms.
Definition: HorizFilt.cc:59
void multiplyInverseAD(const Increment &, Increment &) const
Definition: HorizFilt.cc:88
void multiplyInverse(const Increment &, Increment &) const
Definition: HorizFilt.cc:71
oops::Variables vars_
Definition: HorizFilt.h:53
void multiplyAD(const Increment &, Increment &) const
Definition: HorizFilt.cc:76
std::unique_ptr< const Geometry > geom_
Definition: HorizFilt.h:52
Increment Class: Difference between two states.
Definition: Increment.h:61
SOCA model state.
Definition: State.h:48