8 #ifndef UFO_LOCATIONS_H_
9 #define UFO_LOCATIONS_H_
16 #include "eckit/mpi/Comm.h"
17 #include "ioda/distribution/Distribution.h"
18 #include "oops/util/DateTime.h"
19 #include "oops/util/ObjectCounter.h"
20 #include "oops/util/Printable.h"
30 private util::ObjectCounter<Locations> {
32 static const std::string
classname() {
return "ufo::Locations";}
36 const std::vector<util::DateTime> &
times,
37 std::shared_ptr<const ioda::Distribution>);
39 Locations(
const eckit::Configuration &,
const eckit::mpi::Comm &);
45 std::vector<bool>
isInTimeWindow(
const util::DateTime & t1,
const util::DateTime & t2)
const;
53 const std::vector<float> &
lons()
const {
return lons_;}
55 const std::vector<float> &
lats()
const {
return lats_;}
57 const std::vector<util::DateTime> &
times()
const {
return times_;}
61 void print(std::ostream & os)
const override;
63 std::shared_ptr<const ioda::Distribution>
dist_;
Locations class to handle simple lat-lon-time locations.
size_t size() const
size of locations
static const std::string classname()
std::shared_ptr< const ioda::Distribution > dist_
const std::vector< util::DateTime > & times() const
accessor to DateTimes (on current MPI task)
std::vector< bool > isInTimeWindow(const util::DateTime &t1, const util::DateTime &t2) const
find which observations are in the (t1, t2] time window
Locations & operator+=(const Locations &)
append locations with more locations
const std::vector< float > & lons() const
accessor to observation longitudes (on current MPI task)
std::vector< float > lats_
longitudes on current MPI task
std::vector< util::DateTime > times_
latitudes on current MPI task
const std::vector< float > & lats() const
accessor to observation latitudes (on current MPI task)
const std::shared_ptr< const ioda::Distribution > & distribution() const
accessor to the observations MPI distribution
Locations(const std::vector< float > &lons, const std::vector< float > &lats, const std::vector< util::DateTime > ×, std::shared_ptr< const ioda::Distribution >)
constructor from passed lons, lats, times
void print(std::ostream &os) const override
std::vector< float > lons_
observations MPI distribution