IODA
src/distribution/Distribution.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef DISTRIBUTION_DISTRIBUTION_H_
9 #define DISTRIBUTION_DISTRIBUTION_H_
10 
11 #include <vector>
12 
13 #include "eckit/mpi/Comm.h"
14 
15 namespace ioda {
16 
17 // ---------------------------------------------------------------------
18 /*!
19  * \brief class for distributing obs across multiple process elements
20  *
21  * \details This Distribution class is a base class where various subclasses of
22  * this class define different methods for distributing obs.
23  *
24  * The subclasses of this base class need to fill in the isMyRecord method
25  * with the appropriate function. The client will use the isMyRecord method
26  * to determine what records to keep when reading in observations.
27  *
28  * \author Xin Zhang (JCSDA)
29  */
30 class Distribution {
31  public:
32  explicit Distribution(const eckit::mpi::Comm & Comm);
33  virtual ~Distribution() = 0;
34 
35  virtual bool isMyRecord(std::size_t RecNum) const = 0;
36  virtual bool isDistributed() const = 0;
37 
38  protected:
39  /*! \brief Local MPI communicator */
40  const eckit::mpi::Comm & comm_;
41 };
42 
43 } // namespace ioda
44 
45 #endif // DISTRIBUTION_DISTRIBUTION_H_
ioda::Distribution
class for distributing obs across multiple process elements
Definition: src/distribution/Distribution.h:30
ioda::Distribution::Distribution
Distribution(const eckit::mpi::Comm &Comm)
Definition: Distribution.cc:17
ioda
Definition: IodaUtils.cc:13
ioda::Distribution::comm_
const eckit::mpi::Comm & comm_
Local MPI communicator.
Definition: src/distribution/Distribution.h:40
ioda::Distribution::isMyRecord
virtual bool isMyRecord(std::size_t RecNum) const =0
ioda::Distribution::~Distribution
virtual ~Distribution()=0
Definition: Distribution.cc:23
ioda::Distribution::isDistributed
virtual bool isDistributed() const =0