libMesh
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  }
std::vector< std::unique_ptr< Node > > nodes
Definition: edge_test.C:53
ElemClass elem
Definition: edge_test.C:52
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:39

◆ 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.

References libMesh::make_range().

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  }
ElemClass elem
Definition: edge_test.C:52
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:140

◆ 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.

References libMesh::make_range().

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:52
ElemClass elem
Definition: edge_test.C:52
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:140

◆ 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.

References libMesh::make_range().

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  }
A Node is like a Point, but with more information.
Definition: node.h:52
ElemClass elem
Definition: edge_test.C:52
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:140

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

Definition at line 52 of file edge_test.C.

◆ 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

Definition at line 53 of file edge_test.C.


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