BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::mesh::Element Class Reference

Lagrange Element baseclass. More...

#include <cl_Element.hpp>

Inheritance diagram for belfem::mesh::Element:
[legend]
Collaboration diagram for belfem::mesh::Element:
[legend]

Public Member Functions

 Element (const id_t aID)
 ~Element () override
void set_geometry_tag (const uint aTag)
void set_physical_tag (const uint aTag)
void set_block_id (const id_t aID)
id_t block_id () const
uint geometry_tag () const
uint physical_tag () const
virtual uint dimension () const
void set_curved_flag ()
void unset_curved_flag ()
bool is_curved () const
uint number_of_nodes () const override
virtual uint number_of_corner_nodes () const
virtual uint number_of_facets () const
uint number_of_faces () const override
uint number_of_edges () const override
virtual bool is_thinshell () const
uint number_of_control_points () const
ControlPointcontrol_point (const uint aIndex)
ControlPointcontrol_point (const uint aIndex) const
virtual bool has_edges () const
virtual bool has_faces () const
virtual ElementType type () const
Nodenode (const uint aIndex) override
const Nodenode (const uint aIndex) const override
Edgeedge (const uint aIndex) override
const Edgeedge (const uint aIndex) const override
Faceface (const uint aIndex) override
const Faceface (const uint aIndex) const override
virtual void insert_node (Node *aNode, const uint aIndex)
virtual void insert_edge (Edge *aEdge, const uint aIndex)
virtual void insert_face (Face *aFace, const uint aIndex)
virtual void insert_control_point (ControlPoint *aControlPoint, const uint aIndex)
virtual void unflag_nodes (const uint8_t aIndex=0)
virtual void flag_nodes (const uint8_t aIndex=0)
virtual void flag_corner_nodes (const uint8_t aIndex=0)
 flags nodes for linear representation only
virtual void unflag_corner_nodes (const uint8_t aIndex=0)
 flags nodes for linear representation only
virtual void unflag_edges ()
virtual void flag_edges ()
virtual void unflag_faces ()
virtual void flag_faces ()
virtual void get_nodes_of_facet (const uint aFacetIndex, Cell< Node * > &aNodes)
virtual void get_corner_nodes_of_facet (const uint aFacetIndex, Cell< Node * > &aNodes)
virtual void get_edges_of_facet (const uint aFacetIndex, Cell< Edge * > &aEdges)
virtual void get_nodes_of_edge (const uint aEdgeIndex, Cell< Node * > &aNodes)
virtual Nodenode_of_edge (const uint aNodeIndex, const uint aEdgeIndex)
virtual void allocate_edge_container ()
virtual void allocate_face_container ()
virtual void allocate_control_points_container (const uint aSize)
void reset_control_point_container ()
virtual void set_edge_direction (const uint aEdgeIndex, const bool aIsPlus)
virtual bool edge_direction (const uint aEdgeIndex) const
virtual void reset_edge_container ()
virtual void reset_face_container ()
void increment_element_counter ()
void allocate_element_container (const uint aSize=0)
void allocate_facet_container (const uint aSize)
void allocate_neighbor_container ()
void insert_neighbor (Element *aNeighbor, const uint aIndex)
void insert_element (Element *aElement)
void insert_facet (Facet *aFacet, const uint aIndex)
void reset_element_container () override
Elementelement (const uint aIndex) override
Elementneighbor (const uint aIndex)
Facetfacet (const uint aIndex)
uint number_of_elements () const override
EntityType entity_type () const override
 returns a cell, needed for DOF handling
virtual void print () const
virtual size_t memory () const
Public Member Functions inherited from belfem::mesh::Basis
 Basis ()
 ~Basis () override
bool is_hanging () const
uint number_of_sources () const
Basissource (const uint aIndex)
const Basissource (const uint aIndex) const
Nodesource_node (const uint aIndex)
const Nodesource_node (const uint aIndex) const
real weight (const uint aIndex) const
void set_weight (const uint aIndex, const real aValue)
void set_sources (Cell< Basis * > &aSources, const Vector< real > &aCoefficients)
void set_sources (Cell< Basis * > &aSources, const Cell< real > &aCoefficients)
void set_sources (Cell< Node * > &aSources, const Vector< real > &aCoefficients)
void reset_source_container ()
void allocate_source_container (uint aNumSources)
void add_source (Basis *aSource, const real aWeight=1.0)
void flag_sources ()
void increment_dof_counter ()
void allocate_dof_container ()
void reset_dof_container ()
void insert_dof (graph::Vertex *aDof)
uint number_of_dofs () const
graph::Vertexdof (const uint aIndex)
Public Member Functions inherited from belfem::graph::Vertex
 Vertex ()=default
virtual ~Vertex ()
void set_id (const id_t aID)
id_t id () const
virtual void set_index (const index_t aIndex)
virtual index_t index () const
virtual void set_owner (const proc_t aOwner)
virtual proc_t owner () const
index_t level () const
void set_level (const index_t aLevel)
virtual void flag (const uint8_t aIndex=0)
virtual void unflag (const uint8_t aIndex=0)
virtual bool is_flagged (const uint8_t aIndex=0) const
void increment_vertex_counter ()
void init_vertex_container ()
void init_vertex_container (const uint aSize)
void reset_vertex_container ()
void insert_vertex (Vertex *aVertex)
uint number_of_vertices () const
virtual Vertexvertex (const uint aIndex)
virtual auto vertex (const uint aIndex) const -> decltype(this)
virtual void init_element_container ()
void sort_vertices ()
 sorts the vertices according to their index
void reverse_vertices ()

Protected Member Functions

size_t array_memory () const

Protected Attributes

bool mCurvedFlag = true
 flag telling if this element is curved
uint16_t mElementTags [2] = { 0, 0 }
uint16_t mNumberOfElements = 0
uint8_t mNumberOfControlPoints = 0
 number of control points connected to this element
Element ** mElements = nullptr
 Elements connected to this element.
Element ** mNeighbors = nullptr
Facet ** mFacets = nullptr
ControlPoint ** mControlPoints = nullptr
 control points connected to this element, if any
Protected Attributes inherited from belfem::graph::Vertex
uint32_t mVertexCounter = 0
Vertex ** mVertices = nullptr

Detailed Description

Lagrange Element baseclass.

Constructor & Destructor Documentation

◆ Element()

belfem::mesh::Element::Element ( const id_t aID)

◆ ~Element()

belfem::mesh::Element::~Element ( )
override

Member Function Documentation

◆ allocate_control_points_container()

virtual void belfem::mesh::Element::allocate_control_points_container ( const uint aSize)
inlinevirtual

◆ allocate_edge_container()

virtual void belfem::mesh::Element::allocate_edge_container ( )
inlinevirtual

◆ allocate_element_container()

void belfem::mesh::Element::allocate_element_container ( const uint aSize = 0)

◆ allocate_face_container()

virtual void belfem::mesh::Element::allocate_face_container ( )
inlinevirtual

◆ allocate_facet_container()

void belfem::mesh::Element::allocate_facet_container ( const uint aSize)

◆ allocate_neighbor_container()

void belfem::mesh::Element::allocate_neighbor_container ( )

◆ array_memory()

size_t belfem::mesh::Element::array_memory ( ) const
inlineprotected

bytes of the arrays Element and its bases own. Vertices, dofs, sources and elements are counted by their fill counter ( no capacity is stored; the two agree once the insert loops that follow each allocate_*() have run, which is the state memory() is asked in ). Control points store their capacity as the count; neighbors and facets are sized by the facet count

◆ block_id()

id_t belfem::mesh::Element::block_id ( ) const
inline

◆ control_point() [1/2]

ControlPoint * belfem::mesh::Element::control_point ( const uint aIndex)
inline

◆ control_point() [2/2]

ControlPoint * belfem::mesh::Element::control_point ( const uint aIndex) const
inline

◆ dimension()

uint belfem::mesh::Element::dimension ( ) const
inlinevirtual

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ edge() [1/2]

const Edge * belfem::mesh::Element::edge ( const uint aIndex) const
inlineoverridevirtual

◆ edge() [2/2]

Edge * belfem::mesh::Element::edge ( const uint aIndex)
inlineoverridevirtual

◆ edge_direction()

virtual bool belfem::mesh::Element::edge_direction ( const uint aEdgeIndex) const
inlinevirtual

◆ element()

Element * belfem::mesh::Element::element ( const uint aIndex)
inlineoverridevirtual

Reimplemented from belfem::mesh::Basis.

◆ entity_type()

EntityType belfem::mesh::Element::entity_type ( ) const
inlineoverridevirtual

returns a cell, needed for DOF handling

Reimplemented from belfem::mesh::Basis.

◆ face() [1/2]

const Face * belfem::mesh::Element::face ( const uint aIndex) const
inlineoverridevirtual

◆ face() [2/2]

Face * belfem::mesh::Element::face ( const uint aIndex)
inlineoverridevirtual

◆ facet()

Facet * belfem::mesh::Element::facet ( const uint aIndex)
inline

◆ flag_corner_nodes()

virtual void belfem::mesh::Element::flag_corner_nodes ( const uint8_t aIndex = 0)
inlinevirtual

flags nodes for linear representation only

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ flag_edges()

virtual void belfem::mesh::Element::flag_edges ( )
inlinevirtual

◆ flag_faces()

virtual void belfem::mesh::Element::flag_faces ( )
inlinevirtual

◆ flag_nodes()

virtual void belfem::mesh::Element::flag_nodes ( const uint8_t aIndex = 0)
inlinevirtual

◆ geometry_tag()

uint belfem::mesh::Element::geometry_tag ( ) const
inline

◆ get_corner_nodes_of_facet()

virtual void belfem::mesh::Element::get_corner_nodes_of_facet ( const uint aFacetIndex,
Cell< Node * > & aNodes )
inlinevirtual

◆ get_edges_of_facet()

virtual void belfem::mesh::Element::get_edges_of_facet ( const uint aFacetIndex,
Cell< Edge * > & aEdges )
inlinevirtual

◆ get_nodes_of_edge()

◆ get_nodes_of_facet()

virtual void belfem::mesh::Element::get_nodes_of_facet ( const uint aFacetIndex,
Cell< Node * > & aNodes )
inlinevirtual

◆ has_edges()

virtual bool belfem::mesh::Element::has_edges ( ) const
inlinevirtual

◆ has_faces()

virtual bool belfem::mesh::Element::has_faces ( ) const
inlinevirtual

◆ increment_element_counter()

void belfem::mesh::Element::increment_element_counter ( )
inline

◆ insert_control_point()

virtual void belfem::mesh::Element::insert_control_point ( ControlPoint * aControlPoint,
const uint aIndex )
inlinevirtual

◆ insert_edge()

virtual void belfem::mesh::Element::insert_edge ( Edge * aEdge,
const uint aIndex )
inlinevirtual

◆ insert_element()

void belfem::mesh::Element::insert_element ( Element * aElement)

◆ insert_face()

virtual void belfem::mesh::Element::insert_face ( Face * aFace,
const uint aIndex )
inlinevirtual

◆ insert_facet()

void belfem::mesh::Element::insert_facet ( Facet * aFacet,
const uint aIndex )

◆ insert_neighbor()

void belfem::mesh::Element::insert_neighbor ( Element * aNeighbor,
const uint aIndex )

◆ insert_node()

virtual void belfem::mesh::Element::insert_node ( Node * aNode,
const uint aIndex )
inlinevirtual

◆ is_curved()

bool belfem::mesh::Element::is_curved ( ) const
inline

◆ is_thinshell()

◆ memory()

size_t belfem::mesh::Element::memory ( ) const
inlinevirtual

bytes of this object and the arrays it owns; the concrete element overrides this with its own object size

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ neighbor()

Element * belfem::mesh::Element::neighbor ( const uint aIndex)
inline

◆ node() [1/2]

const Node * belfem::mesh::Element::node ( const uint aIndex) const
inlineoverridevirtual

◆ node() [2/2]

Node * belfem::mesh::Element::node ( const uint aIndex)
inlineoverridevirtual

◆ node_of_edge()

virtual Node * belfem::mesh::Element::node_of_edge ( const uint aNodeIndex,
const uint aEdgeIndex )
inlinevirtual

◆ number_of_control_points()

uint belfem::mesh::Element::number_of_control_points ( ) const
inline

◆ number_of_corner_nodes()

virtual uint belfem::mesh::Element::number_of_corner_nodes ( ) const
inlinevirtual

◆ number_of_edges()

uint belfem::mesh::Element::number_of_edges ( ) const
inlineoverridevirtual

◆ number_of_elements()

uint belfem::mesh::Element::number_of_elements ( ) const
inlineoverridevirtual

Reimplemented from belfem::mesh::Basis.

◆ number_of_faces()

uint belfem::mesh::Element::number_of_faces ( ) const
inlineoverridevirtual

◆ number_of_facets()

virtual uint belfem::mesh::Element::number_of_facets ( ) const
inlinevirtual

◆ number_of_nodes()

uint belfem::mesh::Element::number_of_nodes ( ) const
inlineoverridevirtual

◆ physical_tag()

uint belfem::mesh::Element::physical_tag ( ) const
inline

◆ print()

void belfem::mesh::Element::print ( ) const
virtual

◆ reset_control_point_container()

void belfem::mesh::Element::reset_control_point_container ( )
inline

◆ reset_edge_container()

virtual void belfem::mesh::Element::reset_edge_container ( )
inlinevirtual

◆ reset_element_container()

void belfem::mesh::Element::reset_element_container ( )
overridevirtual

Reimplemented from belfem::graph::Vertex.

◆ reset_face_container()

virtual void belfem::mesh::Element::reset_face_container ( )
inlinevirtual

◆ set_block_id()

void belfem::mesh::Element::set_block_id ( const id_t aID)
inline

◆ set_curved_flag()

void belfem::mesh::Element::set_curved_flag ( )
inline

◆ set_edge_direction()

virtual void belfem::mesh::Element::set_edge_direction ( const uint aEdgeIndex,
const bool aIsPlus )
inlinevirtual

◆ set_geometry_tag()

void belfem::mesh::Element::set_geometry_tag ( const uint aTag)
inline

◆ set_physical_tag()

void belfem::mesh::Element::set_physical_tag ( const uint aTag)
inline

◆ type()

virtual ElementType belfem::mesh::Element::type ( ) const
inlinevirtual

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, belfem::mesh::ElementTemplate< N, C, E, T, F >, and belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ unflag_corner_nodes()

virtual void belfem::mesh::Element::unflag_corner_nodes ( const uint8_t aIndex = 0)
inlinevirtual

flags nodes for linear representation only

Reimplemented in belfem::mesh::ElementTemplate< N, C, E, T, F >.

◆ unflag_edges()

virtual void belfem::mesh::Element::unflag_edges ( )
inlinevirtual

◆ unflag_faces()

virtual void belfem::mesh::Element::unflag_faces ( )
inlinevirtual

◆ unflag_nodes()

virtual void belfem::mesh::Element::unflag_nodes ( const uint8_t aIndex = 0)
inlinevirtual

◆ unset_curved_flag()

void belfem::mesh::Element::unset_curved_flag ( )
inline

Member Data Documentation

◆ mControlPoints

ControlPoint** belfem::mesh::Element::mControlPoints = nullptr
protected

control points connected to this element, if any

◆ mCurvedFlag

bool belfem::mesh::Element::mCurvedFlag = true
protected

flag telling if this element is curved

◆ mElements

Element** belfem::mesh::Element::mElements = nullptr
protected

Elements connected to this element.

◆ mElementTags

uint16_t belfem::mesh::Element::mElementTags[2] = { 0, 0 }
protected

geometry group ID as set by gmsh physical group ID as set by gmsh

◆ mFacets

Facet** belfem::mesh::Element::mFacets = nullptr
protected

◆ mNeighbors

Element** belfem::mesh::Element::mNeighbors = nullptr
protected

unlike with the elements, the neighbors are in the order of the facets and may contain null pointers!

◆ mNumberOfControlPoints

uint8_t belfem::mesh::Element::mNumberOfControlPoints = 0
protected

number of control points connected to this element

◆ mNumberOfElements

uint16_t belfem::mesh::Element::mNumberOfElements = 0
protected

The documentation for this class was generated from the following files: