1 #include <libmesh/elem.h> 2 #include <libmesh/reference_elem.h> 16 CPPUNIT_TEST( testPyramids );
17 CPPUNIT_TEST( testPrisms );
18 CPPUNIT_TEST( testTets );
19 CPPUNIT_TEST( testHexes );
21 CPPUNIT_TEST_SUITE_END();
31 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4), pyr5.
local_side_node(1, 2));
33 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(0), pyr5.
local_edge_node(0, 0));
35 for (
unsigned int edge=4; edge<8; ++edge)
36 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4),
42 #if !defined(NDEBUG) && defined(LIBMESH_ENABLE_EXCEPTIONS) 53 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(-1), n);
61 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(99), n);
66 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(10), pyr13.
local_side_node(1, 5));
68 for (
unsigned int edge=4; edge<8; ++edge)
69 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4),
74 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(13), pyr14.
local_side_node(4, 8));
76 for (
unsigned int edge=4; edge<8; ++edge)
77 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4),
82 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(13), pyr18.
local_side_node(4, 8));
84 for (
unsigned int side=0; side<4; ++side)
85 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(14+side), pyr18.
local_side_node(side, 6));
87 for (
unsigned int edge=4; edge<8; ++edge)
88 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4),
102 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4),
108 for (
unsigned int i=0; i!=3; ++i)
110 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i%2),
112 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(1+(i>0)),
114 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i),
116 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+3),
118 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i%2+3),
120 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4+(i>0)),
128 #if !defined(NDEBUG) && defined(LIBMESH_ENABLE_EXCEPTIONS) 143 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(-1), n);
153 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(99), n);
161 for (
unsigned int i=0; i!=3; ++i)
163 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+6),
165 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+6),
167 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(8-i),
169 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+9),
171 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+9),
173 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+9),
175 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+12),
177 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+12),
179 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(i+12),
189 for (
unsigned int side=1; side<4; ++side)
191 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(side+14),
200 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(18),
202 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(19),
215 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(0), tet4.
local_side_node(0, 0));
218 for (
unsigned int edge=3; edge<6; ++edge)
219 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(3),
224 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(4), tet10.
local_side_node(1, 3));
226 for (
unsigned int edge=0; edge<3; ++edge)
227 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(edge + 4),
239 CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(7), hex8.
local_side_node(3, 2));
245 for (
unsigned int side=0; side<hex8.
n_sides(); ++side)
246 for (
unsigned int node=0; node<4; ++node)
250 hex20.local_side_node(side, node));
253 CPPUNIT_ASSERT_EQUAL(hex20.local_side_node(side, node),
257 for (
unsigned int edge=0; edge<hex8.
n_edges(); ++edge)
258 for (
unsigned int node=0; node<2; ++node)
262 hex20.local_edge_node(edge, node));
265 CPPUNIT_ASSERT_EQUAL(hex20.local_edge_node(edge, node),
ElemType
Defines an enum for geometric element types.
This is the base class from which all geometric element types are derived.
This class uses RAII to control redirecting the libMesh::err stream to NULL and restoring it around s...
CPPUNIT_TEST_SUITE_REGISTRATION(WhichNodeAmITest)
The libMesh namespace provides an interface to certain functionality in the library.
virtual unsigned int local_side_node(unsigned int side, unsigned int side_node) const =0
virtual unsigned int local_edge_node(unsigned int edge, unsigned int edge_node) const =0
Similar to Elem::local_side_node(), but instead of a side id, takes an edge id and a node id on that ...
virtual unsigned int n_edges() const =0
virtual unsigned int n_sides() const =0
const Elem & get(const ElemType type_in)