1 #include <libmesh/libmesh.h>
2 #include <libmesh/mesh.h>
3 #include <libmesh/elem.h>
4 #include <libmesh/mesh_generation.h>
5 #include <libmesh/mesh_refinement.h>
24 CPPUNIT_TEST( testExtraIntegersEdge2 );
25 CPPUNIT_TEST( testExtraIntegersTri6 );
27 #ifdef LIBMESH_HAVE_XDR
28 CPPUNIT_TEST( testExtraIntegersCheckpointEdge3 );
29 CPPUNIT_TEST( testExtraIntegersCheckpointHex8 );
32 CPPUNIT_TEST_SUITE_END();
36 std::array<unsigned int, 6>
47 const std::unique_ptr<Elem> test_elem =
Elem::build(elem_type);
48 const unsigned int ymax = test_elem->dim() > 1;
49 const unsigned int zmax = test_elem->dim() > 2;
50 const unsigned int ny = ymax * n_elem_per_side;
51 const unsigned int nz = zmax * n_elem_per_side;
61 return {i1, r1, ni1, ni2, nr1, nr2};
65 void test_and_set_initial_data
68 const unsigned int i1 = ini[0],
75 const unsigned int expected_extra_ints =
77 CPPUNIT_ASSERT_EQUAL(elem->n_extra_integers(), expected_extra_ints);
79 elem->set_extra_integer(i1,
dof_id_type(elem->point(0)(0)*100));
80 CPPUNIT_ASSERT_EQUAL(elem->get_extra_integer(i1),
dof_id_type(elem->point(0)(0)*100));
81 elem->set_extra_datum<
Real>(r1, elem->point(0)(0)*1000);
82 CPPUNIT_ASSERT_EQUAL(elem->get_extra_datum<
Real>(r1), elem->point(0)(0)*1000);
87 const unsigned int expected_extra_ints =
89 CPPUNIT_ASSERT_EQUAL(node->n_extra_integers(), expected_extra_ints);
92 node->set_extra_datum<
Real>(nr1, (*node)(0)*1000);
93 CPPUNIT_ASSERT_EQUAL(node->get_extra_datum<
Real>(nr1), (*node)(0)*1000);
105 const Elem * top_parent = elem;
106 #ifdef LIBMESH_ENABLE_AMR
111 for (
auto & node : elem->node_ref_range())
113 const unsigned int expected_extra_ints =
115 CPPUNIT_ASSERT_EQUAL(node.n_extra_integers(), expected_extra_ints);
118 const unsigned int expected_extra_ints =
120 CPPUNIT_ASSERT_EQUAL(elem->n_extra_integers(), expected_extra_ints);
121 CPPUNIT_ASSERT_EQUAL(elem->get_extra_integer(i1),
dof_id_type(top_parent->
point(0)(0)*100));
130 std::array<unsigned int, 6> ini = build_mesh(
mesh, elem_type, n_elem_per_side);
131 const unsigned int i1 = ini[0],
135 test_and_set_initial_data(
mesh, ini);
147 test_final_integers(
mesh, i1);
149 #ifdef LIBMESH_ENABLE_AMR
153 test_final_integers(
mesh, i1);
161 std::array<unsigned int, 6> ini = build_mesh(
mesh, elem_type, n_elem_per_side);
162 const unsigned int i1 = ini[0], ni1 = ini[2], ni2 = ini[3];
164 test_and_set_initial_data(
mesh, ini);
166 const std::string filename =
167 std::string(
"extra_integers.cp") + (binary ?
"r" :
"a");
175 mesh2.
read(filename);
183 test_final_integers(mesh2, i1);