11 #ifndef OOPS_INTERFACE_LINEAROBSOPERATOR_H_ 12 #define OOPS_INTERFACE_LINEAROBSOPERATOR_H_ 16 #include <boost/noncopyable.hpp> 17 #include <boost/scoped_ptr.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 MODEL>
37 private boost::noncopyable,
38 private util::ObjectCounter<LinearObsOperator<MODEL> > {
47 static const std::string
classname() {
return "oops::LinearObsOperator";}
64 void print(std::ostream &)
const;
65 boost::scoped_ptr<LinearObsOper_>
oper_;
70 template <
typename MODEL>
72 Log::trace() <<
"LinearObsOperator<MODEL>::LinearObsOperator starting" << std::endl;
73 util::Timer timer(
classname(),
"LinearObsOperator");
75 Log::trace() <<
"LinearObsOperator<MODEL>::LinearObsOperator done" << std::endl;
80 template <
typename MODEL>
82 Log::trace() <<
"LinearObsOperator<MODEL>::~LinearObsOperator starting" << std::endl;
83 util::Timer timer(classname(),
"~LinearObsOperator");
85 Log::trace() <<
"LinearObsOperator<MODEL>::~LinearObsOperator done" << std::endl;
90 template <
typename MODEL>
92 Log::trace() <<
"LinearObsOperator<MODEL>::setTrajectory starting" << std::endl;
93 util::Timer timer(classname(),
"setTrajectory");
95 Log::trace() <<
"LinearObsOperator<MODEL>::setTrajectory done" << std::endl;
100 template <
typename MODEL>
103 Log::trace() <<
"LinearObsOperator<MODEL>::simulateObsTL starting" << std::endl;
104 util::Timer timer(classname(),
"simulateObsTL");
106 Log::trace() <<
"LinearObsOperator<MODEL>::simulateObsTL done" << std::endl;
111 template <
typename MODEL>
114 Log::trace() <<
"LinearObsOperator<MODEL>::simulateObsAD starting" << std::endl;
115 util::Timer timer(classname(),
"simulateObsAD");
117 Log::trace() <<
"LinearObsOperator<MODEL>::simulateObsAD done" << std::endl;
122 template <
typename MODEL>
124 Log::trace() <<
"LinearObsOperator<MODEL>::variables starting" << std::endl;
125 util::Timer timer(classname(),
"variables");
126 return oper_->variables();
131 template<
typename MODEL>
133 Log::trace() <<
"LinearObsOperator<MODEL>::print starting" << std::endl;
134 util::Timer timer(classname(),
"print");
136 Log::trace() <<
"LinearObsOperator<MODEL>::print done" << std::endl;
143 #endif // OOPS_INTERFACE_LINEAROBSOPERATOR_H_ void simulateObsTL(const GeoVaLs_ &, ObsVector_ &, const ObsAuxIncrement_ &) const
const GeoVaLs_ & geovals() const
Interfacing.
const Variables & variables() const
Other.
LinearObsOperator(const ObsSpace_ &)
const eckit::Configuration & config() const
const ObsAuxIncrement_ & obsauxincrement() const
Interfacing.
The namespace for the main oops code.
void setTrajectory(const GeoVaLs_ &, const ObsAuxControl_ &)
Obs Operators.
ObsAuxControl< MODEL > ObsAuxControl_
GeoVaLs< MODEL > GeoVaLs_
ObservationSpace< MODEL > ObsSpace_
ObsVector_ & obsvector()
Interfacing.
void print(std::ostream &) const
static const std::string classname()
ObsVector< MODEL > ObsVector_
MODEL::LinearObsOperator LinearObsOper_
ObsSpace_ & observationspace() const
Interfacing.
boost::scoped_ptr< LinearObsOper_ > oper_
void simulateObsAD(GeoVaLs_ &, const ObsVector_ &, ObsAuxIncrement_ &) const
const ObsAuxControl_ & obsauxcontrol() const
Interfacing.
const LinearObsOper_ & linearobsoperator() const
Interfacing.
ObsAuxIncrement< MODEL > ObsAuxIncrement_