36 Eigen::Vector2d coords0(2, 0);
37 Eigen::Vector2d coords1(-1, 4);
38 Eigen::Vector2d coords2(0, 1);
56 BOOST_TEST(cog.size() == 2);
57 BOOST_TEST(referenceBox == bBox);
59 for (
decltype(cog.size()) d = 0; d < cog.size(); d++) {
60 BOOST_TEST(referenceCOG.at(d) == cog(d));
68 Eigen::Vector3d coords0(2, 0, -3);
69 Eigen::Vector3d coords1(-1, 4, 8);
70 Eigen::Vector3d coords2(0, 1, -2);
71 Eigen::Vector3d coords3(3.5, 2, -2);
91 BOOST_TEST(cog.size() == 3);
92 BOOST_TEST(referenceBox == bBox);
94 for (
decltype(cog.size()) d = 0; d < cog.size(); d++) {
95 BOOST_TEST(referenceCOG.at(d) == cog(d));
103 for (
int dim = 2; dim <= 3; dim++) {
109 BOOST_TEST(mesh.
getName() == meshName);
112 Eigen::VectorXd coords0(dim);
113 Eigen::VectorXd coords1(dim);
114 Eigen::VectorXd coords2(dim);
120 coords0 << 0.0, 0.0, 0.0;
121 coords1 << 1.0, 0.0, 0.0;
122 coords2 << 0.0, 0.0, 1.0;
134 BOOST_TEST(vertex.getID() == v0.
getID());
135 }
else if (
index == 1) {
136 BOOST_TEST(vertex.getID() == v1.
getID());
137 }
else if (
index == 2) {
138 BOOST_TEST(vertex.getID() == v2.
getID());
170 int dataDimensions = dim;
176 BOOST_TEST(data->getName() == dataName);
177 BOOST_TEST(data->getDimensions() == dataDimensions);
180 BOOST_TEST(mesh.
data().
size() == 1);
181 BOOST_TEST(mesh.
data(0)->getName() == dataName);
188 Eigen::VectorXd &dataValues = data->values();
189 BOOST_TEST(dataValues.size() == 3 * dim);
190 BOOST_TEST(v0.
getID() == 0);
191 Eigen::VectorXd value = Eigen::VectorXd::Zero(dim);
192 for (
int i = 0; i < dim; i++) {
193 value(i) = dataValues(v0.
getID() * dim + i);
206 for (
auto ptr : meshes) {
208 Eigen::VectorXd coords0(dim);
209 Eigen::VectorXd coords1(dim);
210 Eigen::VectorXd coords2(dim);
211 Eigen::VectorXd coords3(dim);
212 coords0 << 0.0, 0.0, 0.0;
213 coords1 << 1.0, 0.0, 0.0;
214 coords2 << 0.0, 0.0, 1.0;
215 coords3 << 1.0, 0.0, 1.0;
216 Vertex &v0 = mesh.createVertex(coords0);
217 Vertex &v1 = mesh.createVertex(coords1);
218 Vertex &v2 = mesh.createVertex(coords2);
219 Vertex &v3 = mesh.createVertex(coords3);
220 Edge &e0 = mesh.createEdge(v0, v1);
221 Edge &e1 = mesh.createEdge(v1, v2);
222 Edge &e2 = mesh.createEdge(v2, v0);
223 mesh.createEdge(v1, v3);
224 mesh.createEdge(v3, v2);
225 mesh.createTriangle(e0, e1, e2);
227 BOOST_TEST(mesh1 == mesh2);
248 "Mesh \"WKTMesh\", dimensionality = 3:\n"
249 "GEOMETRYCOLLECTION(\n"
250 "POINT (0 0 0), POINT (1 0 0), POINT (0 0 1), POINT (1 0 1),\n"
251 "LINESTRING (0 0 0, 1 0 0), LINESTRING (1 0 0, 0 0 1), LINESTRING (0 0 0, 0 0 1), LINESTRING (1 0 0, 1 0 1), LINESTRING (0 0 1, 1 0 1),\n"
252 "POLYGON ((0 0 0, 1 0 0, 0 0 1, 0 0 0))\n"
254 BOOST_TEST(reference == sstream.
str());
270 BOOST_TEST(values.size() == 2);
278 BOOST_TEST(values.size() == 5);
296 BOOST_TEST(values.size() == 4);
304 BOOST_TEST(values.size() == 2);
316 Eigen::Vector3d coords0;
317 Eigen::Vector3d coords1;
318 Eigen::Vector3d coords2;
319 Eigen::Vector3d coords3;
320 coords0 << 1.0, 0.0, 0.0;
321 coords1 << 0.0, 0.0, 0.0;
322 coords2 << 2.0, 2.0, 0.0;
323 coords3 << 0.0, 1.0, 0.0;
340 BOOST_REQUIRE(chain.connected);
342 BOOST_TEST(chain.edges.at(0) == &e0);
343 BOOST_TEST(chain.edges.at(1) == &e2);
344 BOOST_TEST(chain.edges.at(2) == &e1);
345 BOOST_TEST(chain.edges.at(3) == &e3);
347 BOOST_TEST(chain.vertices.at(0) == &v1);
348 BOOST_TEST(chain.vertices.at(1) == &v3);
349 BOOST_TEST(chain.vertices.at(2) == &v2);
350 BOOST_TEST(chain.vertices.at(3) == &v0);
360 Eigen::Vector3d coords0;
361 Eigen::Vector3d coords1;
362 Eigen::Vector3d coords2;
363 Eigen::Vector3d coords3;
364 coords0 << 1.0, 0.0, 0.0;
365 coords1 << 0.0, 0.0, 0.0;
366 coords2 << 2.0, 2.0, 0.0;
367 coords3 << 0.0, 1.0, 0.0;
399 Eigen::Vector3d coords0;
400 Eigen::Vector3d coords1;
401 coords0 << 1.0, 0.0, 0.0;
402 coords1 << 0.0, 1.0, 0.0;
416 Eigen::Vector3d coords0;
417 Eigen::Vector3d coords1;
418 Eigen::Vector3d coords2;
419 Eigen::Vector3d coords3;
420 coords0 << 1.0, 0.0, 0.0;
421 coords1 << 0.0, 0.0, 0.0;
422 coords2 << 2.0, 2.0, 0.0;
423 coords3 << 0.0, 1.0, 0.0;
434 BOOST_REQUIRE(result.size() == 3);
435 BOOST_TEST(result == expected);
445 Eigen::Vector3d coords0;
446 Eigen::Vector3d coords1;
447 Eigen::Vector3d coords2;
448 Eigen::Vector3d coords3;
449 coords0 << 1.0, 0.0, 0.0;
450 coords1 << 0.0, 0.0, 0.0;
451 coords2 << 2.0, 2.0, 0.0;
452 coords3 << 0.0, 1.0, 0.0;
463 BOOST_REQUIRE(result.size() == 3);
464 BOOST_TEST(result == expected);
474 Eigen::Vector3d coords0;
475 Eigen::Vector3d coords1;
476 Eigen::Vector3d coords2;
477 Eigen::Vector3d coords3;
478 coords0 << 1.0, 0.0, 0.0;
479 coords1 << 0.0, 0.0, 0.0;
480 coords2 << 2.0, 2.0, 0.0;
481 coords3 << 0.0, 1.0, 0.0;
492 BOOST_REQUIRE(result.size() == 3);
493 BOOST_TEST(result == expected);
503 auto &v1 = mesh->
createVertex(Eigen::Vector2d(0.0, 0.0));
504 auto &v2 = mesh->
createVertex(Eigen::Vector2d(0.0, 0.5));
505 auto &v3 = mesh->
createVertex(Eigen::Vector2d(0.0, 1.5));
506 auto &v4 = mesh->
createVertex(Eigen::Vector2d(0.0, 3.5));
513 mesh->
data(0)->values()(0) = 1.0;
514 mesh->
data(0)->values()(1) = 3.0;
515 mesh->
data(0)->values()(2) = 5.0;
516 mesh->
data(0)->values()(3) = 7.0;
519 double expected = 17.0;
520 BOOST_REQUIRE(result.size() == 1);
521 BOOST_TEST(result(0) == expected);
531 auto &v1 = mesh->
createVertex(Eigen::Vector2d(0.0, 0.0));
532 auto &v2 = mesh->
createVertex(Eigen::Vector2d(0.0, 0.5));
533 auto &v3 = mesh->
createVertex(Eigen::Vector2d(0.0, 1.5));
534 auto &v4 = mesh->
createVertex(Eigen::Vector2d(0.0, 3.5));
541 mesh->
data(0)->values()(0) = 1.0;
542 mesh->
data(0)->values()(1) = 2.0;
543 mesh->
data(0)->values()(2) = 3.0;
544 mesh->
data(0)->values()(3) = 4.0;
545 mesh->
data(0)->values()(4) = 5.0;
546 mesh->
data(0)->values()(5) = 6.0;
547 mesh->
data(0)->values()(6) = 7.0;
548 mesh->
data(0)->values()(7) = 8.0;
551 Eigen::Vector2d expected(17.0, 20.5);
552 BOOST_REQUIRE(result.size() == 2);
553 BOOST_TEST(result(0) == expected(0));
554 BOOST_TEST(result(1) == expected(1));
564 auto &v1 = mesh->
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
565 auto &v2 = mesh->
createVertex(Eigen::Vector3d(3.0, 0.0, 0.0));
566 auto &v3 = mesh->
createVertex(Eigen::Vector3d(3.0, 4.0, 0.0));
567 auto &v4 = mesh->
createVertex(Eigen::Vector3d(0.0, 8.0, 0.0));
579 mesh->
data(0)->values()(0) = 1.0;
580 mesh->
data(0)->values()(1) = 3.0;
581 mesh->
data(0)->values()(2) = 5.0;
582 mesh->
data(0)->values()(3) = 7.0;
585 double expected = 70.0;
586 BOOST_REQUIRE(result.size() == 1);
587 BOOST_TEST(result(0) == expected);
597 auto &v1 = mesh->
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
598 auto &v2 = mesh->
createVertex(Eigen::Vector3d(3.0, 0.0, 0.0));
599 auto &v3 = mesh->
createVertex(Eigen::Vector3d(3.0, 4.0, 0.0));
600 auto &v4 = mesh->
createVertex(Eigen::Vector3d(0.0, 8.0, 0.0));
612 mesh->
data(0)->values()(0) = 1.0;
613 mesh->
data(0)->values()(1) = 2.0;
614 mesh->
data(0)->values()(2) = 3.0;
615 mesh->
data(0)->values()(3) = 4.0;
616 mesh->
data(0)->values()(4) = 5.0;
617 mesh->
data(0)->values()(5) = 6.0;
618 mesh->
data(0)->values()(6) = 7.0;
619 mesh->
data(0)->values()(7) = 8.0;
622 Eigen::Vector2d expected(70.0, 88.0);
623 BOOST_REQUIRE(result.size() == 2);
624 BOOST_TEST(result(0) == expected(0));
625 BOOST_TEST(result(1) == expected(1));
633 Eigen::Vector2d x0{0.0, 0.0};
634 Eigen::Vector2d x1{1.0, 0.0};
635 Eigen::Vector2d x2{1.0, 1.0};
636 Eigen::Vector2d x3{0.0, 1.0};
662 BOOST_REQUIRE(mesh->
triangles()[0].getArea() == 0.5);
663 BOOST_REQUIRE(mesh->
triangles()[1].getArea() == 0.5);
667 mesh->
data(0)->values()(0) = 1.0;
668 mesh->
data(0)->values()(1) = 3.0;
669 mesh->
data(0)->values()(2) = 7.0;
670 mesh->
data(0)->values()(3) = 5.0;
673 double expected = 4.0;
674 BOOST_REQUIRE(result.size() == 1);
675 BOOST_TEST(result(0) == expected);
701 BOOST_REQUIRE(mesh->
triangles()[0].getArea() == 0.5);
702 BOOST_REQUIRE(mesh->
triangles()[1].getArea() == 0.5);
706 mesh->
data(0)->values()(0) = 1.0;
707 mesh->
data(0)->values()(2) = 3.0;
708 mesh->
data(0)->values()(4) = 7.0;
709 mesh->
data(0)->values()(6) = 5.0;
711 mesh->
data(0)->values()(1) = 2.0;
712 mesh->
data(0)->values()(3) = 4.0;
713 mesh->
data(0)->values()(5) = 8.0;
714 mesh->
data(0)->values()(7) = 6.0;
717 Eigen::Vector2d expected(4.0, 5.0);
718 BOOST_REQUIRE(result.size() == 2);
719 BOOST_TEST(result(0) == expected(0));
720 BOOST_TEST(result(1) == expected(1));
724 Eigen::Vector3d
x1{0.0, 0.0, 0.0};
725 Eigen::Vector3d
x2{1.0, 0.0, 0.0};
726 Eigen::Vector3d
x3{0.0, 1.0, 0.0};
727 Eigen::Vector3d
x4{0.0, 0.0, 1.0};
746 BOOST_REQUIRE(mesh->
tetrahedra()[0].getVolume() == 1. / 6);
750 mesh->
data(0)->values()(0) = 1.0;
751 mesh->
data(0)->values()(1) = 3.0;
752 mesh->
data(0)->values()(2) = 5.0;
753 mesh->
data(0)->values()(3) = 7.0;
756 double expected = 4.0 / 6;
757 BOOST_REQUIRE(result.size() == 1);
758 BOOST_TEST(result(0) == expected);
777 BOOST_REQUIRE(mesh->
tetrahedra()[0].getVolume() == 1. / 6);
781 mesh->
data(0)->values()(0 * 3) = 1.0;
782 mesh->
data(0)->values()(1 * 3) = 3.0;
783 mesh->
data(0)->values()(2 * 3) = 5.0;
784 mesh->
data(0)->values()(3 * 3) = 7.0;
786 mesh->
data(0)->values()(0 * 3 + 1) = 1.0;
787 mesh->
data(0)->values()(1 * 3 + 1) = 1.0;
788 mesh->
data(0)->values()(2 * 3 + 1) = 1.0;
789 mesh->
data(0)->values()(3 * 3 + 1) = 1.0;
791 mesh->
data(0)->values()(0 * 3 + 2) = 1.0;
792 mesh->
data(0)->values()(1 * 3 + 2) = 0.0;
793 mesh->
data(0)->values()(2 * 3 + 2) = 0.0;
794 mesh->
data(0)->values()(3 * 3 + 2) = 0.0;
797 Eigen::Vector3d expected(4.0 / 6, 1.0 / 6, 1.0 / 24);
798 BOOST_REQUIRE(result.size() == 3);
799 BOOST_TEST(result(0) == expected(0));
800 BOOST_TEST(result(1) == expected(1));
801 BOOST_TEST(result(2) == expected(2));
814 auto &v01 = globalMesh->
createVertex(Eigen::Vector3d{0.0, 0.0, 0.0});
815 auto &v02 = globalMesh->
createVertex(Eigen::Vector3d{1.0, 0.0, 0.0});
816 auto &v03 = globalMesh->
createVertex(Eigen::Vector3d{0.0, 1.0, 0.0});
817 auto &v04 = globalMesh->
createVertex(Eigen::Vector3d{0.0, 0.0, 1.0});
824 auto &v11 = subMesh->
createVertex(Eigen::Vector3d{0.0, 0.0, 0.0});
825 auto &v12 = subMesh->
createVertex(Eigen::Vector3d{2.0, 0.0, 0.0});
826 auto &v13 = subMesh->
createVertex(Eigen::Vector3d{0.0, 4.0, 0.0});
827 auto &v14 = subMesh->
createVertex(Eigen::Vector3d{0.0, 0.0, 3.0});
828 auto &v15 = subMesh->
createVertex(Eigen::Vector3d{5.0, 0.0, 1.0});
839 BOOST_TEST(globalMesh->
nVertices() == 9);
840 BOOST_TEST(globalMesh->
edges().
size() == 3);
851 Mesh mesh{
"Mesh1", 3, 0};
853 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
854 auto &v2 = mesh.createVertex(Eigen::Vector3d(3.0, 0.0, 0.0));
855 auto &v3 = mesh.createVertex(Eigen::Vector3d(3.0, 4.0, 0.0));
856 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.0, 8.0, 0.0));
858 mesh.createEdge(v1, v2);
859 mesh.createEdge(v2, v3);
860 mesh.createEdge(v3, v4);
863 mesh.createEdge(v3, v4);
866 for (
int i = 0; i < 1000; ++i) {
867 mesh.createEdge(v2, v3);
869 BOOST_TEST(mesh.edges().size() == 1004);
873 BOOST_TEST(mesh.edges().size() == 3);
874 BOOST_TEST(mesh.triangles().empty());
875 BOOST_TEST(mesh.tetrahedra().empty());
878 for (
auto &e : expectedEdges) {
879 auto cnt =
std::count(mesh.edges().begin(), mesh.edges().end(), e);
880 BOOST_TEST(cnt == 1);
888 Mesh mesh{
"Mesh1", 3, 0};
890 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
891 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
892 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
894 mesh.createTriangle(v1, v2, v3);
898 BOOST_TEST(mesh.edges().size() == 3);
899 BOOST_TEST(mesh.triangles().size() == 1);
900 BOOST_TEST(mesh.tetrahedra().size() == 0);
907 Mesh mesh{
"Mesh1", 3, 0};
909 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
910 auto &v2 = mesh.createVertex(Eigen::Vector3d(1.0, 0.0, 0.0));
911 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
912 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
914 mesh.createTriangle(v1, v2, v3);
915 mesh.createTriangle(v2, v3, v4);
919 BOOST_TEST(mesh.edges().size() == 5);
920 BOOST_TEST(mesh.triangles().size() == 2);
921 BOOST_TEST(mesh.tetrahedra().size() == 0);
928 Mesh mesh{
"Mesh1", 3, 0};
930 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
931 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
932 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
933 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.3, 0.3, 1.0));
935 mesh.createTetrahedron(v1, v2, v3, v4);
939 BOOST_TEST(mesh.edges().size() == 6);
940 BOOST_TEST(mesh.triangles().size() == 4);
941 BOOST_TEST(mesh.tetrahedra().size() == 1);
948 Mesh mesh{
"Mesh1", 3, 0};
950 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
951 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
952 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
954 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.3, 0.3, 1.0));
955 auto &v5 = mesh.createVertex(Eigen::Vector3d(0.3, 0.3, -1.0));
957 mesh.createTetrahedron(v1, v2, v3, v4);
958 mesh.createTetrahedron(v1, v2, v3, v5);
962 BOOST_TEST(mesh.edges().size() == 9);
963 BOOST_TEST(mesh.triangles().size() == 7);
964 BOOST_TEST(mesh.tetrahedra().size() == 2);
971 Mesh mesh{
"Mesh1", 3, 0};
973 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
974 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
975 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
977 mesh.createTriangle(v1, v2, v3);
978 mesh.createEdge(v2, v3);
982 BOOST_TEST(mesh.edges().size() == 3);
983 BOOST_TEST(mesh.triangles().size() == 1);
984 BOOST_TEST(mesh.tetrahedra().size() == 0);
991 Mesh mesh{
"Mesh1", 3, 0};
993 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
994 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
995 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
997 mesh.createTriangle(v1, v2, v3);
998 mesh.createEdge(v1, v2);
999 mesh.createEdge(v2, v3);
1003 BOOST_TEST(mesh.edges().size() == 3);
1004 BOOST_TEST(mesh.triangles().size() == 1);
1005 BOOST_TEST(mesh.tetrahedra().size() == 0);
1012 Mesh mesh{
"Mesh1", 3, 0};
1014 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
1015 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
1016 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
1017 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.3, 0.3, 1.0));
1019 mesh.createTetrahedron(v1, v2, v3, v4);
1020 mesh.createTriangle(v1, v2, v3);
1024 BOOST_TEST(mesh.edges().size() == 6);
1025 BOOST_TEST(mesh.triangles().size() == 4);
1026 BOOST_TEST(mesh.tetrahedra().size() == 1);
1033 Mesh mesh{
"Mesh1", 3, 0};
1035 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
1036 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
1037 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
1038 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.3, 0.3, 1.0));
1040 mesh.createTetrahedron(v1, v2, v3, v4);
1041 mesh.createTriangle(v1, v2, v3);
1042 mesh.createTriangle(v1, v2, v4);
1043 mesh.createTriangle(v3, v4, v1);
1044 mesh.createTriangle(v3, v4, v2);
1048 BOOST_TEST(mesh.edges().size() == 6);
1049 BOOST_TEST(mesh.triangles().size() == 4);
1050 BOOST_TEST(mesh.tetrahedra().size() == 1);
1057 Mesh mesh{
"Mesh1", 3, 0};
1059 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
1060 auto &v2 = mesh.createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
1061 auto &v3 = mesh.createVertex(Eigen::Vector3d(1.0, 1.0, 0.0));
1062 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.3, 0.3, 1.0));
1064 mesh.createTetrahedron(v1, v2, v3, v4);
1065 mesh.createTriangle(v1, v2, v3);
1066 mesh.createEdge(v3, v4);
1070 BOOST_TEST(mesh.edges().size() == 6);
1071 BOOST_TEST(mesh.triangles().size() == 4);
1072 BOOST_TEST(mesh.tetrahedra().size() == 1);
1079 Mesh mesh{
"Mesh1", 3, 0};
1081 auto &v1 = mesh.
createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
1082 auto &v2 = mesh.createVertex(Eigen::Vector3d(3.0, 0.0, 0.0));
1083 auto &v3 = mesh.createVertex(Eigen::Vector3d(3.0, 4.0, 0.0));
1084 auto &v4 = mesh.createVertex(Eigen::Vector3d(0.0, 8.0, 0.0));
1086 mesh.createEdge(v1, v2);
1087 mesh.createEdge(v2, v3);
1088 mesh.createEdge(v3, v4);
1091 mesh.createEdge(v3, v4);
1094 for (
int i = 0; i < 1000; ++i) {
1095 mesh.createEdge(v2, v3);
1097 BOOST_TEST(mesh.edges().size() == 1004);
1099 mesh.createTriangle(v1, v2, v3);
1100 mesh.createTriangle(v2, v3, v4);
1101 for (
int i = 0; i < 1000; ++i) {
1102 mesh.createTriangle(v2, v3, v4);
1104 BOOST_TEST(mesh.triangles().size() == 1002);
1109 BOOST_TEST(mesh.edges().size() == 5);
1110 BOOST_TEST(mesh.triangles().size() == 2);
1112 std::vector<Edge> expectedEdges{{v1, v2}, {v1, v3}, {v2, v3}, {v3, v4}, {v2, v4}};
1113 for (
auto &e : expectedEdges) {
1114 auto cnt =
std::count(mesh.edges().begin(), mesh.edges().end(), e);
1115 BOOST_TEST(cnt == 1);
1119 for (
auto &t : expectedTriangles) {
1120 auto cnt =
std::count(mesh.triangles().begin(), mesh.triangles().end(), t);
1121 BOOST_TEST(cnt == 1);
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_CASE(BoundingBoxCOG_2D)
BOOST_FIXTURE_TEST_CASE(Integrate2DScalarDataVolume, UnitSquareFixture)
BOOST_AUTO_TEST_SUITE_END()
#define PRECICE_TEST_SETUP(...)
Creates and attaches a TestSetup to a Boost test case.
An axis-aligned bounding box around a (partition of a) mesh.
int getDimension() const
Getter dimension of the bounding box.
Eigen::VectorXd center() const
Returns the Center Of Gravity of the mesh.
Eigen::VectorXd & values()
Returns a reference to the data values.
Linear edge of a mesh, defined by two Vertex objects.
Container and creator for meshes.
Triangle & createTriangle(Edge &edgeOne, Edge &edgeTwo, Edge &edgeThree)
Creates and initializes a Triangle object.
VertexContainer & vertices()
Returns modifieable container holding all vertices.
void clear()
Removes all mesh elements and data values (does not remove data or the bounding boxes).
void addMesh(Mesh &deltaMesh)
const std::string & getName() const
Returns the name of the mesh, as set in the config file.
std::size_t nVertices() const
Returns the number of vertices.
TetraContainer & tetrahedra()
Returns modifiable container holding all tetrahedra.
PtrData & createData(const std::string &name, int dimension, DataID id, int waveformDegree=time::Time::DEFAULT_WAVEFORM_DEGREE)
Create only data for vertex.
void computeBoundingBox()
Computes the boundingBox for the vertices.
Tetrahedron & createTetrahedron(Vertex &vertexOne, Vertex &vertexTwo, Vertex &vertexThree, Vertex &vertexFour)
Creates and initializes a Tetrahedron object.
const DataContainer & data() const
Allows access to all data.
TriangleContainer & triangles()
Returns modifiable container holding all triangles.
const BoundingBox & getBoundingBox() const
Returns the bounding box of the mesh.
Edge & createEdge(Vertex &vertexOne, Vertex &vertexTwo)
Creates and initializes an Edge object.
Vertex & createVertex(const Eigen::Ref< const Eigen::VectorXd > &coords)
Creates and initializes a Vertex object.
EdgeContainer & edges()
Returns modifiable container holding all edges.
void allocateDataValues()
Allocates memory for the vertex data values and corresponding gradient values.
bool hasTriangles() const
VertexID getID() const
Returns the unique (among vertices of one mesh on one processor) ID of the vertex.
provides Mesh, Data and primitives.
Eigen::VectorXd integrateSurface(const PtrMesh &mesh, const Eigen::VectorXd &input)
Given the data and the mesh, this function returns the surface integral. Assumes no overlap exists fo...
Eigen::VectorXd integrateVolume(const PtrMesh &mesh, const Eigen::VectorXd &input)
Given the data and the mesh, this function returns the volume integral. Assumes no overlap exists for...
std::array< Eigen::VectorXd, n > coordsFor(const Mesh &mesh, const std::array< int, n > &vertexIDs)
Given a mesh and an array of vertexIDS, this function returns an array of coordinates of the vertices...
Vertex * sharedVertex(Edge &a, Edge &b)
std::array< Vertex *, n > vertexPtrsFor(Mesh &mesh, const std::array< int, n > &vertexIDs)
Given a mesh and an array of vertexIDS, this function returns an array of pointers to vertices.
double edgeLength(const Edge &e)
Chain< n > asChain(std::array< mesh::Edge *, n > edges)
boost::test_tools::predicate_result equals(const std::vector< float > &VectorA, const std::vector< float > &VectorB, float tolerance)
equals to be used in tests. Compares two std::vectors using a given tolerance. Prints both operands o...
auto make_array(Elements &&...elements) -> std::array< typename std::common_type< Elements... >::type, sizeof...(Elements)>
Function that generates an array from given elements.
Main namespace of the precice library.