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] );