20 #ifndef LIBMESH_SIDE_H 
   21 #define LIBMESH_SIDE_H 
   24 #include "libmesh/libmesh_common.h" 
   25 #include "libmesh/elem.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)),
 
   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)),
 
  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