SOCA
Ana2Model.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_ANA2MODEL_ANA2MODEL_H_
9 #define SOCA_TRANSFORMS_ANA2MODEL_ANA2MODEL_H_
10 
11 #include <ostream>
12 #include <string>
13 #include <vector>
14 
15 #include "eckit/config/Configuration.h"
16 #include "oops/base/VariableChangeBase.h"
17 #include "oops/base/Variables.h"
18 #include "soca/Geometry/Geometry.h"
19 #include "soca/Traits.h"
20 
21 
22 // Forward declarations
23 namespace eckit {
24  class Configuration;
25 }
26 
27 namespace soca {
28  class Geometry;
29  class State;
30 
31 // -----------------------------------------------------------------------------
32 /// SOCA nonlinear change of variable
33 
34 class Ana2Model: public oops::VariableChangeBase<soca::Traits> {
35  public:
36  static const std::string classname() {return "soca::Ana2Model";}
37 
38  Ana2Model(const Geometry &, const eckit::Configuration &);
39  ~Ana2Model();
40 
41  void changeVar(const State &, State &) const override;
42  void changeVarInverse(const State &, State &) const override;
43 
44  std::vector<std::string> initRotate(const eckit::Configuration & conf,
45  const std::string & uv) const
46  {
47  return conf.getStringVector("rotate."+uv);
48  }
49 
50  std::vector<std::string> initTrans(const eckit::Configuration & conf,
51  const std::string & trvar) const
52  {
53  return conf.getStringVector("log."+trvar);
54  }
55 
56  private:
57  void print(std::ostream &) const override;
58  const oops::Variables uvars_;
59  const oops::Variables vvars_;
60  const oops::Variables logvars_;
61 };
62 // -----------------------------------------------------------------------------
63 } // namespace soca
64 
65 #endif // SOCA_TRANSFORMS_ANA2MODEL_ANA2MODEL_H_
SOCA nonlinear change of variable.
Definition: Ana2Model.h:34
Ana2Model(const Geometry &, const eckit::Configuration &)
Definition: Ana2Model.cc:29
std::vector< std::string > initTrans(const eckit::Configuration &conf, const std::string &trvar) const
Definition: Ana2Model.h:50
const oops::Variables logvars_
Definition: Ana2Model.h:60
void changeVarInverse(const State &, State &) const override
Definition: Ana2Model.cc:58
const oops::Variables vvars_
Definition: Ana2Model.h:59
std::vector< std::string > initRotate(const eckit::Configuration &conf, const std::string &uv) const
Definition: Ana2Model.h:44
const oops::Variables uvars_
Definition: Ana2Model.h:58
void changeVar(const State &, State &) const override
Definition: Ana2Model.cc:46
static const std::string classname()
Definition: Ana2Model.h:36
void print(std::ostream &) const override
Definition: Ana2Model.cc:70
Geometry handles geometry for SOCA model.
Definition: Geometry.h:48
SOCA model state.
Definition: State.h:48