libMesh
Public Member Functions | Protected Attributes | Private Attributes | List of all members
SideTest< ElemClass, side_type, indexbegin, indexend > Class Template Reference
Inheritance diagram for SideTest< ElemClass, side_type, indexbegin, indexend >:
[legend]

Public Member Functions

void setUp ()
 
void tearDown ()
 
void testIsNodeOnSide ()
 
void testNodesOnSide ()
 
void testSidePtr ()
 
void testSidePtrFill ()
 
void testBuildSidePtr ()
 
void testBuildSidePtrFill ()
 

Protected Attributes

std::string libmesh_suite_name
 

Private Attributes

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

Detailed Description

template<typename ElemClass, ElemType side_type, unsigned short indexbegin, unsigned short indexend>
class SideTest< ElemClass, side_type, indexbegin, indexend >

Definition at line 52 of file side_test.C.

Member Function Documentation

◆ setUp()

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

Definition at line 62 of file side_test.C.

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

◆ tearDown()

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

Definition at line 78 of file side_test.C.

78 {}

◆ testBuildSidePtr()

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
void SideTest< ElemClass, side_type, indexbegin, indexend >::testBuildSidePtr ( )
inline

Definition at line 164 of file side_test.C.

References libMesh::make_range().

165  {
166  LOG_UNIT_TEST;
167 
168  for (auto s : make_range(indexbegin, indexend))
169  {
170  std::unique_ptr<Elem> side = elem.build_side_ptr(s);
171 
172  CPPUNIT_ASSERT(side->type() == side_type);
173  CPPUNIT_ASSERT(side->subdomain_id() == elem.subdomain_id());
174 
175 #ifdef LIBMESH_ENABLE_AMR
176  // p-refinement is only available if LIBMESH_ENABLE_AMR is defined.
177  CPPUNIT_ASSERT(side->p_level() == elem.p_level());
178 #endif
179  }
180  }
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
ElemClass elem
Definition: side_test.C:55

◆ testBuildSidePtrFill()

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
void SideTest< ElemClass, side_type, indexbegin, indexend >::testBuildSidePtrFill ( )
inline

Definition at line 182 of file side_test.C.

References libMesh::make_range().

183  {
184  LOG_UNIT_TEST;
185 
186  std::unique_ptr<Elem> side;
187 
188  for (auto s : make_range(indexbegin, indexend))
189  {
190  elem.build_side_ptr(side, s);
191  std::unique_ptr<Elem> side_new = elem.build_side_ptr(s);
192 
193  CPPUNIT_ASSERT(side->type() == side_type);
194  CPPUNIT_ASSERT(*side == *side_new);
195  }
196  }
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
ElemClass elem
Definition: side_test.C:55

◆ testIsNodeOnSide()

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
void SideTest< ElemClass, side_type, indexbegin, indexend >::testIsNodeOnSide ( )
inline

Definition at line 80 of file side_test.C.

References libMesh::make_range().

81  {
82  LOG_UNIT_TEST;
83 
84  for (auto s : make_range(indexbegin, indexend))
85  {
86  std::unique_ptr<Elem> side = elem.build_side_ptr(s);
87  for (auto n : elem.node_index_range())
88  {
89  const Node * node = elem.node_ptr(n);
90  bool found_node = false;
91  for (auto sn : side->node_index_range())
92  if (node == side->node_ptr(sn))
93  {
94  found_node = true;
95  break;
96  }
97 
98  if (elem.is_node_on_side(n, s))
99  {
100  CPPUNIT_ASSERT(found_node);
101  }
102  else
103  {
104  CPPUNIT_ASSERT(!found_node);
105  }
106  }
107  }
108  }
A Node is like a Point, but with more information.
Definition: node.h: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
ElemClass elem
Definition: side_test.C:55

◆ testNodesOnSide()

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
void SideTest< ElemClass, side_type, indexbegin, indexend >::testNodesOnSide ( )
inline

Definition at line 110 of file side_test.C.

References libMesh::make_range().

111  {
112  LOG_UNIT_TEST;
113 
114  for (auto s : make_range(indexbegin, indexend))
115  {
116  std::unique_ptr<Elem> side = elem.build_side_ptr(s);
117  std::vector<unsigned int> side_nodes = elem.nodes_on_side(s);
118 
119  CPPUNIT_ASSERT_EQUAL(side_nodes.size(), std::size_t(side->n_nodes()));
120 
121  for (auto sn : side->node_index_range())
122  {
123  const Node * node = side->node_ptr(sn);
124  bool found_node = false;
125  for (auto si : side_nodes)
126  if (node == elem.node_ptr(si))
127  {
128  found_node = true;
129  break;
130  }
131  CPPUNIT_ASSERT(found_node);
132  }
133  }
134  }
A Node is like a Point, but with more information.
Definition: node.h: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
ElemClass elem
Definition: side_test.C:55

◆ testSidePtr()

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
void SideTest< ElemClass, side_type, indexbegin, indexend >::testSidePtr ( )
inline

Definition at line 136 of file side_test.C.

References libMesh::Elem::first_order_equivalent_type(), and libMesh::make_range().

137  {
138  LOG_UNIT_TEST;
139 
140  for (auto s : make_range(indexbegin, indexend))
141  {
142  std::unique_ptr<Elem> side = elem.side_ptr(s);
143 
144  CPPUNIT_ASSERT(side->type() ==
145  Elem::first_order_equivalent_type(side_type));
146  }
147  }
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
ElemClass elem
Definition: side_test.C:55

◆ testSidePtrFill()

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
void SideTest< ElemClass, side_type, indexbegin, indexend >::testSidePtrFill ( )
inline

Definition at line 149 of file side_test.C.

References libMesh::Elem::first_order_equivalent_type(), and libMesh::make_range().

150  {
151  LOG_UNIT_TEST;
152 
153  std::unique_ptr<Elem> side;
154 
155  for (auto s : make_range(indexbegin, indexend))
156  {
157  elem.side_ptr(side, s);
158 
159  CPPUNIT_ASSERT(side->type() ==
160  Elem::first_order_equivalent_type(side_type));
161  }
162  }
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
ElemClass elem
Definition: side_test.C:55

Member Data Documentation

◆ elem

template<typename ElemClass , ElemType side_type, unsigned short indexbegin, unsigned short indexend>
ElemClass SideTest< ElemClass, side_type, indexbegin, indexend >::elem
private

Definition at line 55 of file side_test.C.

◆ libmesh_suite_name

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

Definition at line 59 of file side_test.C.

◆ nodes

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

Definition at line 56 of file side_test.C.


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