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;
144 #endif // OOPS_INTERFACE_LINEAROBSOPERATOR_H_