12 #ifndef OOPS_INTERFACE_OBSSPACE_H_
13 #define OOPS_INTERFACE_OBSSPACE_H_
19 #include "eckit/geometry/Point2.h"
22 #include "oops/util/Logger.h"
23 #include "oops/util/ObjectCounter.h"
24 #include "oops/util/Printable.h"
25 #include "oops/util/Timer.h"
40 template <
typename OBS>
42 private util::ObjectCounter<ObsSpace<OBS> > {
47 static const std::string
classname() {
return "oops::ObsSpace";}
49 ObsSpace(
const eckit::Configuration &,
const eckit::mpi::Comm &,
50 const util::DateTime &,
const util::DateTime &,
53 const eckit::Configuration &);
56 const eckit::Configuration &);
76 void print(std::ostream &)
const;
84 template <
typename OBS>
86 const eckit::mpi::Comm & comm,
87 const util::DateTime & bgn,
88 const util::DateTime & end,
89 const eckit::mpi::Comm & time) : obsdb_(), time_(time) {
90 Log::trace() <<
"ObsSpace<OBS>::ObsSpace starting" << std::endl;
91 util::Timer timer(
classname(),
"ObsSpace");
93 Log::trace() <<
"ObsSpace<OBS>::ObsSpace done" << std::endl;
98 template <
typename OBS>
100 const eckit::geometry::Point2 & center,
101 const eckit::Configuration & conf) : obsdb_(), time_(
oops::mpi::
myself()) {
102 Log::trace() <<
"ObsSpace<OBS>::ObsSpace (local) starting" << std::endl;
103 util::Timer timer(
classname(),
"ObsSpace");
105 Log::trace() <<
"ObsSpace<OBS>::ObsSpace (local) done" << std::endl;
110 template <
typename OBS>
112 const eckit::Configuration & conf): obsdb_(), time_(
oops::mpi::
myself()) {
113 Log::trace() <<
"ObsSpace<OBS>::ObsSpace (local) derived state starting" << std::endl;
114 util::Timer timer(
classname(),
"ObsSpace");
116 Log::trace() <<
"ObsSpace<OBS>::ObsSpace (local) derived state done" << std::endl;
121 template <
typename OBS>
123 Log::trace() <<
"ObsSpace<OBS>::ObsSpace starting" << std::endl;
124 util::Timer timer(
classname(),
"ObsSpace");
126 Log::trace() <<
"ObsSpace<OBS>::ObsSpace done" << std::endl;
131 template <
typename OBS>
133 Log::trace() <<
"ObsSpace<OBS>::~ObsSpace starting" << std::endl;
134 util::Timer timer(classname(),
"~ObsSpace");
136 Log::trace() <<
"ObsSpace<OBS>::~ObsSpace done" << std::endl;
141 template <
typename OBS>
143 Log::trace() <<
"ObsSpace<OBS>::print starting" << std::endl;
144 util::Timer timer(classname(),
"print");
146 Log::trace() <<
"ObsSpace<OBS>::print done" << std::endl;
151 template <
typename OBS>
153 Log::trace() <<
"ObsSpace<OBS>::obsvariables starting" << std::endl;
154 util::Timer timer(classname(),
"obsvariables");
155 return obsdb_->obsvariables();
160 template <
typename OBS>
162 Log::trace() <<
"ObsSpace<OBS>::printJo starting" << std::endl;
163 util::Timer timer(classname(),
"printJo");
165 Log::trace() <<
"ObsSpace<OBS>::printJo done" << std::endl;
172 #endif // OOPS_INTERFACE_OBSSPACE_H_