1 #include <libmesh/equation_systems.h>
2 #include <libmesh/replicated_mesh.h>
3 #include <libmesh/mesh_generation.h>
4 #include <libmesh/edge_edge2.h>
5 #include <libmesh/face_quad4.h>
6 #include <libmesh/face_tri3.h>
7 #include <libmesh/cell_hex8.h>
8 #include <libmesh/dof_map.h>
9 #include <libmesh/linear_implicit_system.h>
10 #include <libmesh/mesh_refinement.h>
28 CPPUNIT_TEST( testMesh );
29 #ifdef LIBMESH_HAVE_SOLVER
30 CPPUNIT_TEST( testDofOrdering );
32 CPPUNIT_TEST( testPointLocatorTree );
35 CPPUNIT_TEST_SUITE_END();
147 std::vector<dof_id_type> top_quad_dof_indices, bottom_quad_dof_indices, edge_dof_indices;
155 CPPUNIT_ASSERT_EQUAL( edge_dof_indices[0], top_quad_dof_indices[0] );
156 CPPUNIT_ASSERT_EQUAL( edge_dof_indices[1], top_quad_dof_indices[1] );
160 CPPUNIT_ASSERT_EQUAL( edge_dof_indices[0], bottom_quad_dof_indices[3] );
161 CPPUNIT_ASSERT_EQUAL( edge_dof_indices[1], bottom_quad_dof_indices[2] );
165 CPPUNIT_ASSERT_EQUAL( top_quad_dof_indices[0], bottom_quad_dof_indices[3] );
166 CPPUNIT_ASSERT_EQUAL( top_quad_dof_indices[1], bottom_quad_dof_indices[2] );
173 Point top_point(0.5, 0.5);
174 const Elem* top_elem = (*locator)(top_point);
175 CPPUNIT_ASSERT(top_elem);
180 Point bottom_point(0.5, -0.5);
181 const Elem* bottom_elem = (*locator)(bottom_point);
182 CPPUNIT_ASSERT(bottom_elem);
189 std::set<subdomain_id_type> subdomain_id; subdomain_id.insert(1);
190 Point interface_point( 0.5, 0.0 );
191 const Elem* interface_elem = (*locator)(interface_point, &subdomain_id);
192 CPPUNIT_ASSERT(interface_elem);
195 CPPUNIT_ASSERT_EQUAL( (
dof_id_type)2, interface_elem->
id() );
212 CPPUNIT_TEST( testMesh );
213 #ifdef LIBMESH_HAVE_SOLVER
214 CPPUNIT_TEST( testDofOrdering );
218 CPPUNIT_TEST_SUITE_END();
241 #ifdef LIBMESH_ENABLE_AMR
249 #ifdef LIBMESH_ENABLE_AMR
251 CPPUNIT_ASSERT_EQUAL( (
dof_id_type)13, _mesh->n_elem() );
252 CPPUNIT_ASSERT_EQUAL( (
dof_id_type)10, _mesh->n_active_elem() );
255 CPPUNIT_ASSERT_EQUAL( (
dof_id_type)15, _mesh->n_nodes() );
258 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).node_id(0),
259 _mesh->elem_ref(3).node_id(0) );
260 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).node_id(1),
261 _mesh->elem_ref(3).node_id(1) );
264 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(12).node_id(0),
265 _mesh->elem_ref(4).node_id(0) );
266 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(12).node_id(1),
267 _mesh->elem_ref(4).node_id(1) );
270 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).node_id(0),
271 _mesh->elem_ref(9).node_id(3) );
272 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).node_id(1),
273 _mesh->elem_ref(9).node_id(2) );
276 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(12).node_id(0),
277 _mesh->elem_ref(10).node_id(3) );
278 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(12).node_id(1),
279 _mesh->elem_ref(10).node_id(2) );
282 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).node_id(1),
283 _mesh->elem_ref(12).node_id(0) );
286 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).parent(),
287 _mesh->elem_ptr(2) );
288 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(12).parent(),
289 _mesh->elem_ptr(2) );
292 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(11).interior_parent(),
293 _mesh->elem_ptr(3) );
294 CPPUNIT_ASSERT_EQUAL( _mesh->elem_ref(12).interior_parent(),
295 _mesh->elem_ptr(4) );
301 #ifdef LIBMESH_ENABLE_AMR
309 std::vector<dof_id_type> top_quad3_dof_indices, top_quad4_dof_indices;
310 std::vector<dof_id_type> bottom_quad9_dof_indices, bottom_quad10_dof_indices;
311 std::vector<dof_id_type> edge11_dof_indices, edge12_dof_indices;
313 dof_map.
dof_indices( _mesh->elem_ptr(3), top_quad3_dof_indices );
314 dof_map.
dof_indices( _mesh->elem_ptr(4), top_quad4_dof_indices );
315 dof_map.
dof_indices( _mesh->elem_ptr(9), bottom_quad9_dof_indices );
316 dof_map.
dof_indices( _mesh->elem_ptr(10), bottom_quad10_dof_indices );
317 dof_map.
dof_indices( _mesh->elem_ptr(11), edge11_dof_indices );
318 dof_map.
dof_indices( _mesh->elem_ptr(12), edge12_dof_indices );
321 CPPUNIT_ASSERT_EQUAL( edge11_dof_indices[0], top_quad3_dof_indices[0] );
322 CPPUNIT_ASSERT_EQUAL( edge11_dof_indices[1], top_quad3_dof_indices[1] );
325 CPPUNIT_ASSERT_EQUAL( edge12_dof_indices[0], top_quad4_dof_indices[0] );
326 CPPUNIT_ASSERT_EQUAL( edge12_dof_indices[1], top_quad4_dof_indices[1] );
329 CPPUNIT_ASSERT_EQUAL( edge11_dof_indices[0], bottom_quad9_dof_indices[3] );
330 CPPUNIT_ASSERT_EQUAL( edge11_dof_indices[1], bottom_quad9_dof_indices[2] );
333 CPPUNIT_ASSERT_EQUAL( edge12_dof_indices[0], bottom_quad10_dof_indices[3] );
334 CPPUNIT_ASSERT_EQUAL( edge12_dof_indices[1], bottom_quad10_dof_indices[2] );
337 CPPUNIT_ASSERT_EQUAL( edge11_dof_indices[1], edge12_dof_indices[0] );
355 CPPUNIT_TEST( testMesh );
356 #ifdef LIBMESH_HAVE_SOLVER
357 CPPUNIT_TEST( testDofOrdering );
361 CPPUNIT_TEST_SUITE_END();
485 #ifdef LIBMESH_ENABLE_AMR
510 #ifdef LIBMESH_ENABLE_AMR
562 #ifdef LIBMESH_ENABLE_AMR
570 std::vector<dof_id_type> top_quad5_dof_indices, top_quad6_dof_indices;
571 std::vector<dof_id_type> bottom_quad11_dof_indices, bottom_quad12_dof_indices;
572 std::vector<dof_id_type> edge13_dof_indices, edge14_dof_indices;
582 CPPUNIT_ASSERT_EQUAL( edge13_dof_indices[0], top_quad5_dof_indices[0] );
583 CPPUNIT_ASSERT_EQUAL( edge13_dof_indices[1], top_quad5_dof_indices[1] );
586 CPPUNIT_ASSERT_EQUAL( edge14_dof_indices[0], top_quad6_dof_indices[0] );
587 CPPUNIT_ASSERT_EQUAL( edge14_dof_indices[1], top_quad6_dof_indices[1] );
590 CPPUNIT_ASSERT_EQUAL( edge13_dof_indices[0], bottom_quad11_dof_indices[3] );
591 CPPUNIT_ASSERT_EQUAL( edge13_dof_indices[1], bottom_quad11_dof_indices[2] );
594 CPPUNIT_ASSERT_EQUAL( edge14_dof_indices[0], bottom_quad12_dof_indices[3] );
595 CPPUNIT_ASSERT_EQUAL( edge14_dof_indices[1], bottom_quad12_dof_indices[2] );
598 CPPUNIT_ASSERT_EQUAL( edge13_dof_indices[1], edge14_dof_indices[0] );
615 CPPUNIT_TEST( testMesh );
616 #ifdef LIBMESH_HAVE_SOLVER
617 CPPUNIT_TEST( testDofOrdering );
621 CPPUNIT_TEST_SUITE_END();
715 #ifdef LIBMESH_ENABLE_AMR
739 #ifdef LIBMESH_ENABLE_AMR
799 #endif // LIBMESH_ENABLE_AMR
804 #ifdef LIBMESH_ENABLE_AMR
813 std::vector<dof_id_type> elem5_dof_indices, elem6_dof_indices, elem8_dof_indices;
816 std::vector<dof_id_type> elem9_dof_indices, elem10_dof_indices, elem12_dof_indices;
819 std::vector<dof_id_type> elem13_dof_indices, elem14_dof_indices;
833 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[0], elem5_dof_indices[0] );
834 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[1], elem5_dof_indices[1] );
835 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[1], elem6_dof_indices[0] );
836 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[1], elem8_dof_indices[0] );
837 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[0], elem6_dof_indices[0] );
838 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[1], elem6_dof_indices[1] );
839 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[0], elem5_dof_indices[1] );
840 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[0], elem8_dof_indices[0] );
845 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[0], elem10_dof_indices[1] );
846 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[1], elem10_dof_indices[0] );
847 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[1], elem9_dof_indices[1] );
848 CPPUNIT_ASSERT_EQUAL( elem13_dof_indices[1], elem12_dof_indices[0] );
849 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[0], elem9_dof_indices[1] );
850 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[1], elem9_dof_indices[0] );
851 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[0], elem10_dof_indices[0] );
852 CPPUNIT_ASSERT_EQUAL( elem14_dof_indices[0], elem12_dof_indices[0] );
856 CPPUNIT_ASSERT_EQUAL( elem5_dof_indices[0], elem10_dof_indices[1] );
857 CPPUNIT_ASSERT_EQUAL( elem5_dof_indices[1], elem10_dof_indices[0] );
858 CPPUNIT_ASSERT_EQUAL( elem6_dof_indices[0], elem9_dof_indices[1] );
859 CPPUNIT_ASSERT_EQUAL( elem6_dof_indices[1], elem9_dof_indices[0] );
860 CPPUNIT_ASSERT_EQUAL( elem8_dof_indices[0], elem12_dof_indices[0] );
861 #endif // LIBMESH_ENABLE_AMR
878 CPPUNIT_TEST( testMesh );
879 #ifdef LIBMESH_HAVE_SOLVER
880 CPPUNIT_TEST( testDofOrdering );
884 CPPUNIT_TEST_SUITE_END();
898 for (
unsigned int z = 0; z < 5; z++)
900 for (
unsigned int y = 0; y < 4; y++)
902 for (
unsigned int x = 0; x < 4; x++)
911 for (
unsigned int z = 0; z < 4; z++)
913 for (
unsigned int y = 0; y < 3; y++)
915 for (
unsigned int x = 0; x < 3; x++)
930 unsigned int x=1,y=1,z=2;
945 #ifdef LIBMESH_ENABLE_AMR
969 #ifdef LIBMESH_ENABLE_AMR
1100 #ifdef LIBMESH_ENABLE_AMR
1109 std::vector<dof_id_type> elem41_dof_indices, elem42_dof_indices, elem43_dof_indices, elem44_dof_indices;
1111 std::vector<dof_id_type> elem45_dof_indices, elem46_dof_indices, elem47_dof_indices, elem48_dof_indices;
1113 std::vector<dof_id_type> elem53_dof_indices, elem54_dof_indices, elem55_dof_indices, elem56_dof_indices;
1131 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[0], elem41_dof_indices[4] );
1132 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[1], elem41_dof_indices[5] );
1133 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[2], elem41_dof_indices[6] );
1134 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[3], elem41_dof_indices[7] );
1136 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[0], elem42_dof_indices[4] );
1137 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[1], elem42_dof_indices[5] );
1138 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[2], elem42_dof_indices[6] );
1139 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[3], elem42_dof_indices[7] );
1141 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[0], elem43_dof_indices[4] );
1142 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[1], elem43_dof_indices[5] );
1143 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[2], elem43_dof_indices[6] );
1144 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[3], elem43_dof_indices[7] );
1146 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[0], elem44_dof_indices[4] );
1147 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[1], elem44_dof_indices[5] );
1148 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[2], elem44_dof_indices[6] );
1149 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[3], elem44_dof_indices[7] );
1154 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[0], elem45_dof_indices[0] );
1155 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[1], elem45_dof_indices[1] );
1156 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[2], elem45_dof_indices[2] );
1157 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[3], elem45_dof_indices[3] );
1159 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[0], elem46_dof_indices[0] );
1160 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[1], elem46_dof_indices[1] );
1161 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[2], elem46_dof_indices[2] );
1162 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[3], elem46_dof_indices[3] );
1164 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[0], elem47_dof_indices[0] );
1165 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[1], elem47_dof_indices[1] );
1166 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[2], elem47_dof_indices[2] );
1167 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[3], elem47_dof_indices[3] );
1169 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[0], elem48_dof_indices[0] );
1170 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[1], elem48_dof_indices[1] );
1171 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[2], elem48_dof_indices[2] );
1172 CPPUNIT_ASSERT_EQUAL( elem56_dof_indices[3], elem48_dof_indices[3] );
1177 CPPUNIT_ASSERT_EQUAL( elem41_dof_indices[4], elem45_dof_indices[0] );
1178 CPPUNIT_ASSERT_EQUAL( elem41_dof_indices[5], elem45_dof_indices[1] );
1179 CPPUNIT_ASSERT_EQUAL( elem41_dof_indices[6], elem45_dof_indices[2] );
1180 CPPUNIT_ASSERT_EQUAL( elem41_dof_indices[7], elem45_dof_indices[3] );
1182 CPPUNIT_ASSERT_EQUAL( elem42_dof_indices[4], elem46_dof_indices[0] );
1183 CPPUNIT_ASSERT_EQUAL( elem42_dof_indices[5], elem46_dof_indices[1] );
1184 CPPUNIT_ASSERT_EQUAL( elem42_dof_indices[6], elem46_dof_indices[2] );
1185 CPPUNIT_ASSERT_EQUAL( elem42_dof_indices[7], elem46_dof_indices[3] );
1187 CPPUNIT_ASSERT_EQUAL( elem43_dof_indices[4], elem47_dof_indices[0] );
1188 CPPUNIT_ASSERT_EQUAL( elem43_dof_indices[5], elem47_dof_indices[1] );
1189 CPPUNIT_ASSERT_EQUAL( elem43_dof_indices[6], elem47_dof_indices[2] );
1190 CPPUNIT_ASSERT_EQUAL( elem43_dof_indices[7], elem47_dof_indices[3] );
1192 CPPUNIT_ASSERT_EQUAL( elem44_dof_indices[4], elem48_dof_indices[0] );
1193 CPPUNIT_ASSERT_EQUAL( elem44_dof_indices[5], elem48_dof_indices[1] );
1194 CPPUNIT_ASSERT_EQUAL( elem44_dof_indices[6], elem48_dof_indices[2] );
1195 CPPUNIT_ASSERT_EQUAL( elem44_dof_indices[7], elem48_dof_indices[3] );
1199 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[1], elem54_dof_indices[0] );
1200 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[2], elem54_dof_indices[3] );
1201 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[3], elem55_dof_indices[0] );
1202 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[2], elem55_dof_indices[1] );
1203 CPPUNIT_ASSERT_EQUAL( elem53_dof_indices[2], elem56_dof_indices[0] );
1204 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[3], elem55_dof_indices[1] );
1205 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[3], elem56_dof_indices[0] );
1206 CPPUNIT_ASSERT_EQUAL( elem54_dof_indices[2], elem56_dof_indices[1] );
1207 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[1], elem56_dof_indices[0] );
1208 CPPUNIT_ASSERT_EQUAL( elem55_dof_indices[2], elem56_dof_indices[3] );