libMesh
Public Member Functions | 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 ()
 

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 48 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 55 of file side_test.C.

55  {
56  elem.set_id() = 0;
57  Point dummy;
58  for (auto i : elem.node_index_range())
59  {
60  nodes.push_back(libmesh_make_unique<Node>(dummy, /*id=*/i));
61  elem.set_node(i) = nodes[i].get();
62  }
63  }

◆ 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 65 of file side_test.C.

65 {}

◆ 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 143 of file side_test.C.

144  {
145  for (auto s : IntRange<unsigned short>(indexbegin, indexend))
146  {
147  std::unique_ptr<Elem> side = elem.build_side_ptr(s);
148 
149  CPPUNIT_ASSERT(side->type() == side_type);
150  }
151  }

◆ 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 153 of file side_test.C.

154  {
155  std::unique_ptr<Elem> side;
156 
157  for (auto s : IntRange<unsigned short>(indexbegin, indexend))
158  {
159  elem.build_side_ptr(side, s);
160  std::unique_ptr<Elem> side_new = elem.build_side_ptr(s);
161 
162  CPPUNIT_ASSERT(side->type() == side_type);
163  CPPUNIT_ASSERT(*side == *side_new);
164  }
165  }

◆ 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 67 of file side_test.C.

68  {
69  for (auto s : IntRange<unsigned short>(indexbegin, indexend))
70  {
71  std::unique_ptr<Elem> side = elem.build_side_ptr(s);
72  for (auto n : elem.node_index_range())
73  {
74  const Node * node = elem.node_ptr(n);
75  bool found_node = false;
76  for (auto sn : side->node_index_range())
77  if (node == side->node_ptr(sn))
78  {
79  found_node = true;
80  break;
81  }
82 
83  if (elem.is_node_on_side(n, s))
84  {
85  CPPUNIT_ASSERT(found_node);
86  }
87  else
88  {
89  CPPUNIT_ASSERT(!found_node);
90  }
91  }
92  }
93  }

◆ 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 95 of file side_test.C.

96  {
97  for (auto s : IntRange<unsigned short>(indexbegin, indexend))
98  {
99  std::unique_ptr<Elem> side = elem.build_side_ptr(s);
100  std::vector<unsigned int> side_nodes = elem.nodes_on_side(s);
101 
102  CPPUNIT_ASSERT_EQUAL(side_nodes.size(), std::size_t(side->n_nodes()));
103 
104  for (auto sn : side->node_index_range())
105  {
106  const Node * node = side->node_ptr(sn);
107  bool found_node = false;
108  for (auto si : side_nodes)
109  if (node == elem.node_ptr(si))
110  {
111  found_node = true;
112  break;
113  }
114  CPPUNIT_ASSERT(found_node);
115  }
116  }
117  }

◆ 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 119 of file side_test.C.

120  {
121  for (auto s : IntRange<unsigned short>(indexbegin, indexend))
122  {
123  std::unique_ptr<Elem> side = elem.side_ptr(s);
124 
125  CPPUNIT_ASSERT(side->type() ==
126  Elem::first_order_equivalent_type(side_type));
127  }
128  }

References libMesh::Elem::first_order_equivalent_type().

◆ 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 130 of file side_test.C.

131  {
132  std::unique_ptr<Elem> side;
133 
134  for (auto s : IntRange<unsigned short>(indexbegin, indexend))
135  {
136  elem.side_ptr(side, s);
137 
138  CPPUNIT_ASSERT(side->type() ==
139  Elem::first_order_equivalent_type(side_type));
140  }
141  }

References libMesh::Elem::first_order_equivalent_type().

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 51 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 52 of file side_test.C.


The documentation for this class was generated from the following file:
libMesh::IntRange
The IntRange templated class is intended to make it easy to loop over integers which are indices of a...
Definition: int_range.h:53
SideTest::nodes
std::vector< std::unique_ptr< Node > > nodes
Definition: side_test.C:52
libMesh::Point
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:38
libMesh::Node
A Node is like a Point, but with more information.
Definition: node.h:52
SideTest::elem
ElemClass elem
Definition: side_test.C:51