8 #include "ioda/distribution/InefficientDistribution.h" 
   14 #include <boost/make_unique.hpp> 
   16 #include "ioda/distribution/DistributionFactory.h" 
   17 #include "ioda/distribution/InefficientDistributionAccumulator.h" 
   18 #include "oops/util/DateTime.h" 
   19 #include "oops/util/Logger.h" 
   30                                                  const eckit::Configuration & config)
 
   32   oops::Log::trace() << 
"InefficientDistribution constructed" << std::endl;
 
   37   oops::Log::trace() << 
"InefficientDistribution destructed" << std::endl;
 
   43   size_t MyRank = 
comm_.rank();
 
   45     std::fill(patchObsVec.begin(), patchObsVec.end(), 
true);
 
   47     std::fill(patchObsVec.begin(), patchObsVec.end(), 
false);
 
   52 std::unique_ptr<Accumulator<int>>
 
   57 std::unique_ptr<Accumulator<std::size_t>>
 
   62 std::unique_ptr<Accumulator<float>>
 
   67 std::unique_ptr<Accumulator<double>>
 
   72 std::unique_ptr<Accumulator<std::vector<int>>>
 
   77 std::unique_ptr<Accumulator<std::vector<std::size_t>>>
 
   82 std::unique_ptr<Accumulator<std::vector<float>>>
 
   87 std::unique_ptr<Accumulator<std::vector<double>>>
 
   93 std::unique_ptr<Accumulator<T>>
 
   95   return boost::make_unique<InefficientDistributionAccumulator<T>>(init);
 
class for distributing obs across multiple process elements
 
const eckit::mpi::Comm & comm_
Local MPI communicator.
 
A class able to instantiate objects of type T, which should be a subclass of Distribution.
 
void patchObs(std::vector< bool > &) const override
Sets each element of the provided vector to true if the corresponding location is a "patch obs",...
 
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 ...
 
~InefficientDistribution()
 
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...
 
InefficientDistribution(const eckit::mpi::Comm &Comm, const eckit::Configuration &config)
 
std::unique_ptr< Accumulator< T > > createAccumulatorImplT(const T &init) const
 
static DistributionMaker< AtlasDistribution > maker(DIST_NAME)