8 #ifndef DISTRIBUTION_INEFFICIENTDISTRIBUTION_H_ 
    9 #define DISTRIBUTION_INEFFICIENTDISTRIBUTION_H_ 
   13 #include "eckit/mpi/Comm.h" 
   15 #include "oops/util/Logger.h" 
   17 #include "ioda/distribution/Distribution.h" 
   32                            const eckit::Configuration & config);
 
   37      bool isMyRecord(std::size_t RecNum)
 const override {
return true;};
 
   39      void patchObs(std::vector<bool> &) 
const override;
 
   44      void min(
int & x)
 const override {}
 
   45      void min(std::size_t & x)
 const override {}
 
   46      void min(
float & x)
 const override {}
 
   47      void min(
double & x)
 const override {}
 
   48      void min(std::vector<int> & x)
 const override {}
 
   49      void min(std::vector<std::size_t> & x)
 const override {}
 
   50      void min(std::vector<float> & x)
 const override {}
 
   51      void min(std::vector<double> & x)
 const override {}
 
   53      void max(
int & x)
 const override {}
 
   54      void max(std::size_t & x)
 const override {}
 
   55      void max(
float & x)
 const override {}
 
   56      void max(
double & x)
 const override {}
 
   57      void max(std::vector<int> & x)
 const override {}
 
   58      void max(std::vector<std::size_t> & x)
 const override {}
 
   59      void max(std::vector<float> & x)
 const override {}
 
   60      void max(std::vector<double> & x)
 const override {}
 
   63      void allGatherv(std::vector<size_t> &x)
 const override {}
 
   66      void allGatherv(std::vector<double> &x)
 const override {}
 
   67      void allGatherv(std::vector<util::DateTime> &x)
 const override {}
 
   68      void allGatherv(std::vector<std::string> &x)
 const override {}
 
   75      std::unique_ptr<Accumulator<int>>
 
   77      std::unique_ptr<Accumulator<std::size_t>>
 
   79      std::unique_ptr<Accumulator<float>>
 
   81      std::unique_ptr<Accumulator<double>>
 
   83      std::unique_ptr<Accumulator<std::vector<int>>>
 
   85      std::unique_ptr<Accumulator<std::vector<std::size_t>>>
 
   87      std::unique_ptr<Accumulator<std::vector<float>>>
 
   89      std::unique_ptr<Accumulator<std::vector<double>>>
 
   97      const std::string 
distName_ = 
"InefficientDistribution";
 
class for distributing obs across multiple process elements
Inefficient distribution.
void min(std::vector< double > &x) const override
void min(std::vector< std::size_t > &x) const override
void patchObs(std::vector< bool > &) const override
Sets each element of the provided vector to true if the corresponding location is a "patch obs",...
void max(double &x) const override
void max(std::vector< double > &x) const override
void allGatherv(std::vector< util::DateTime > &x) const override
void allGatherv(std::vector< double > &x) const override
bool isMyRecord(std::size_t RecNum) const override
Returns true if record RecNum has been assigned to the calling PE during a previous call to assignRec...
void max(int &x) const override
Calculates the global maximum (over all locations on all PEs) of a location-dependent quantity.
void max(std::size_t &x) const override
size_t globalUniqueConsecutiveLocationIndex(size_t loc) const override
Map the index of a location held on the calling process to the index of the corresponding element of ...
void max(float &x) const override
void allGatherv(std::vector< float > &x) const override
void allGatherv(std::vector< size_t > &x) const override
Gather observation data from all processes and deliver the combined data to all processes.
void max(std::vector< int > &x) const override
Calculates the global maxima (over all locations on all PEs) of multiple location-dependent quantitie...
~InefficientDistribution()
void max(std::vector< float > &x) const override
const std::string distName_
std::string name() const override
void min(std::vector< float > &x) const override
void allGatherv(std::vector< int > &x) const override
std::unique_ptr< Accumulator< int > > createAccumulatorImpl(int init) const override
Create an object that can be used to calculate the sum of a location-dependent quantity over location...
void min(std::vector< int > &x) const override
Calculates the global minima (over all locations on all PEs) of multiple location-dependent quantitie...
void min(double &x) const override
void min(float &x) const override
void max(std::vector< std::size_t > &x) const override
void min(std::size_t &x) const override
void min(int &x) const override
Calculates the global minimum (over all locations on all PEs) of a location-dependent quantity.
void allGatherv(std::vector< std::string > &x) const override
bool isIdentity() const override
Returns true if the distribution assigns all records to all PEs, false otherwise.
InefficientDistribution(const eckit::mpi::Comm &Comm, const eckit::Configuration &config)
std::unique_ptr< Accumulator< T > > createAccumulatorImplT(const T &init) const