11 #ifndef OOPS_BASE_OBSSPACES_H_
12 #define OOPS_BASE_OBSSPACES_H_
21 #include "eckit/config/LocalConfiguration.h"
22 #include "eckit/exception/Exceptions.h"
23 #include "eckit/geometry/Point2.h"
27 #include "oops/util/DateTime.h"
28 #include "oops/util/Logger.h"
29 #include "oops/util/ObjectCounter.h"
30 #include "oops/util/Printable.h"
31 #include "oops/util/Timer.h"
36 template <
typename OBS>
38 private util::ObjectCounter<ObsSpaces<OBS> > {
42 static const std::string
classname() {
return "oops::ObsSpaces";}
44 ObsSpaces(
const eckit::Configuration &,
const eckit::mpi::Comm &,
45 const util::DateTime &,
const util::DateTime &,
62 void print(std::ostream &)
const;
64 std::vector<std::shared_ptr<ObsSpace_> >
spaces_;
71 template <
typename OBS>
73 const util::DateTime & bgn,
const util::DateTime & end,
74 const eckit::mpi::Comm &
time)
75 : spaces_(0), wbgn_(bgn), wend_(end)
77 std::vector<eckit::LocalConfiguration> typeconfs = conf.getSubConfigurations();
78 for (std::size_t jj = 0; jj < typeconfs.size(); ++jj) {
79 eckit::LocalConfiguration obsconf(typeconfs[jj],
"obs space");
80 Log::debug() <<
"ObsSpaces::ObsSpaces : conf " << obsconf << std::endl;
81 std::shared_ptr<ObsSpace_> tmp(
new ObsSpace_(obsconf, comm, bgn, end,
time));
89 template <
typename OBS>
94 template <
typename OBS>
96 for (std::size_t jj = 0; jj < spaces_.size(); ++jj) {
103 template <
typename OBS>
105 for (std::size_t jj = 0; jj < spaces_.size(); ++jj) {
ObsSpace_ & operator[](const std::size_t ii)
const util::DateTime wend_
ObsSpace< OBS > ObsSpace_
const util::DateTime wbgn_
static const std::string classname()
std::vector< std::shared_ptr< ObsSpace_ > > spaces_
ObsSpaces(const eckit::Configuration &, const eckit::mpi::Comm &, const util::DateTime &, const util::DateTime &, const eckit::mpi::Comm &time=oops::mpi::myself())
void save() const
Save files.
const ObsSpace_ & operator[](const std::size_t ii) const
const util::DateTime & windowStart() const
Assimilation window.
const util::DateTime & windowEnd() const
std::size_t size() const
Access.
void print(std::ostream &) const
const eckit::mpi::Comm & myself()
Default communicator with each MPI task by itself.
The namespace for the main oops code.