![]()  | 
  
    OGS
    
   | 
 
Template for implementing mesh element classes
| T_BASE | Base element class, e.g. Face, Cell | 
| ELEMENT_RULE | Geometrical and topological rules of the element | 
Definition at line 34 of file TemplateElement.h.
#include <TemplateElement.h>
Public Member Functions | |
| TemplateElement (Node *nodes[n_all_nodes], std::size_t id=std::numeric_limits< std::size_t >::max()) | |
| TemplateElement (std::array< Node *, n_all_nodes > const &nodes, std::size_t id=std::numeric_limits< std::size_t >::max()) | |
| TemplateElement (const TemplateElement &e) | |
| Copy constructor.   | |
| Element * | clone () const override | 
| Returns a copy of this object.   | |
| Element * | clone (Node **nodes, std::size_t id) const override | 
| constexpr unsigned | getDimension () const override | 
| Get dimension of the mesh element.   | |
| const Element * | getEdge (unsigned i) const override | 
| Returns the edge i of the element.   | |
| const Element * | getFace (unsigned i) const override | 
| Returns the face i of the element.   | |
| const Element * | getBoundary (unsigned i) const override | 
| Returns the boundary i of the element.   | |
| unsigned | getNumberOfBoundaries () const override | 
| Returns the number of boundaries of the element.   | |
| unsigned | getNumberOfEdges () const override | 
| Get the number of edges for this element.   | |
| unsigned | getNumberOfFaces () const override | 
| Get the number of faces for this element.   | |
| unsigned | getNumberOfNeighbors () const override | 
| Get the number of neighbors for this element.   | |
| const Element * | getNeighbor (unsigned i) const override | 
| Get the specified neighbor.   | |
| unsigned | getNumberOfBaseNodes () const override | 
| Get the number of linear nodes for this element.   | |
| unsigned | getNumberOfNodes () const override | 
| Get the number of all nodes for this element.   | |
| MeshElemType | getGeomType () const override | 
| Get the type of this element.   | |
| CellType | getCellType () const override | 
| Get the FEM type of this element.   | |
| bool | isEdge (unsigned idx1, unsigned idx2) const override | 
| Returns true if these two indices form an edge and false otherwise.   | |
| bool | isPntInElement (MathLib::Point3d const &pnt, double eps=std::numeric_limits< double >::epsilon()) const override | 
| ElementErrorCode | validate () const override | 
| unsigned | identifyFace (Node const *nodes[3]) const override | 
| Returns the ID of a face given an array of nodes.   | |
| double | computeVolume () override | 
| Calculates the volume of a convex hexahedron by partitioning it into six tetrahedra.   | |
| const Node * | getNode (unsigned idx) const override | 
| Node * | getNode (unsigned idx) override | 
| void | setNode (unsigned idx, Node *node) override | 
| Node *const * | getNodes () const override | 
| Get array of element nodes.   | |
| Node * | getEdgeNode (unsigned edge_id, unsigned node_id) const override | 
| Return a specific edge node.   | |
| bool | testElementNodeOrder () const override | 
| double | getContent () const override final | 
| Returns the length, area or volume of a 1D, 2D or 3D element.   | |
  Public Member Functions inherited from MeshLib::Element | |
| std::optional< unsigned > | addNeighbor (Element *e) | 
| Tries to add an element e as neighbour to this element. If the elements really are neighbours, the element is added to the neighbour-list and the face id of the neighbour connected to this element is returned. Otherwise the maximum value of the value type is returned.   | |
| constexpr std::span< Node *const > | nodes () const | 
| Span of element's nodes, their pointers actually.   | |
| std::size_t | getID () const | 
| Returns the ID of the element.   | |
| virtual bool | isBoundaryElement () const | 
| virtual | ~Element () | 
| Destructor.   | |
Public Attributes | |
| std::array< Node *, n_all_nodes > | _nodes | 
  Public Attributes inherited from MeshLib::Element | |
| unsigned | space_dimension_ = 3u | 
| Dimension of the space, where the element exists.   | |
Static Public Attributes | |
| static const unsigned | n_all_nodes = ELEMENT_RULE::n_all_nodes | 
| Constant: The number of all nodes for this element.   | |
| static const unsigned | n_base_nodes = ELEMENT_RULE::n_base_nodes | 
| Constant: The number of base nodes for this element.   | |
| static const unsigned | dimension = ELEMENT_RULE::dimension | 
| Constant: The dimension of this element.   | |
Additional Inherited Members | |
  Protected Member Functions inherited from MeshLib::Element | |
| Element (std::size_t id) | |
| void | setID (std::size_t id) | 
| Sets the element ID.   | |
| void | setNeighbor (Element *neighbor, unsigned const face_id) | 
  Protected Attributes inherited from MeshLib::Element | |
| std::size_t | _id | 
| Element ** | _neighbors | 
      
  | 
  explicit | 
Constructor with an array of mesh nodes.
| nodes | an array of pointers of mesh nodes which form this element | 
| id | element id | 
Definition at line 16 of file TemplateElement-impl.h.
References MeshLib::Element::_neighbors, MeshLib::TemplateElement< ELEMENT_RULE >::_nodes, MeshLib::TemplateElement< ELEMENT_RULE >::n_all_nodes, MeshLib::Element::nodes(), and MeshLib::Element::space_dimension_.
Referenced by MeshLib::TemplateElement< ELEMENT_RULE >::clone(), and MeshLib::TemplateElement< ELEMENT_RULE >::clone().
      
  | 
  explicit | 
Constructor with an array of mesh nodes
| nodes | an array of pointers of mesh nodes which form this element | 
| id | element id | 
Definition at line 30 of file TemplateElement-impl.h.
References MeshLib::Element::_neighbors, and MeshLib::Element::space_dimension_.
      
  | 
  explicit | 
Copy constructor.
Definition at line 42 of file TemplateElement-impl.h.
References MeshLib::Element::_neighbors, and MeshLib::Element::space_dimension_.
      
  | 
  inlineoverridevirtual | 
Returns a copy of this object.
Implements MeshLib::Element.
Definition at line 70 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::TemplateElement().
      
  | 
  inlineoverridevirtual | 
Constructs a new object polymorphically. This is similar to clone, but accepts new nodes and id.
nodes vector is equal to the derived element's total number of nodes. Implements MeshLib::Element.
Definition at line 71 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::TemplateElement(), and MeshLib::Element::nodes().
      
  | 
  inlineoverridevirtual | 
Calculates the volume of a convex hexahedron by partitioning it into six tetrahedra.
Implements MeshLib::Element.
Definition at line 186 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::_nodes.
      
  | 
  inlineoverridevirtual | 
Returns the boundary i of the element.
Implements MeshLib::Element.
Definition at line 91 of file TemplateElement.h.
References OGS_FATAL.
      
  | 
  inlineoverridevirtual | 
Get the FEM type of this element.
Implements MeshLib::Element.
Definition at line 154 of file TemplateElement.h.
      
  | 
  finaloverridevirtual | 
Returns the length, area or volume of a 1D, 2D or 3D element.
Implements MeshLib::Element.
Definition at line 56 of file TemplateElement-impl.h.
      
  | 
  inlineconstexproverridevirtual | 
Get dimension of the mesh element.
Implements MeshLib::Element.
Definition at line 77 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::dimension.
      
  | 
  inlineoverridevirtual | 
Returns the edge i of the element.
Implements MeshLib::Element.
Definition at line 79 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Return a specific edge node.
Implements MeshLib::Element.
Definition at line 197 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::_nodes, and MeshLib::TemplateElement< ELEMENT_RULE >::getNumberOfEdges().
      
  | 
  inlineoverridevirtual | 
Returns the face i of the element.
Implements MeshLib::Element.
Definition at line 85 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Get the type of this element.
Implements MeshLib::Element.
Definition at line 148 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Get the specified neighbor.
Implements MeshLib::Element.
Definition at line 127 of file TemplateElement.h.
References MeshLib::Element::_neighbors, and ERR().
      
  | 
  overridevirtual | 
Get node with local index where the local index should be at most the number of nodes of the element.
| idx | local index of node, at most the number of nodes of the element that you can obtain with Element::getNumberOfBaseNodes() | 
Implements MeshLib::Element.
Definition at line 102 of file TemplateElement-impl.h.
References ERR(), and MeshLib::MeshElemType2String().
      
  | 
  overridevirtual | 
Implements MeshLib::Element.
Definition at line 116 of file TemplateElement-impl.h.
References ERR(), and MeshLib::MeshElemType2String().
      
  | 
  inlineoverridevirtual | 
Get array of element nodes.
Implements MeshLib::Element.
Definition at line 194 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::_nodes, and MathLib::Point3d::data().
      
  | 
  inlineoverridevirtual | 
Get the number of linear nodes for this element.
Implements MeshLib::Element.
Definition at line 144 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::n_base_nodes.
      
  | 
  inlineoverridevirtual | 
Returns the number of boundaries of the element.
Implements MeshLib::Element.
Definition at line 105 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Get the number of edges for this element.
Implements MeshLib::Element.
Definition at line 118 of file TemplateElement.h.
Referenced by MeshLib::TemplateElement< ELEMENT_RULE >::getEdgeNode().
      
  | 
  inlineoverridevirtual | 
Get the number of faces for this element.
Implements MeshLib::Element.
Definition at line 120 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Get the number of neighbors for this element.
Implements MeshLib::Element.
Definition at line 122 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Get the number of all nodes for this element.
Implements MeshLib::Element.
Definition at line 146 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::n_all_nodes.
      
  | 
  inlineoverridevirtual | 
Returns the ID of a face given an array of nodes.
Implements MeshLib::Element.
Definition at line 180 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::_nodes, and MeshLib::Element::nodes().
      
  | 
  overridevirtual | 
Returns true if these two indices form an edge and false otherwise.
Implements MeshLib::Element.
Definition at line 89 of file TemplateElement-impl.h.
References MeshLib::details::isEdge().
      
  | 
  inlineoverridevirtual | 
Checks if a point is inside the element.
| pnt | a 3D MathLib::Point3d object | 
| eps | tolerance for numerical algorithm used or computing the property | 
This is actually calling the correct implementation of this function passing the element's nodes.
Implements MeshLib::Element.
Definition at line 164 of file TemplateElement.h.
References MeshLib::TemplateElement< ELEMENT_RULE >::_nodes.
      
  | 
  overridevirtual | 
(Re)Sets the node of the element.
| idx | the index of the pointer to a node within the element | 
| node | a pointer to a node | 
Implements MeshLib::Element.
Definition at line 130 of file TemplateElement-impl.h.
      
  | 
  inlineoverridevirtual | 
Checks if the node order of an element is correct by testing surface normals. For 1D elements this always returns true.
Implements MeshLib::Element.
Definition at line 212 of file TemplateElement.h.
      
  | 
  inlineoverridevirtual | 
Tests if the element is geometrically valid.
Implements MeshLib::Element.
Definition at line 174 of file TemplateElement.h.
| std::array<Node*, n_all_nodes> MeshLib::TemplateElement< ELEMENT_RULE >::_nodes | 
Definition at line 219 of file TemplateElement.h.
Referenced by MeshLib::TemplateElement< ELEMENT_RULE >::TemplateElement(), MeshLib::TemplateElement< ELEMENT_RULE >::computeVolume(), MeshLib::TemplateElement< ELEMENT_RULE >::getEdgeNode(), MeshLib::TemplateElement< ELEMENT_RULE >::getNodes(), MeshLib::TemplateElement< ELEMENT_RULE >::identifyFace(), and MeshLib::TemplateElement< ELEMENT_RULE >::isPntInElement().
      
  | 
  static | 
Constant: The dimension of this element.
Definition at line 44 of file TemplateElement.h.
Referenced by MeshLib::TemplateElement< ELEMENT_RULE >::getDimension().
      
  | 
  static | 
Constant: The number of all nodes for this element.
Definition at line 38 of file TemplateElement.h.
Referenced by MeshLib::TemplateElement< ELEMENT_RULE >::TemplateElement(), and MeshLib::TemplateElement< ELEMENT_RULE >::getNumberOfNodes().
      
  | 
  static | 
Constant: The number of base nodes for this element.
Definition at line 41 of file TemplateElement.h.
Referenced by MeshLib::TemplateElement< ELEMENT_RULE >::getNumberOfBaseNodes().