Skip to content
Snippets Groups Projects
Commit b1f7b3aa authored by Tobias Baetge's avatar Tobias Baetge
Browse files

add function transforming set of pairs into vector and vice versa

used to collect pairs of different processes via standard MPI
communications, later to be optimized.
parent d78f43f5
No related branches found
No related tags found
No related merge requests found
......@@ -25,6 +25,28 @@
#include <cstring>
#include <set>
#include <utility>
#include <vector>
template < class partsize_t>
std::vector<partsize_t> pairs2vec(std::set <std::pair <partsize_t,partsize_t>> ID_pairs){
std::vector<partsize_t> v(2*ID_pairs.size());
for(unsigned int i=0; i < ID_pairs.size(); i++)
{
v[2*i-2] = std::get<0>(*std::next(ID_pairs.begin(), i));
v[2*i-1] = std::get<1>(*std::next(ID_pairs.begin(), i));
}
return v;
}
template < class partsize_t>
std::set <std::pair <partsize_t,partsize_t>> vec2pairs(std::vector<partsize_t> v){
std::set <std::pair <partsize_t,partsize_t>> ID_pairs;
for(unsigned int i=0; i < v.size()/2; i++)
{
ID_pairs.insert(std::pair <partsize_t,partsize_t> (v[2*i],v[2*i+1]));
}
return ID_pairs;
}
template <class real_number, class partsize_t>
class p2p_ghost_collisions{
......@@ -61,7 +83,7 @@ public:
collision_counter += other.collision_counter;
std::set <std::pair <partsize_t, partsize_t>> new_collision_pairs;
std::set_union(collision_pairs.begin(), collision_pairs.end(),
other.collision_pairs.begin(), other.collision_pairs.end(),
other.collision_pairs.begin(), other.collision_pairs.end(),
std::inserter(new_collision_pairs, new_collision_pairs.begin()));
collision_pairs = new_collision_pairs;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment