SOCA
LinearModel2GeoVaLs.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2021-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 
9 #include "eckit/config/Configuration.h"
10 
11 #include "oops/interface/LinearVariableChange.h"
12 #include "oops/util/abor1_cpp.h"
13 
14 #include "soca/Geometry/Geometry.h"
16 #include "soca/State/State.h"
17 #include "soca/Traits.h"
20 
21 namespace soca {
22 
23 static oops::LinearVariableChangeMaker<Traits,
24  oops::LinearVariableChange<Traits, LinearModel2GeoVaLs> >
26 
27 // -----------------------------------------------------------------------------
28 
30  const Geometry &geom,
31  const eckit::Configuration &conf)
32  : geom_(new Geometry(geom)) {
33 }
34 
35 // -----------------------------------------------------------------------------
36 
38 }
39 
40 // -----------------------------------------------------------------------------
41 
43  Increment &dxout) const {
45  dxin.toFortran(), dxout.toFortran());
46 }
47 
48 // -----------------------------------------------------------------------------
49 
51  Increment &) const {
52  util::abor1_cpp("LinearModel2GeoVaLs::multiplyInverse not implemented");
53 }
54 
55 // -----------------------------------------------------------------------------
56 
58  Increment &dxout) const {
60  dxin.toFortran(),
61  dxout.toFortran());
62 }
63 
64 // -----------------------------------------------------------------------------
65 
67  Increment &) const {
68  util::abor1_cpp("LinearModel2GeoVaLs::multiplyInverseAD not implemented");
69 }
70 
71 // -----------------------------------------------------------------------------
72 
73 } // namespace soca
Geometry handles geometry for SOCA model.
Definition: Geometry.h:48
Increment Class: Difference between two states.
Definition: Increment.h:61
int & toFortran()
Definition: Increment.h:112
void multiplyInverseAD(const Increment &, Increment &) const
void multiplyInverse(const Increment &, Increment &) const
void multiplyAD(const Increment &, Increment &) const
LinearModel2GeoVaLs(const State &, const State &, const Geometry &, const eckit::Configuration &)
std::unique_ptr< const Geometry > geom_
void multiply(const Increment &, Increment &) const
SOCA model state.
Definition: State.h:48
void soca_model2geovals_linear_changevar_f90(const F90geom &, const F90flds &, F90flds &)
void soca_model2geovals_linear_changevarAD_f90(const F90geom &, const F90flds &, F90flds &)
static oops::LinearVariableChangeMaker< Traits, oops::LinearVariableChange< Traits, LinearModel2GeoVaLs > > makerLinearVariableChangeModel2GeoVaLs_("Model2GeoVaLs")