20 #ifndef LIBMESH_CELL_TET_H 21 #define LIBMESH_CELL_TET_H 24 #include "libmesh/cell.h" 54 Tet (
const Tet &) =
delete;
57 virtual ~Tet() =
default;
65 libmesh_assert_less(i, this->
n_nodes());
81 virtual unsigned int n_sides() const override final {
return 4; }
86 virtual unsigned int n_vertices() const override final {
return 4; }
91 virtual unsigned int n_edges() const override final {
return 6; }
96 virtual unsigned int n_faces() const override final {
return 4; }
101 virtual unsigned int n_children() const override final {
return 8; }
107 const unsigned int s)
const override final;
132 unsigned int side_node)
const override;
138 unsigned int edge_node)
const override;
143 virtual std::unique_ptr<Elem>
side_ptr (
const unsigned int i)
override final;
148 virtual void side_ptr (std::unique_ptr<Elem> & side,
const unsigned int i)
override final;
188 virtual std::vector<unsigned int>
sides_on_edge(
const unsigned int e)
const override final;
191 #ifdef LIBMESH_ENABLE_AMR 206 #endif // LIBMESH_ENABLE_AMR 213 virtual bool is_flipped() const override final;
242 const
unsigned int s,
243 const
unsigned int checked_nodes[][3] ) const;
270 #endif // LIBMESH_CELL_TET_H virtual bool is_edge_on_side(const unsigned int e, const unsigned int s) const override final
virtual Point master_point(const unsigned int i) const override final
virtual Real quality(const ElemQuality q) const override
static const unsigned int edge_sides_map[6][2]
This maps each edge to the sides that contain said edge.
A Node is like a Point, but with more information.
virtual unsigned int n_faces() const override final
virtual unsigned int n_permutations() const override final
Four sides, three orientations.
virtual unsigned int local_side_node(unsigned int side, unsigned int side_node) const override
virtual dof_id_type key() const
static constexpr Real TOLERANCE
virtual unsigned int n_sides() const override final
static const int num_sides
Geometric constants for all Tets.
Diagonal
This enumeration keeps track of which diagonal is selected during refinement.
This is the base class from which all geometric element types are derived.
static const int num_edges
virtual unsigned int n_children() const override final
Diagonal _diagonal_selection
The currently-selected diagonal used during refinement.
The libMesh namespace provides an interface to certain functionality in the library.
virtual std::pair< Real, Real > qual_bounds(const ElemQuality q) const override
virtual bool is_flipped() const override final
static const unsigned int adjacent_edges_map[4][3]
This maps the node to the (in this case) 3 edge ids adjacent to the node.
void set_interior_parent(Elem *p)
Sets the pointer to the element's interior_parent.
The Tet is an element in 3D composed of 4 sides.
virtual unsigned int local_edge_node(unsigned int edge, unsigned int edge_node) const override
Tet(const unsigned int nn, Elem *p, Node **nodelinkdata)
Default tetrahedral element, takes number of nodes and parent.
static const Real _master_points[14][3]
Master element node locations.
virtual unsigned int n_vertices() const override final
virtual bool on_reference_element(const Point &p, const Real eps=TOLERANCE) const override final
virtual dof_id_type low_order_key(const unsigned int s) const override
virtual unsigned int n_nodes() const =0
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override final
Diagonal diagonal_selection() const
The Cell is an abstract element type that lives in three dimensions.
virtual unsigned int n_edges() const override final
ElemQuality
Defines an enum for element quality metrics.
Elem * _elemlinks_data[5+(LIBMESH_DIM >3)]
Data for links to parent/neighbor/interior_parent elements.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void select_diagonal(const Diagonal diag) const
Allows the user to select the diagonal for the refinement.
virtual std::vector< unsigned int > sides_on_edge(const unsigned int e) const override final
void choose_diagonal() const
Derived classes use this function to select an initial diagonal during refinement.
static const int num_children
bool is_child_on_side_helper(const unsigned int c, const unsigned int s, const unsigned int checked_nodes[][3]) const
Called by descendant classes with appropriate data to determine if child c is on side s...
A Point defines a location in LIBMESH_DIM dimensional Real space.
virtual std::vector< unsigned int > edges_adjacent_to_node(const unsigned int n) const override
virtual unsigned int embedding_matrix_version() const override final
Tetrahedral elements permute the embedding matrix depending on which interior diagonal is used to sub...
Tet & operator=(const Tet &)=delete