11 #include "eckit/config/Configuration.h"
13 #include "oops/interface/LinearVariableChange.h"
14 #include "oops/util/abor1_cpp.h"
15 #include "oops/util/Logger.h"
28 static oops::LinearVariableChangeMaker<Traits,
29 oops::LinearVariableChange<Traits, HorizFilt> >
36 const eckit::Configuration & conf):
38 vars_(conf,
"filter variables") {
39 const eckit::Configuration * configc = &conf;
42 State traj_at_geomres(geom, traj);
52 niter_ = configc->getInt(
"niter");
62 for (
unsigned int iter = 0; iter <
niter_; ++iter) {
79 for (
unsigned int iter = 0; iter <
niter_; ++iter) {
94 os <<
"SOCA HorizFilt";
Geometry handles geometry for SOCA model.
void print(std::ostream &) const override
HorizFilt(const State &, const State &, const Geometry &, const eckit::Configuration &)
void multiply(const Increment &, Increment &) const
Perform linear transforms.
void multiplyInverseAD(const Increment &, Increment &) const
void multiplyInverse(const Increment &, Increment &) const
void multiplyAD(const Increment &, Increment &) const
std::unique_ptr< const Geometry > geom_
Increment Class: Difference between two states.
void soca_horizfilt_multad_f90(const F90balopmat &, const F90flds &, F90flds &, const F90geom &)
void soca_horizfilt_delete_f90(F90balopmat &)
void soca_horizfilt_setup_f90(F90balopmat &, const eckit::Configuration *const *, const F90geom &, const F90flds &, const oops::Variables &)
void soca_horizfilt_mult_f90(const F90balopmat &, const F90flds &, F90flds &, const F90geom &)
static oops::LinearVariableChangeMaker< Traits, oops::LinearVariableChange< Traits, HorizFilt > > makerLinearVariableChangeHorizFilt_("HorizFiltSOCA")