23 auto m2n = context.connectPrimaryRanks(
"Part1",
"Part2");
26 int numberOfVertices = 6;
27 int valueDimension = 1;
28 Eigen::VectorXd offset = Eigen::VectorXd::Zero(dimensions);
30 if (context.isNamed(
"Part1")) {
32 m2n->createDistributedCommunication(pMesh);
34 pMesh->setGlobalNumberOfVertices(numberOfVertices);
35 pMesh->setVertexDistribution({{0, {0, 1, 2, 3, 4, 5}}});
37 m2n->acceptSecondaryRanksConnection(
"Part1",
"Part2");
38 Eigen::VectorXd values = Eigen::VectorXd::Zero(numberOfVertices);
39 values << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0;
40 m2n->send(values, pMesh->getID(), valueDimension);
41 m2n->receive(values, pMesh->getID(), valueDimension);
42 BOOST_TEST(values(0) == 2.0);
43 BOOST_TEST(values(1) == 4.0);
44 BOOST_TEST(values(2) == 6.0);
45 BOOST_TEST(values(3) == 16.0);
46 BOOST_TEST(values(4) == 10.0);
47 BOOST_TEST(values(5) == 12.0);
50 BOOST_TEST(context.isNamed(
"Part2"));
52 m2n->createDistributedCommunication(pMesh);
53 m2n->requestSecondaryRanksConnection(
"Part1",
"Part2");
55 if (context.isPrimary()) {
56 pMesh->setGlobalNumberOfVertices(numberOfVertices);
57 pMesh->setVertexDistribution({{0, {0, 1, 3}}, {2, {2, 3, 4, 5}}});
59 Eigen::Vector3d values(0.0, 0.0, 0.0);
60 m2n->receive(values, pMesh->getID(), valueDimension);
61 BOOST_TEST(values(0) == 1.0);
62 BOOST_TEST(values(1) == 2.0);
63 BOOST_TEST(values(2) == 4.0);
65 m2n->send(values, pMesh->getID(), valueDimension);
66 }
else if (context.isRank(1)) {
67 Eigen::VectorXd values;
68 m2n->receive({}, pMesh->getID(), valueDimension);
69 m2n->send(values, pMesh->getID(), valueDimension);
71 BOOST_TEST(context.isRank(2));
72 Eigen::Vector4d values(0.0, 0.0, 0.0, 0.0);
73 m2n->receive(values, pMesh->getID(), valueDimension);
74 BOOST_TEST(values(0) == 3.0);
75 BOOST_TEST(values(1) == 4.0);
76 BOOST_TEST(values(2) == 5.0);
77 BOOST_TEST(values(3) == 6.0);
79 m2n->send(values, pMesh->getID(), valueDimension);