libMesh
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | Private Attributes | List of all members
EdgeTest< ElemClass, edge_type, indexbegin, indexend > Class Template Reference
Inheritance diagram for EdgeTest< ElemClass, edge_type, indexbegin, indexend >:
[legend]

Public Member Functions

void setUp ()
 
void tearDown ()
 
void testIsNodeOnEdge ()
 
void testNodesOnEdge ()
 
void testBuildEdgePtr ()
 

Protected Attributes

std::string libmesh_suite_name
 

Private Attributes

ElemClass elem
 
std::vector< std::unique_ptr< Node > > nodes
 

Detailed Description

template<typename ElemClass, ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
class EdgeTest< ElemClass, edge_type, indexbegin, indexend >

Definition at line 49 of file edge_test.C.

Member Function Documentation

◆ setUp()

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
void EdgeTest< ElemClass, edge_type, indexbegin, indexend >::setUp ( )
inline

Definition at line 59 of file edge_test.C.

59 {
60 elem.set_id() = 0;
61#ifdef LIBMESH_ENABLE_AMR
62 // Do tests with an Elem having a non-default p_level to ensure
63 // that edges which are built have a matching p_level. p-refinement
64 // is only available if LIBMESH_ENABLE_AMR is defined.
65 elem.set_p_level(1);
66#endif
67 Point dummy;
68 for (auto i : elem.node_index_range())
69 {
70 nodes.push_back(std::make_unique<Node>(dummy, /*id=*/i));
71 elem.set_node(i, nodes[i].get());
72 }
73 }
ElemClass elem
Definition edge_test.C:52
std::vector< std::unique_ptr< Node > > nodes
Definition edge_test.C:53
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition point.h:40
const Elem & get(const ElemType type_in)

References EdgeTest< ElemClass, edge_type, indexbegin, indexend >::elem, and EdgeTest< ElemClass, edge_type, indexbegin, indexend >::nodes.

◆ tearDown()

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
void EdgeTest< ElemClass, edge_type, indexbegin, indexend >::tearDown ( )
inline

Definition at line 75 of file edge_test.C.

75{}

◆ testBuildEdgePtr()

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
void EdgeTest< ElemClass, edge_type, indexbegin, indexend >::testBuildEdgePtr ( )
inline

Definition at line 133 of file edge_test.C.

134 {
135 LOG_UNIT_TEST;
136
137 for (auto e : make_range(indexbegin, indexend))
138 {
139 std::unique_ptr<Elem> edge = elem.build_edge_ptr(e);
140
141 CPPUNIT_ASSERT(edge->type() == edge_type);
142 CPPUNIT_ASSERT(edge->subdomain_id() == elem.subdomain_id());
143
144#ifdef LIBMESH_ENABLE_AMR
145 // p-refinement is only available if LIBMESH_ENABLE_AMR is defined.
146 CPPUNIT_ASSERT(edge->p_level() == elem.p_level());
147#endif
148 }
149 }
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition int_range.h:176

References EdgeTest< ElemClass, edge_type, indexbegin, indexend >::elem, and libMesh::make_range().

◆ testIsNodeOnEdge()

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
void EdgeTest< ElemClass, edge_type, indexbegin, indexend >::testIsNodeOnEdge ( )
inline

Definition at line 77 of file edge_test.C.

78 {
79 LOG_UNIT_TEST;
80
81 for (auto e : make_range(indexbegin, indexend))
82 {
83 std::unique_ptr<Elem> edge = elem.build_edge_ptr(e);
84 for (auto n : elem.node_index_range())
85 {
86 const Node * node = elem.node_ptr(n);
87 bool found_node = false;
88 for (auto en : edge->node_index_range())
89 if (node == edge->node_ptr(en))
90 {
91 found_node = true;
92 break;
93 }
94
95 if (elem.is_node_on_edge(n, e))
96 {
97 CPPUNIT_ASSERT(found_node);
98 }
99 else
100 {
101 CPPUNIT_ASSERT(!found_node);
102 }
103 }
104 }
105 }
A Node is like a Point, but with more information.
Definition node.h:55

References EdgeTest< ElemClass, edge_type, indexbegin, indexend >::elem, and libMesh::make_range().

◆ testNodesOnEdge()

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
void EdgeTest< ElemClass, edge_type, indexbegin, indexend >::testNodesOnEdge ( )
inline

Definition at line 107 of file edge_test.C.

108 {
109 LOG_UNIT_TEST;
110
111 for (auto e : make_range(indexbegin, indexend))
112 {
113 std::unique_ptr<Elem> edge = elem.build_edge_ptr(e);
114 std::vector<unsigned int> edge_nodes = elem.nodes_on_edge(e);
115
116 CPPUNIT_ASSERT_EQUAL(edge_nodes.size(), std::size_t(edge->n_nodes()));
117
118 for (auto en : edge->node_index_range())
119 {
120 const Node * node = edge->node_ptr(en);
121 bool found_node = false;
122 for (auto ei : edge_nodes)
123 if (node == elem.node_ptr(ei))
124 {
125 found_node = true;
126 break;
127 }
128 CPPUNIT_ASSERT(found_node);
129 }
130 }
131 }

References EdgeTest< ElemClass, edge_type, indexbegin, indexend >::elem, and libMesh::make_range().

Member Data Documentation

◆ elem

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
ElemClass EdgeTest< ElemClass, edge_type, indexbegin, indexend >::elem
private

◆ libmesh_suite_name

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
std::string EdgeTest< ElemClass, edge_type, indexbegin, indexend >::libmesh_suite_name
protected

Definition at line 56 of file edge_test.C.

◆ nodes

template<typename ElemClass , ElemType edge_type, unsigned short indexbegin, unsigned short indexend>
std::vector<std::unique_ptr<Node> > EdgeTest< ElemClass, edge_type, indexbegin, indexend >::nodes
private

The documentation for this class was generated from the following file: