1#include <libmesh/int_range.h>
2#include <libmesh/parallel.h>
3#include <libmesh/parallel_algebra.h>
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);
252 Parallel::wait (request);
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);
271 Parallel::wait (request);
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);
315 Parallel::wait (request);
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);
334 Parallel::wait (request);
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] );
CPPUNIT_TEST(testIsendRecv)
void testAllGatherPoint()
void testMapUnionGradient()
void testBroadcastVectorValueInt()
CPPUNIT_TEST(testAllGatherPairPointPoint)
CPPUNIT_TEST(testMapUnionGradient)
CPPUNIT_TEST(testIrecvSend)
CPPUNIT_TEST(testAllGatherPoint)
CPPUNIT_TEST(testBroadcastVectorValueReal)
LIBMESH_CPPUNIT_TEST_SUITE(ParallelPointTest)
CPPUNIT_TEST(testBroadcastPoint)
void testBroadcastPoint()
void testBroadcastVectorValue()
void testAllGatherPairRealPoint()
void testBroadcastVectorValueReal()
CPPUNIT_TEST(testBroadcastVectorValueInt)
CPPUNIT_TEST(testAllGatherPairRealPoint)
void testAllGatherPairPointPoint()
CPPUNIT_TEST(testMapUnionPoint)
A Point defines a location in LIBMESH_DIM dimensional Real space.
Communicator * TestCommWorld
The libMesh namespace provides an interface to certain functionality in the library.
LIBMESH_DEVICE_INLINE T libmesh_real(T a)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
uint8_t processor_id_type
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...
CPPUNIT_TEST_SUITE_REGISTRATION(ParallelPointTest)