20 #ifndef LIBMESH_EDGE_H 21 #define LIBMESH_EDGE_H 24 #include "libmesh/elem.h" 45 Edge (
const unsigned int nn,
47 Node ** nodelinkdata) :
59 virtual ~Edge() =
default;
73 virtual unsigned short dim () const override final {
return 1; }
78 virtual unsigned int n_nodes()
const override {
return 2; }
83 virtual unsigned int n_sides() const override final {
return 2; }
88 virtual unsigned int n_vertices() const override final {
return 2; }
93 virtual unsigned int n_edges() const override final {
return 0; }
98 virtual unsigned int n_faces() const override final {
return 0; }
103 virtual unsigned int n_children() const override final {
return 2; }
109 const unsigned int s)
const override final;
115 const unsigned int)
const override final 122 virtual unsigned int opposite_side(
const unsigned int s)
const override final;
130 const unsigned int s)
const override final;
157 unsigned int )
const override final;
164 unsigned int edge_node)
const override final;
169 virtual std::unique_ptr<Elem>
side_ptr (
const unsigned int i)
override final;
174 virtual void side_ptr (std::unique_ptr<Elem> & side,
const unsigned int i)
override final;
179 virtual std::unique_ptr<Elem>
build_side_ptr (
const unsigned int i)
override final;
185 const unsigned int i)
override final;
194 { libmesh_not_implemented();
return std::unique_ptr<Elem>(); }
199 virtual void build_edge_ptr (std::unique_ptr<Elem> &,
const unsigned int)
override final 200 { libmesh_not_implemented(); }
202 virtual std::vector<unsigned int>
nodes_on_side(
const unsigned int s)
const override;
204 virtual std::vector<unsigned int>
nodes_on_edge(
const unsigned int e)
const override;
206 virtual std::vector<unsigned int>
sides_on_edge(
const unsigned int)
const override final 226 {
return (this->
point(0) + this->
point(1)) / 2; }
231 virtual void permute(
unsigned int)
override final { libmesh_error(); }
233 virtual bool is_flipped() const override final;
249 #ifdef LIBMESH_ENABLE_AMR 255 const unsigned int)
const 256 { libmesh_not_implemented();
return 0; }
264 #endif // LIBMESH_EDGE_H virtual unsigned int n_vertices() const override final
ElemType
Defines an enum for geometric element types.
A Node is like a Point, but with more information.
Edge(const unsigned int nn, Elem *p, Node **nodelinkdata)
Default line element, takes number of nodes and parent.
virtual unsigned int local_edge_node(unsigned int edge, unsigned int edge_node) const override final
Throws an error.
Elem * _elemlinks_data[3+(LIBMESH_DIM >1)]
Data for links to parent/neighbor/interior_parent elements.
virtual std::vector< unsigned int > nodes_on_side(const unsigned int s) const override
virtual unsigned int local_side_node(unsigned int side, unsigned int) const override final
virtual dof_id_type key(const unsigned int s) const override final
unsigned int side_children_matrix(const unsigned int, const unsigned int) const
Matrix that allows children to inherit boundary conditions.
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0
virtual dof_id_type key() const
static constexpr Real TOLERANCE
static const int nodes_per_edge
virtual bool is_flipped() const override final
virtual unsigned short dim() const override final
virtual unsigned int n_edges() const override final
This is the base class from which all geometric element types are derived.
The libMesh namespace provides an interface to certain functionality in the library.
static const int num_sides
Geometric constants for all Edges.
virtual void permute(unsigned int) override final
Permutes the element (by swapping node and neighbor pointers) according to the specified index...
void set_interior_parent(Elem *p)
Sets the pointer to the element's interior_parent.
virtual unsigned int n_permutations() const override final
Returns the number of independent permutations of element nodes - e.g.
static const int num_children
virtual std::vector< unsigned int > edges_adjacent_to_node(const unsigned int) const override final
1D elements don't have any edges, but they are themselves edges, so I guess an argument could be made...
virtual bool is_edge_on_side(const unsigned int, const unsigned int) const override final
virtual std::unique_ptr< Elem > build_edge_ptr(const unsigned int) override final
The Elem::build_edge_ptr() member makes no sense for edges.
virtual dof_id_type low_order_key(const unsigned int s) const override final
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i) override final
const int invalid_int
A number which is used quite often to represent an invalid or uninitialized value for an integer...
virtual Point quasicircumcenter() const override
virtual unsigned int opposite_side(const unsigned int s) const override final
virtual std::unique_ptr< Elem > side_ptr(const unsigned int i) override final
virtual unsigned int n_children() const override final
virtual unsigned int n_faces() const override final
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int center_node_on_side(const unsigned short side) const override final
virtual void build_edge_ptr(std::unique_ptr< Elem > &, const unsigned int) override final
The Elem::build_edge_ptr() member makes no sense for edges.
static const int num_edges
virtual bool on_reference_element(const Point &p, const Real eps=TOLERANCE) const override final
Edge & operator=(const Edge &)=delete
The Edge is an element in 1D.
ElemType side_type(const unsigned int s) const override final
virtual std::vector< unsigned int > sides_on_edge(const unsigned int) const override final
static dof_id_type compute_key(dof_id_type n0)
virtual unsigned int opposite_node(const unsigned int n, const unsigned int s) const override final
A Point defines a location in LIBMESH_DIM dimensional Real space.
dof_id_type node_id(const unsigned int i) const
const Point & point(const unsigned int i) const
virtual unsigned int n_nodes() const override
virtual std::vector< unsigned int > nodes_on_edge(const unsigned int e) const override
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const override final
virtual unsigned int n_sides() const override final
static const int nodes_per_side