11 #ifndef OOPS_INTERFACE_LINEAROBSOPERATOR_H_
12 #define OOPS_INTERFACE_LINEAROBSOPERATOR_H_
17 #include <boost/noncopyable.hpp>
25 #include "oops/util/DateTime.h"
26 #include "oops/util/Logger.h"
27 #include "oops/util/ObjectCounter.h"
28 #include "oops/util/Printable.h"
29 #include "oops/util/Timer.h"
35 template <
typename OBS>
37 private boost::noncopyable,
38 private util::ObjectCounter<LinearObsOperator<OBS> > {
47 static const std::string
classname() {
return "oops::LinearObsOperator";}
64 void print(std::ostream &)
const;
65 std::unique_ptr<LinearObsOper_>
oper_;
70 template <
typename OBS>
72 const eckit::Configuration & config): oper_() {
73 Log::trace() <<
"LinearObsOperator<OBS>::LinearObsOperator starting" << std::endl;
74 util::Timer timer(
classname(),
"LinearObsOperator");
76 Log::trace() <<
"LinearObsOperator<OBS>::LinearObsOperator done" << std::endl;
81 template <
typename OBS>
83 Log::trace() <<
"LinearObsOperator<OBS>::~LinearObsOperator starting" << std::endl;
84 util::Timer timer(classname(),
"~LinearObsOperator");
86 Log::trace() <<
"LinearObsOperator<OBS>::~LinearObsOperator done" << std::endl;
91 template <
typename OBS>
93 Log::trace() <<
"LinearObsOperator<OBS>::setTrajectory starting" << std::endl;
94 util::Timer timer(classname(),
"setTrajectory");
96 Log::trace() <<
"LinearObsOperator<OBS>::setTrajectory done" << std::endl;
101 template <
typename OBS>
104 Log::trace() <<
"LinearObsOperator<OBS>::simulateObsTL starting" << std::endl;
105 util::Timer timer(classname(),
"simulateObsTL");
107 Log::trace() <<
"LinearObsOperator<OBS>::simulateObsTL done" << std::endl;
112 template <
typename OBS>
115 Log::trace() <<
"LinearObsOperator<OBS>::simulateObsAD starting" << std::endl;
116 util::Timer timer(classname(),
"simulateObsAD");
118 Log::trace() <<
"LinearObsOperator<OBS>::simulateObsAD done" << std::endl;
123 template <
typename OBS>
125 Log::trace() <<
"LinearObsOperator<OBS>::requiredVars starting" << std::endl;
126 util::Timer timer(classname(),
"requiredVars");
127 return oper_->requiredVars();
132 template<
typename OBS>
134 Log::trace() <<
"LinearObsOperator<OBS>::print starting" << std::endl;
135 util::Timer timer(classname(),
"print");
137 Log::trace() <<
"LinearObsOperator<OBS>::print done" << std::endl;
const GeoVaLs_ & geovals() const
Interfacing.
const LinearObsOper_ & linearobsoperator() const
Interfacing.
ObsVector< OBS > ObsVector_
void simulateObsTL(const GeoVaLs_ &, ObsVector_ &, const ObsAuxIncrement_ &) const
OBS::LinearObsOperator LinearObsOper_
void print(std::ostream &) const
std::unique_ptr< LinearObsOper_ > oper_
const Variables & requiredVars() const
Other.
void simulateObsAD(GeoVaLs_ &, const ObsVector_ &, ObsAuxIncrement_ &) const
ObsAuxIncrement< OBS > ObsAuxIncrement_
ObsAuxControl< OBS > ObsAuxControl_
static const std::string classname()
ObsSpace< OBS > ObsSpace_
void setTrajectory(const GeoVaLs_ &, const ObsAuxControl_ &)
Obs Operators.
LinearObsOperator(const ObsSpace_ &, const eckit::Configuration &)
const ObsAuxControl_ & obsauxcontrol() const
Interfacing.
const ObsAuxIncrement_ & obsauxincrement() const
Interfacing.
ObsSpace_ & obsspace() const
Interfacing.
ObsVector_ & obsvector()
Interfacing.
The namespace for the main oops code.