20 #ifndef LIBMESH_SIDE_H 21 #define LIBMESH_SIDE_H 47 template <
class S
ideType,
class ParentType>
48 class Side :
public SideType
56 const unsigned int side_in) :
57 SideType(const_cast<
Elem *>(parent_in)),
60 libmesh_assert(parent_in);
63 libmesh_assert_equal_to ((this->dim()+1), this->parent()->dim());
65 for (
auto n : this->node_index_range())
66 this->_nodes[n] = this->parent()->node_ptr
74 virtual ~Side() =
default;
81 libmesh_assert_less (i, this->
n_nodes());
82 return this->parent()->set_node (ParentType::side_nodes_map[
_side_number][i]);
105 template <
class EdgeType,
class ParentType>
114 const unsigned int my_edge) :
115 EdgeType(const_cast<
Elem *>(my_parent)),
118 libmesh_assert(my_parent);
119 libmesh_assert_less (
_edge_number, this->parent()->n_edges());
120 libmesh_assert_equal_to (this->dim(), 1);
122 for (
auto n : this->node_index_range())
123 this->_nodes[n] = this->parent()->node_ptr
132 libmesh_assert_less (i, this->
n_nodes());
133 return this->parent()->set_node (ParentType::edge_nodes_map[
_edge_number][i]);
147 #endif // LIBMESH_SIDE_H A geometric point in (x,y,z) space associated with a DOF.
The base class for all geometric element types.
const unsigned int _edge_number
SideEdge(const Elem *my_parent, const unsigned int my_edge)
const dof_id_type n_nodes
const unsigned int _side_number
virtual Node *& set_node(const unsigned int i) override
Proxy class for efficiently representing an Elem's side.
Side & operator=(const Side &)=delete
Side(const Elem *parent_in, const unsigned int side_in)
virtual Node *& set_node(const unsigned int i) override