4 std::unordered_map<int,int>& index_map,
5 const libMesh::Parallel::Communicator& CommComm,
8 int rank = CommComm.rank();
9 int dummy_vector_size = -1;
10 std::vector<int> dummy_vector;
12 if(rank == origin_rank)
14 dummy_vector_size = index_map.size();
15 dummy_vector.resize(2*dummy_vector_size);
17 std::unordered_map<int,int>::iterator mapIt = index_map.begin();
18 std::unordered_map<int,int>::iterator end_mapIt = index_map.end();
20 for( ; mapIt != end_mapIt; ++mapIt)
22 dummy_vector[2*dummy_iii] = mapIt->first;
23 dummy_vector[2*dummy_iii + 1] = mapIt->second;
29 CommComm.broadcast(dummy_vector_size,origin_rank);
31 if( rank != origin_rank )
33 dummy_vector.resize(2*dummy_vector_size);
35 CommComm.broadcast(dummy_vector,origin_rank);
37 if( rank != origin_rank)
39 index_map.reserve(dummy_vector_size);
40 for(
int iii = 0; iii < dummy_vector_size; ++iii)
42 index_map[dummy_vector[2*iii]] = dummy_vector[2*iii+1];
void broadcast_index_unordered_map(std::unordered_map< int, int > &index_map, const libMesh::Parallel::Communicator &CommComm, int origin_rank=0)