14 #include "ioda/ObsVector.h"
16 #include "oops/base/Variables.h"
17 #include "oops/util/DateTime.h"
18 #include "oops/util/Duration.h"
19 #include "oops/util/Logger.h"
21 #include "ufo/GeoVaLs.h"
22 #include "ufo/Locations.h"
23 #include "ufo/ObsDiagnostics.h"
34 const eckit::Configuration & config)
39 eckit::LocalConfiguration(config,
"obs operator")).operatorParameters)),
42 oops::Log::trace() <<
"ObsTimeOper creating" << std::endl;
44 util::DateTime windowBegin(
odb_.windowStart());
45 util::DateTime windowEnd(
odb_.windowEnd());
47 util::Duration windowSub;
48 windowSub = util::Duration(config.getString(
"windowSub"));
49 util::Duration window = windowEnd - windowBegin;
51 if (window == windowSub) {
52 ABORT(
"Time Interpolation of obs not implemented when assimilation window = subWindow");
54 oops::Log::trace() <<
"ObsTimeOper created" << std::endl;
60 oops::Log::trace() <<
"ObsTimeOper destructed" << std::endl;
67 oops::Log::trace() <<
"entered ObsOperatorTime::locations" << std::endl;
80 oops::Log::trace() <<
"ObsTimeOper: simulateObs entered" << std::endl;
82 oops::Log::trace() << gv << std::endl;
89 oops::Log::trace() << gv1 << std::endl;
90 oops::Log::trace() << gv2 << std::endl;
97 oops::Log::trace() <<
"ObsTimeOper: simulateObs exit " << std::endl;
103 os <<
"ObsTimeOper::print not implemented";
GeoVaLs: geophysical values at locations.
void split(GeoVaLs &, GeoVaLs &) const
Split two GeoVaLs.
const oops::Variables & getVars() const
Contains a polymorphic parameter holding an instance of a subclass of ObsOperatorParametersBase.
void print(std::ostream &) const override
ObsTimeOper(const ioda::ObsSpace &, const eckit::Configuration &)
void simulateObs(const GeoVaLs &, ioda::ObsVector &, ObsDiagnostics &) const override
Obs Operator.
std::unique_ptr< ObsOperatorBase > actualoperator_
const ioda::ObsSpace & odb_
std::unique_ptr< Locations > locations() const override
Locations for GeoVaLs.
std::vector< std::vector< float > > timeWeights_
std::vector< std::vector< float > > timeWeightCreate(const ioda::ObsSpace &odb_, const eckit::Configuration &config)
static ObsOperatorMaker< ObsTimeOper > makerTimeOper_("TimeOperLinInterp")