8 #ifndef OOPS_INTERFACE_LINEARGETVALUES_H_
9 #define OOPS_INTERFACE_LINEARGETVALUES_H_
15 #include "eckit/config/Configuration.h"
22 #include "oops/util/DateTime.h"
23 #include "oops/util/Duration.h"
24 #include "oops/util/ObjectCounter.h"
25 #include "oops/util/Printable.h"
26 #include "oops/util/Timer.h"
33 template <
typename MODEL,
typename OBS>
35 private util::ObjectCounter<LinearGetValues<MODEL, OBS> > {
44 static const std::string
classname() {
return "oops::LinearGetValues";}
65 void print(std::ostream &)
const;
73 template<
typename MODEL,
typename OBS>
76 const eckit::Configuration & linearGetValuesConf)
78 Log::trace() <<
"LinearGetValues<MODEL, OBS>::LinearGetValues starting" << std::endl;
79 util::Timer timer(
classname(),
"LinearGetValues");
81 linearGetValuesConf));
82 Log::trace() <<
"LinearGetValues<MODEL, OBS>::LinearGetValues done" << std::endl;
87 template<
typename MODEL,
typename OBS>
89 Log::trace() <<
"LinearGetValues<MODEL, OBS>::~LinearGetValues starting" << std::endl;
90 util::Timer timer(classname(),
"~LinearGetValues");
91 lingetvalues_.reset();
92 Log::trace() <<
"LinearGetValues<MODEL, OBS>::~LinearGetValues done" << std::endl;
97 template<
typename MODEL,
typename OBS>
99 const util::DateTime & t2,
GeoVaLs_ & gvals) {
100 Log::trace() <<
"LinearGetValues<MODEL, OBS>::setTrajectory starting" << std::endl;
101 util::Timer timer(classname(),
"setTrajectory");
102 lingetvalues_->setTrajectory(state.
state(), t1, t2, gvals.
geovals());
103 Log::trace() <<
"LinearGetValues<MODEL, OBS>::setTrajectory done" << std::endl;
108 template<
typename MODEL,
typename OBS>
110 const util::DateTime & t2,
GeoVaLs_ & gvals)
const {
111 Log::trace() <<
"LinearGetValues<MODEL, OBS>::fillGeoVaLsTL starting" << std::endl;
112 util::Timer timer(classname(),
"fillGeoVaLsTL");
114 Log::trace() <<
"LinearGetValues<MODEL, OBS>::fillGeoVaLsTL done" << std::endl;
119 template<
typename MODEL,
typename OBS>
121 const util::DateTime & t2,
const GeoVaLs_ & gvals)
const {
122 Log::trace() <<
"LinearGetValues<MODEL, OBS>::fillGeoVaLsAD starting" << std::endl;
123 util::Timer timer(classname(),
"fillGeoVaLsAD");
125 Log::trace() <<
"LinearGetValues<MODEL, OBS>::fillGeoVaLsAD done" << std::endl;
130 template<
typename MODEL,
typename OBS>
132 Log::trace() <<
"LinearGetValues<MODEL, OBS>::print starting" << std::endl;
133 util::Timer timer(classname(),
"print");
134 os << *lingetvalues_;
135 Log::trace() <<
"LinearGetValues<MODEL, OBS>::print done" << std::endl;
const GeoVaLs_ & geovals() const
Interfacing.
Geometry class used in oops; subclass of interface class interface::Geometry.
Increment class used in oops.
sets trajectory and computes TL and AD for GetValues
static const std::string classname()
const LinearGetValues_ & lingetvalues() const
void fillGeoVaLsTL(const Increment_ &, const util::DateTime &, const util::DateTime &, GeoVaLs_ &) const
compute TL of GetValues
Locations< OBS > Locations_
Increment< MODEL > Increment_
LinearGetValues_ & lingetvalues()
Interfacing.
Geometry< MODEL > Geometry_
MODEL::LinearGetValues LinearGetValues_
std::unique_ptr< LinearGetValues_ > lingetvalues_
virtual ~LinearGetValues()
void print(std::ostream &) const
LinearGetValues(const Geometry_ &, const Locations_ &, const eckit::Configuration &)
Constructor, destructor.
void fillGeoVaLsAD(Increment_ &, const util::DateTime &, const util::DateTime &, const GeoVaLs_ &) const
compute AD of GetValues
void setTrajectory(const State_ &, const util::DateTime &, const util::DateTime &, GeoVaLs_ &)
set trajectory for GetValues
Locations of observations for observation operator.
const Locations_ & locations() const
Interfacing.
State class used in oops; subclass of interface class interface::State.
const Geometry_ & geometry() const
const Increment_ & increment() const
State_ & state()
Accessor.
The namespace for the main oops code.