9 #include "oops/mpi/mpi.h"
14 : globalObsCount_(obsspace.gnlocs())
16 const size_t numProcs = obsspace.comm().size();
19 obsspace.comm().allGather(
static_cast<int>(obsspace.nlocs()),
24 for (
size_t i = 1; i < numProcs; ++i)
32 const std::string &variable,
33 const std::string &group) {
34 std::vector<T> localValues(obsspace.nlocs());
35 obsspace.get_db(group, variable, localValues);
38 obsspace.comm().allGatherv(localValues.begin(), localValues.end(),
49 const std::string &variable,
50 const std::string &group) {
51 std::vector<util::DateTime> localValues(obsspace.nlocs());
52 obsspace.get_db(group, variable, localValues);
54 std::vector<util::DateTime> globalValues(obsDistribution.
globalObsCount());
55 oops::mpi::allGathervUsingSerialize(obsspace.comm(),
56 localValues.begin(), localValues.end(), globalValues.begin());
61 #define INSTANTIATE_GET_GLOBAL_VARIABLE_VALUES(TYPE) \
62 template std::vector<TYPE> getGlobalVariableValues(const ioda::ObsSpace &, \
63 const ParallelObsDistribution &, \
64 const std::string &, \