Go to the documentation of this file.
   20 #include "libmesh/side.h" 
   21 #include "libmesh/cell_pyramid5.h" 
   22 #include "libmesh/edge_edge2.h" 
   23 #include "libmesh/face_tri3.h" 
   24 #include "libmesh/face_quad4.h" 
   25 #include "libmesh/enum_io_package.h" 
   26 #include "libmesh/enum_order.h" 
   85                                const unsigned int s)
 const 
   87   libmesh_assert_less (s, 
n_sides());
 
   96   libmesh_assert_less(s, 
n_sides());
 
   97   auto trim = (s == 4) ? 0 : 1;
 
  102                                const unsigned int e)
 const 
  104   libmesh_assert_less (e, 
n_edges());
 
  131   libmesh_assert_less (i, this->
n_sides());
 
  141           return libmesh_make_unique<Side<Tri3,Pyramid5>>(
this,i);
 
  144           return libmesh_make_unique<Side<Quad4,Pyramid5>>(
this,i);
 
  147           libmesh_error_msg(
"Invalid side i = " << i);
 
  154       std::unique_ptr<Elem> face;
 
  163             face = libmesh_make_unique<Tri3>();
 
  168             face = libmesh_make_unique<Quad4>();
 
  172           libmesh_error_msg(
"Invalid side i = " << i);
 
  178       for (
auto n : face->node_index_range())
 
  179         face->set_node(n) = this->
node_ptr(Pyramid5::side_nodes_map[i][n]);
 
  188                                const unsigned int i)
 
  197   libmesh_assert_less (i, this->
n_edges());
 
  199   return libmesh_make_unique<SideEdge<Edge2,Pyramid5>>(
this,i);
 
  206                             std::vector<dof_id_type> & conn)
 const 
  240       libmesh_error_msg(
"Unsupported IO package " << iop);
 
  
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int i) override
Builds a EDGE2 built coincident with edge i.
 
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i, bool proxy=true) override
Builds a QUAD4 or TRI3 built coincident with face i.
 
static const int num_sides
 
virtual Real volume() const override
Specialization for computing the volume of a pyramid.
 
IOPackage
libMesh interfaces with several different software packages for the purposes of creating,...
 
static const int num_edges
 
Defines a Cartesian bounding box by the two corner extremum.
 
The libMesh namespace provides an interface to certain functionality in the library.
 
static const unsigned int edge_nodes_map[num_edges][nodes_per_edge]
This maps the  node of the  edge to element node numbers.
 
IterBase * end
Also have a polymorphic pointer to the end object, this prevents iterating past the end.
 
static const unsigned int side_nodes_map[num_sides][nodes_per_side]
This maps the  node of the  side to element node numbers.
 
static const int num_nodes
Geometric constants for Pyramid5.
 
virtual bool is_edge(const unsigned int i) const override
 
T triple_product(const TypeVector< T > &a, const TypeVector< T > &b, const TypeVector< T > &c)
 
virtual unsigned int n_edges() const override
 
Node ** _nodes
Pointers to the nodes we are connected to.
 
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override
 
const Point & point(const unsigned int i) const
 
static const int nodes_per_side
 
virtual bool has_affine_map() const override
 
static const int nodes_per_edge
 
virtual bool is_vertex(const unsigned int i) const override
 
A Point defines a location in LIBMESH_DIM dimensional Real space.
 
virtual bool is_node_on_side(const unsigned int n, const unsigned int s) const override
 
virtual unsigned int n_sides() const override
 
virtual BoundingBox loose_bounding_box() const
 
virtual bool is_node_on_edge(const unsigned int n, const unsigned int e) const override
 
virtual std::vector< unsigned int > nodes_on_side(const unsigned int s) const override
 
virtual unsigned int n_sub_elem() const override
 
virtual BoundingBox loose_bounding_box() const override
Builds a bounding box out of the nodal positions.
 
subdomain_id_type subdomain_id() const
 
static const int num_children
 
virtual bool is_face(const unsigned int i) const override
 
virtual void connectivity(const unsigned int sc, const IOPackage iop, std::vector< dof_id_type > &conn) const override
 
dof_id_type node_id(const unsigned int i) const
 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
 
const Node * node_ptr(const unsigned int i) const
 
virtual Order default_order() const override