44 std::vector<int> rankBuffer(nCuboid, 0);
45 std::vector<int> locBuffer(nCuboid, 0);
49 std::vector<int> cuboids(nCuboid, 0);
50 std::iota(cuboids.begin(),
53 std::random_device randomDevice;
54 std::default_random_engine randomEngine(randomDevice());
55 std::shuffle(cuboids.begin(), cuboids.end(), randomEngine);
57 std::map<int,int> nLoc;
59 for (
int iCuboid : cuboids) {
63 rankBuffer[iCuboid] = jRank;
64 locBuffer[iCuboid] = nLoc[jRank]++;
69 #ifdef PARALLEL_MODE_MPI
76 for (
int iCuboid=0; iCuboid < nCuboid; ++iCuboid) {
77 this->
_rank[iCuboid] = rankBuffer[iCuboid];
78 this->
_loc[iCuboid] = locBuffer[iCuboid];
80 this->
_glob.resize(std::max(
int{this->
_glob.size()}, this->
_loc[iCuboid]+1));
81 this->
_glob[this->
_loc[iCuboid]] = iCuboid;