1 #include <libmesh/int_range.h> 2 #include <libmesh/parallel.h> 3 #include <libmesh/parallel_algebra.h> 16 CPPUNIT_TEST( testAllGatherPoint );
17 CPPUNIT_TEST( testAllGatherPairPointPoint );
18 CPPUNIT_TEST( testAllGatherPairRealPoint );
19 CPPUNIT_TEST( testMapUnionGradient );
20 CPPUNIT_TEST( testMapUnionPoint );
23 CPPUNIT_TEST( testBroadcastVectorValueInt );
24 CPPUNIT_TEST( testBroadcastVectorValueReal );
25 CPPUNIT_TEST( testBroadcastPoint );
29 CPPUNIT_TEST_SUITE_END();
46 std::vector<Point> vals;
51 const std::size_t vec_size = vals.size();
52 CPPUNIT_ASSERT_EQUAL( comm_size, vec_size );
56 CPPUNIT_ASSERT_EQUAL( theirrank, vals[i](0) );
57 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.25), vals[i](1) );
58 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.5), vals[i](2) );
68 std::vector<std::pair<Point, Point>> vals;
71 (std::make_pair(
Point(myrank, myrank+0.125, myrank+0.25),
Point(myrank+0.5, myrank+0.625, myrank+0.75)), vals);
74 const std::size_t vec_size = vals.size();
75 CPPUNIT_ASSERT_EQUAL( comm_size, vec_size );
80 CPPUNIT_ASSERT_EQUAL( theirrank, vals[i].first(0) );
81 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.125), vals[i].first(1) );
82 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.25), vals[i].first(2) );
83 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.5), vals[i].second(0) );
84 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.625), vals[i].second(1) );
85 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.75), vals[i].second(2) );
94 std::vector<std::pair<Real, Point>> vals;
97 (std::make_pair(
Real(myrank+0.75),
Point(myrank, myrank+0.25, myrank+0.5)), vals);
100 const std::size_t vec_size = vals.size();
101 CPPUNIT_ASSERT_EQUAL( comm_size, vec_size );
106 CPPUNIT_ASSERT_EQUAL( theirrank, vals[i].second(0) );
107 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.25), vals[i].second(1) );
108 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.5), vals[i].second(2) );
109 CPPUNIT_ASSERT_EQUAL( theirrank+
Real(0.75), vals[i].first );
115 template <
typename VecType>
119 std::map<processor_id_type , std::vector<VecType>> vals;
123 vals[myrank*2].resize(1);
124 vals[myrank*2][0](0) = myrank+1;
130 CPPUNIT_ASSERT_EQUAL(vals.size(), std::size_t(comm_size));
133 CPPUNIT_ASSERT_EQUAL(vals[p*2].size(), std::size_t(1));
143 testMapUnionVec<Gradient>();
151 testMapUnionVec<Point>();
155 template <
typename T>
158 std::vector<VectorValue<T>> src(3), dest(3);
162 for (
unsigned int i=0; i<3; i++)
163 for (
unsigned int j=0; j<LIBMESH_DIM; j++)
172 for (
unsigned int i=0; i<3; i++)
173 for (
unsigned int j=0; j<LIBMESH_DIM; j++)
174 CPPUNIT_ASSERT_EQUAL (src[i](j), dest[i](j) );
183 this->testBroadcastVectorValue<int>();
192 this->testBroadcastVectorValue<Real>();
201 std::vector<Point> src(3), dest(3);
205 for (
unsigned int i=0; i<3; i++)
206 for (
unsigned int j=0; j<LIBMESH_DIM; j++)
215 for (
unsigned int i=0; i<3; i++)
216 for (
unsigned int j=0; j<LIBMESH_DIM; j++)
217 CPPUNIT_ASSERT_EQUAL (src[i](j), dest[i](j) );
232 std::vector<unsigned int> src_val(3), recv_val(3);
254 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
256 for (std::size_t i=0; i<src_val.size(); i++)
257 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
262 std::fill (recv_val.begin(), recv_val.end(), 0);
273 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
275 for (std::size_t i=0; i<src_val.size(); i++)
276 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
295 std::vector<unsigned int> src_val(3), recv_val(3);
317 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
319 for (std::size_t i=0; i<src_val.size(); i++)
320 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
324 std::fill (recv_val.begin(), recv_val.end(), 0);
336 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
338 for (std::size_t i=0; i<src_val.size(); i++)
339 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
void send_mode(const SendMode sm)
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
void testAllGatherPoint()
void testAllGatherPairPointPoint()
libMesh::Parallel::Communicator * TestCommWorld
void testBroadcastVectorValue()
processor_id_type rank() const
The libMesh namespace provides an interface to certain functionality in the library.
void testBroadcastPoint()
void testMapUnionGradient()
processor_id_type size() const
uint8_t processor_id_type
Status receive(const unsigned int dest_processor_id, T &buf, const MessageTag &tag=any_tag) const
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void send(const unsigned int dest_processor_id, const T &buf, const MessageTag &tag=no_tag) const
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
void testBroadcastVectorValueReal()
void testBroadcastVectorValueInt()
CPPUNIT_TEST_SUITE_REGISTRATION(ParallelPointTest)
A Point defines a location in LIBMESH_DIM dimensional Real space.
void set_union(T &data, const unsigned int root_id) const
void testAllGatherPairRealPoint()