OOPS
IdLinearVariableChange.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 OOPS_GENERIC_IDLINEARVARIABLECHANGE_H_
9 #define OOPS_GENERIC_IDLINEARVARIABLECHANGE_H_
10 
11 #include <ostream>
12 #include <string>
13 
17 #include "oops/interface/State.h"
18 #include "oops/util/Printable.h"
19 
20 // Forward declarations
21 namespace eckit {
22  class Configuration;
23 }
24 
25 namespace oops {
26 
27 // -----------------------------------------------------------------------------
28 /// No change of variable
29 
30 template <typename MODEL>
35  public:
36  static const std::string classname() {return "oops::IdLinearVariableChange";}
37 
38  IdLinearVariableChange(const State_ &, const State_ &, const Geometry_ &,
39  const eckit::Configuration & conf): LinearVariableChangeBase<MODEL>(conf) {}
41 
42 /// Perform linear transforms
43  void multiply(const Increment_ & dx1, Increment_ & dx2) const override {dx2 = dx1;}
44  void multiplyInverse(const Increment_ & dx1, Increment_ & dx2) const override {dx2 = dx1;}
45  void multiplyAD(const Increment_ & dx1, Increment_ & dx2) const override {dx2 = dx1;}
46  void multiplyInverseAD(const Increment_ & dx1, Increment_ & dx2) const override {dx2 = dx1;}
47 
48  private:
49  void print(std::ostream &) const override {}
50 };
51 
52 // -----------------------------------------------------------------------------
53 
54 } // namespace oops
55 #endif // OOPS_GENERIC_IDLINEARVARIABLECHANGE_H_
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
oops::IdLinearVariableChange::multiplyAD
void multiplyAD(const Increment_ &dx1, Increment_ &dx2) const override
Definition: IdLinearVariableChange.h:45
oops::IdLinearVariableChange::multiply
void multiply(const Increment_ &dx1, Increment_ &dx2) const override
Perform linear transforms.
Definition: IdLinearVariableChange.h:43
oops::IdLinearVariableChange::IdLinearVariableChange
IdLinearVariableChange(const State_ &, const State_ &, const Geometry_ &, const eckit::Configuration &conf)
Definition: IdLinearVariableChange.h:38
oops::IdLinearVariableChange::multiplyInverseAD
void multiplyInverseAD(const Increment_ &dx1, Increment_ &dx2) const override
Definition: IdLinearVariableChange.h:46
oops::LinearVariableChangeBase
Definition: LinearVariableChangeBase.h:53
eckit
Definition: FieldL95.h:22
oops::IdLinearVariableChange::Geometry_
Geometry< MODEL > Geometry_
Definition: IdLinearVariableChange.h:32
oops::IdLinearVariableChange
No change of variable.
Definition: IdLinearVariableChange.h:31
oops::IdLinearVariableChange::Increment_
Increment< MODEL > Increment_
Definition: IdLinearVariableChange.h:33
oops::IdLinearVariableChange::~IdLinearVariableChange
virtual ~IdLinearVariableChange()
Definition: IdLinearVariableChange.h:40
oops::Geometry
Geometry class used in oops; subclass of interface class above.
Definition: oops/interface/Geometry.h:189
oops::IdLinearVariableChange::State_
State< MODEL > State_
Definition: IdLinearVariableChange.h:34
oops::State
Encapsulates the model state.
Definition: CostJbState.h:28
oops::IdLinearVariableChange::multiplyInverse
void multiplyInverse(const Increment_ &dx1, Increment_ &dx2) const override
Definition: IdLinearVariableChange.h:44
State.h
oops::Increment
Increment Class: Difference between two states.
Definition: CostJbState.h:27
oops::IdLinearVariableChange::print
void print(std::ostream &) const override
Definition: IdLinearVariableChange.h:49
LinearVariableChangeBase.h
oops::IdLinearVariableChange::classname
static const std::string classname()
Definition: IdLinearVariableChange.h:36
Geometry.h
Increment.h