1 #include <libmesh/replicated_mesh.h> 2 #include <libmesh/point.h> 3 #include <libmesh/elem.h> 4 #include <libmesh/face_quad4.h> 21 CPPUNIT_TEST( testMesh );
24 CPPUNIT_TEST_SUITE_END();
28 std::unique_ptr<ReplicatedMesh>
_mesh;
50 _mesh->add_point(
Point(0.0, 0.0), 0 );
51 _mesh->add_point(
Point(1.0, 0.0), 1 );
52 _mesh->add_point(
Point(1.0, 1.0), 2 );
53 _mesh->add_point(
Point(0.0, 1.0), 3 );
54 _mesh->add_point(
Point(0.0,-1.0), 4 );
55 _mesh->add_point(
Point(1.0,-1.0), 5 );
56 _mesh->add_point(
Point(2.0, 0.0), 6 );
57 _mesh->add_point(
Point(2.0, 1.0), 7 );
58 _mesh->add_point(
Point(2.0,-1.0), 8 );
60 _mesh->add_point(
Point(3.0,-1.0), 9 );
61 _mesh->add_point(
Point(3.0, 0.0), 10 );
62 _mesh->add_point(
Point(3.0, 0.5), 11 );
63 _mesh->add_point(
Point(3.0, 1.0), 12 );
64 _mesh->add_point(
Point(4.0,-1.0), 13 );
65 _mesh->add_point(
Point(4.0, 0.0), 14 );
66 _mesh->add_point(
Point(4.0, 0.5), 15 );
67 _mesh->add_point(
Point(4.0, 1.0), 16 );
68 _mesh->add_point(
Point(5.0,-1.0), 17 );
69 _mesh->add_point(
Point(5.0, 0.0), 18 );
70 _mesh->add_point(
Point(5.0, 0.5), 19 );
71 _mesh->add_point(
Point(5.0, 1.0), 20 );
72 _mesh->add_point(
Point(6.0,-1.0), 21 );
73 _mesh->add_point(
Point(6.0, 0.0), 22 );
74 _mesh->add_point(
Point(6.0, 0.5), 23 );
75 _mesh->add_point(
Point(6.0, 1.0), 24 );
79 elem->
set_node(0, _mesh->node_ptr(0));
80 elem->
set_node(1, _mesh->node_ptr(1));
81 elem->
set_node(2, _mesh->node_ptr(2));
82 elem->
set_node(3, _mesh->node_ptr(3));
86 elem->
set_node(0, _mesh->node_ptr(4));
87 elem->
set_node(1, _mesh->node_ptr(5));
88 elem->
set_node(2, _mesh->node_ptr(1));
89 elem->
set_node(3, _mesh->node_ptr(0));
93 elem->
set_node(0, _mesh->node_ptr(7));
94 elem->
set_node(1, _mesh->node_ptr(2));
95 elem->
set_node(2, _mesh->node_ptr(1));
96 elem->
set_node(3, _mesh->node_ptr(6));
100 elem->
set_node(0, _mesh->node_ptr(5));
101 elem->
set_node(1, _mesh->node_ptr(8));
102 elem->
set_node(2, _mesh->node_ptr(6));
103 elem->
set_node(3, _mesh->node_ptr(1));
107 elem->
set_node(0, _mesh->node_ptr(9));
108 elem->
set_node(1, _mesh->node_ptr(13));
109 elem->
set_node(2, _mesh->node_ptr(14));
110 elem->
set_node(3, _mesh->node_ptr(10));
114 elem->
set_node(0, _mesh->node_ptr(10));
115 elem->
set_node(1, _mesh->node_ptr(14));
116 elem->
set_node(2, _mesh->node_ptr(15));
117 elem->
set_node(3, _mesh->node_ptr(11));
121 elem->
set_node(0, _mesh->node_ptr(11));
122 elem->
set_node(1, _mesh->node_ptr(15));
123 elem->
set_node(2, _mesh->node_ptr(16));
124 elem->
set_node(3, _mesh->node_ptr(12));
128 elem->
set_node(0, _mesh->node_ptr(13));
129 elem->
set_node(1, _mesh->node_ptr(17));
130 elem->
set_node(2, _mesh->node_ptr(18));
131 elem->
set_node(3, _mesh->node_ptr(14));
136 elem->
set_node(0, _mesh->node_ptr(15));
137 elem->
set_node(1, _mesh->node_ptr(19));
138 elem->
set_node(2, _mesh->node_ptr(20));
139 elem->
set_node(3, _mesh->node_ptr(16));
143 elem->
set_node(0, _mesh->node_ptr(17));
144 elem->
set_node(1, _mesh->node_ptr(21));
145 elem->
set_node(2, _mesh->node_ptr(22));
146 elem->
set_node(3, _mesh->node_ptr(18));
150 elem->
set_node(0, _mesh->node_ptr(18));
151 elem->
set_node(1, _mesh->node_ptr(22));
152 elem->
set_node(2, _mesh->node_ptr(23));
153 elem->
set_node(3, _mesh->node_ptr(19));
157 elem->
set_node(0, _mesh->node_ptr(19));
158 elem->
set_node(1, _mesh->node_ptr(23));
159 elem->
set_node(2, _mesh->node_ptr(24));
160 elem->
set_node(3, _mesh->node_ptr(20));
165 _mesh->allow_renumbering(
false);
167 _mesh->prepare_for_use();
184 const auto points = _mesh->get_boundary_points();
187 CPPUNIT_ASSERT_EQUAL( (std::size_t)2, points.size() );
190 auto it = points.find(0);
191 CPPUNIT_ASSERT(it != points.end());
194 CPPUNIT_ASSERT_EQUAL( (std::size_t)1, it->second.size() );
197 CPPUNIT_ASSERT_EQUAL( (std::size_t)8, it->second[0].size() );
200 CPPUNIT_ASSERT_EQUAL(
Point(1,1), it->second[0][0] );
203 CPPUNIT_ASSERT_EQUAL(
Point(2,1), it->second[0][7] );
207 CPPUNIT_ASSERT(it != points.end());
210 CPPUNIT_ASSERT_EQUAL( (std::size_t)2, it->second.size() );
213 CPPUNIT_ASSERT_EQUAL( (std::size_t)12, it->second[0].size() );
216 CPPUNIT_ASSERT_EQUAL( (std::size_t)4, it->second[1].size() );
219 CPPUNIT_ASSERT_EQUAL(
Point(3,-1), it->second[0][0] );
222 CPPUNIT_ASSERT_EQUAL(
Point(3,0), it->second[0][11] );
225 CPPUNIT_ASSERT_EQUAL(
Point(4,0), it->second[1][0] );
228 CPPUNIT_ASSERT_EQUAL(
Point(5,0), it->second[1][3] );
242 CPPUNIT_TEST( testMesh );
245 CPPUNIT_TEST_SUITE_END();
254 _mesh->all_second_order(
true);
262 const auto points = _mesh->get_boundary_points();
265 CPPUNIT_ASSERT_EQUAL( (std::size_t)2, points.size() );
268 auto it = points.find(0);
269 CPPUNIT_ASSERT(it != points.end());
272 CPPUNIT_ASSERT_EQUAL( (std::size_t)1, it->second.size() );
275 CPPUNIT_ASSERT_EQUAL( (std::size_t)16, it->second[0].size() );
278 CPPUNIT_ASSERT_EQUAL(
Point(1,1), it->second[0][0] );
281 CPPUNIT_ASSERT_EQUAL(
Point(0.5,1), it->second[0][1] );
284 CPPUNIT_ASSERT_EQUAL(
Point(1.5,1), it->second[0][15] );
288 CPPUNIT_ASSERT(it != points.end());
291 CPPUNIT_ASSERT_EQUAL( (std::size_t)2, it->second.size() );
294 CPPUNIT_ASSERT_EQUAL( (std::size_t)24, it->second[0].size() );
297 CPPUNIT_ASSERT_EQUAL( (std::size_t)8, it->second[1].size() );
300 CPPUNIT_ASSERT_EQUAL(
Point(3,-1), it->second[0][0] );
303 CPPUNIT_ASSERT_EQUAL(
Point(3.5,-1), it->second[0][1] );
306 CPPUNIT_ASSERT_EQUAL(
Point(3,-0.5), it->second[0][23] );
309 CPPUNIT_ASSERT_EQUAL(
Point(4,0), it->second[1][0] );
312 CPPUNIT_ASSERT_EQUAL(
Point(4,0.25), it->second[1][1] );
315 CPPUNIT_ASSERT_EQUAL(
Point(4.5,0), it->second[1][7] );
virtual Node *& set_node(const unsigned int i)
libMesh::Parallel::Communicator * TestCommWorld
std::unique_ptr< ReplicatedMesh > _mesh
This is the base class from which all geometric element types are derived.
The libMesh namespace provides an interface to certain functionality in the library.
static std::unique_ptr< Elem > build_with_id(const ElemType type, dof_id_type id)
Calls the build() method above with a nullptr parent, and additionally sets the newly-created Elem's ...
A Point defines a location in LIBMESH_DIM dimensional Real space.
CPPUNIT_TEST_SUITE_REGISTRATION(GetBoundaryPointsTest)