FV3-JEDI
LinVarChaA2M.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2020 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 #pragma once
9 
10 #include <memory>
11 #include <ostream>
12 #include <string>
13 
14 #include "eckit/config/Configuration.h"
16 #include "LinVarChaA2M.interface.h"
17 #include "oops/util/Printable.h"
18 
19 namespace fv3jedi {
20 
21 // -------------------------------------------------------------------------------------------------
22 
23 class LinVarChaA2M: public util::Printable {
24  public:
25  static const std::string classname() {return "fv3jedi::LinVarChaA2M";}
26  explicit LinVarChaA2M(const State &, const State &, const Geometry &,
27  const eckit::Configuration &);
28  ~LinVarChaA2M();
29  void multiply(const Increment &, Increment &) const;
30  void multiplyInverse(const Increment &, Increment &) const;
31  void multiplyAD(const Increment &, Increment &) const;
32  void multiplyInverseAD(const Increment &, Increment &) const;
33 
34  private:
35  std::shared_ptr<const Geometry> geom_;
37  void print(std::ostream &) const override;
38 };
39 
40 // -------------------------------------------------------------------------------------------------
41 
42 } // namespace fv3jedi
fv3jedi::LinVarChaA2M
Definition: LinVarChaA2M.h:23
fv3jedi::LinVarChaA2M::classname
static const std::string classname()
Definition: LinVarChaA2M.h:25
fv3jedi::LinVarChaA2M::~LinVarChaA2M
~LinVarChaA2M()
Definition: LinVarChaA2M.cc:39
fv3jedi::LinVarChaA2M::multiply
void multiply(const Increment &, Increment &) const
Definition: LinVarChaA2M.cc:46
fv3jedi::LinVarChaA2M::multiplyAD
void multiplyAD(const Increment &, Increment &) const
Definition: LinVarChaA2M.cc:64
Geometry.h
fv3jedi::LinVarChaA2M::print
void print(std::ostream &) const override
Definition: LinVarChaA2M.cc:82
fv3jedi::LinVarChaA2M::LinVarChaA2M
LinVarChaA2M(const State &, const State &, const Geometry &, const eckit::Configuration &)
Definition: LinVarChaA2M.cc:28
LinVarChaA2M.interface.h
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::LinVarChaA2M::multiplyInverse
void multiplyInverse(const Increment &, Increment &) const
Definition: LinVarChaA2M.cc:55
fv3jedi::Increment
Definition: Increment.h:52
fv3jedi::State
Definition: State.h:45
fv3jedi::F90lvc_A2M
int F90lvc_A2M
Definition: LinVarChaA2M.interface.h:11
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
fv3jedi::LinVarChaA2M::keyFtnConfig_
F90lvc_A2M keyFtnConfig_
Definition: LinVarChaA2M.h:36
fv3jedi::LinVarChaA2M::multiplyInverseAD
void multiplyInverseAD(const Increment &, Increment &) const
Definition: LinVarChaA2M.cc:73
fv3jedi::LinVarChaA2M::geom_
std::shared_ptr< const Geometry > geom_
Definition: LinVarChaA2M.h:35