FV3-JEDI
LinVarChaModel2GeoVaLs.cc
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 #include <ostream>
9 #include <string>
10 
11 #include "eckit/config/Configuration.h"
12 
13 #include "oops/interface/LinearVariableChange.h"
14 #include "oops/util/Logger.h"
15 #include "oops/util/Timer.h"
16 
18 #include "fv3jedi/State/State.h"
22 
23 namespace fv3jedi {
24 // -------------------------------------------------------------------------------------------------
25 static oops::LinearVariableChangeMaker<Traits,
26  oops::LinearVariableChange<Traits, LinVarChaModel2GeoVaLs> >
27  makerLinVarChaModel2GeoVaLs_("Model2GeoVaLs");
28 // -------------------------------------------------------------------------------------------------
30  const Geometry & resol, const eckit::Configuration & conf):
31  geom_(new Geometry(resol))
32 {
33  util::Timer timer(classname(), "LinVarChaModel2GeoVaLs");
34  oops::Log::trace() << classname() << " constructor starting" << std::endl;
35  const eckit::Configuration * configc = &conf;
37  fg.toFortran(), &configc);
38  oops::Log::trace() << classname() << " constructor done" << std::endl;
39 }
40 // -------------------------------------------------------------------------------------------------
42  util::Timer timer(classname(), "~LinVarChaModel2GeoVaLs");
43  oops::Log::trace() << classname() << " destructor starting" << std::endl;
45  oops::Log::trace() << classname() << " destructor done" << std::endl;
46 }
47 // -------------------------------------------------------------------------------------------------
48 void LinVarChaModel2GeoVaLs::multiply(const Increment & dxin, Increment & dxout) const {
49  util::Timer timer(classname(), "multiply");
50  oops::Log::trace() << classname() << " multiply starting" << std::endl;
52  dxin.toFortran(), dxout.toFortran());
53  oops::Log::trace() << classname() << " multiply done" << std::endl;
54 }
55 // -------------------------------------------------------------------------------------------------
56 void LinVarChaModel2GeoVaLs::multiplyInverse(const Increment & dxin, Increment & dxout) const {
57  util::Timer timer(classname(), "multiplyInverse");
58  oops::Log::trace() << classname() << " multiplyInverse starting" << std::endl;
59  dxout = dxin;
60  oops::Log::trace() << classname() << " multiplyInverse done" << std::endl;
61 }
62 // -------------------------------------------------------------------------------------------------
63 void LinVarChaModel2GeoVaLs::multiplyAD(const Increment & dxin, Increment & dxout) const {
64  util::Timer timer(classname(), "multiplyAD");
65  oops::Log::trace() << classname() << " multiplyAD starting" << std::endl;
67  dxin.toFortran(), dxout.toFortran());
68  oops::Log::trace() << classname() << " multiplyAD done" << std::endl;
69 }
70 // -------------------------------------------------------------------------------------------------
72  util::Timer timer(classname(), "multiplyInverseAD");
73  oops::Log::trace() << classname() << " multiplyInverseAD starting" << std::endl;
74  dxout = dxin;
75  oops::Log::trace() << classname() << " multiplyInverseAD done" << std::endl;
76 }
77 // -------------------------------------------------------------------------------------------------
78 void LinVarChaModel2GeoVaLs::print(std::ostream & os) const {
79  os << classname() << " variable change";
80 }
81 // -------------------------------------------------------------------------------------------------
82 } // namespace fv3jedi
Traits.h
fv3jedi::Increment::toFortran
int & toFortran()
Definition: Increment.h:110
fv3jedi::LinVarChaModel2GeoVaLs::multiplyAD
void multiplyAD(const Increment &, Increment &) const
Definition: LinVarChaModel2GeoVaLs.cc:63
fv3jedi::LinVarChaModel2GeoVaLs::keyFtnConfig_
F90lvc_M2G keyFtnConfig_
Definition: LinVarChaModel2GeoVaLs.h:49
fv3jedi::LinVarChaModel2GeoVaLs::LinVarChaModel2GeoVaLs
LinVarChaModel2GeoVaLs(const State &, const State &, const Geometry &, const eckit::Configuration &)
Definition: LinVarChaModel2GeoVaLs.cc:29
Utilities.h
fv3jedi::makerLinVarChaModel2GeoVaLs_
static oops::LinearVariableChangeMaker< Traits, oops::LinearVariableChange< Traits, LinVarChaModel2GeoVaLs > > makerLinVarChaModel2GeoVaLs_("Model2GeoVaLs")
fv3jedi::LinVarChaModel2GeoVaLs::~LinVarChaModel2GeoVaLs
~LinVarChaModel2GeoVaLs()
Definition: LinVarChaModel2GeoVaLs.cc:41
Geometry.h
fv3jedi::fv3jedi_lvc_model2geovals_multiply_f90
void fv3jedi_lvc_model2geovals_multiply_f90(const F90lvc_M2G &, const F90geom &, const F90inc &, const F90inc &)
fv3jedi::fv3jedi_lvc_model2geovals_create_f90
void fv3jedi_lvc_model2geovals_create_f90(const F90lvc_M2G &, const F90geom &, const F90state &, const F90state &, const eckit::Configuration *const *)
fv3jedi::LinVarChaModel2GeoVaLs::classname
static const std::string classname()
Definition: LinVarChaModel2GeoVaLs.h:36
fv3jedi::LinVarChaModel2GeoVaLs::multiply
void multiply(const Increment &, Increment &) const
Definition: LinVarChaModel2GeoVaLs.cc:48
fv3jedi::fv3jedi_lvc_model2geovals_delete_f90
void fv3jedi_lvc_model2geovals_delete_f90(F90lvc_M2G &)
fv3jedi::LinVarChaModel2GeoVaLs::print
void print(std::ostream &) const override
Definition: LinVarChaModel2GeoVaLs.cc:78
fv3jedi::State::toFortran
int & toFortran()
Definition: State.h:87
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::Increment
Definition: Increment.h:52
fv3jedi::State
Definition: State.h:45
fv3jedi::LinVarChaModel2GeoVaLs::multiplyInverseAD
void multiplyInverseAD(const Increment &, Increment &) const
Definition: LinVarChaModel2GeoVaLs.cc:71
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
LinVarChaModel2GeoVaLs.h
fv3jedi::fv3jedi_lvc_model2geovals_multiplyadjoint_f90
void fv3jedi_lvc_model2geovals_multiplyadjoint_f90(const F90lvc_M2G &, const F90geom &, const F90inc &, const F90inc &)
fv3jedi::LinVarChaModel2GeoVaLs::multiplyInverse
void multiplyInverse(const Increment &, Increment &) const
Definition: LinVarChaModel2GeoVaLs.cc:56
fv3jedi::LinVarChaModel2GeoVaLs::geom_
std::shared_ptr< const Geometry > geom_
Definition: LinVarChaModel2GeoVaLs.h:48
State.h