12#ifndef BELFEM_CL_FEM_ELEMENT_HPP
13#define BELFEM_CL_FEM_ELEMENT_HPP
55 Element * mReferenceElement =
nullptr;
61 Dof ** mDOFs =
nullptr;
62 uint mNumberOfDofs = 0;
65 Dof ** mLocalDofs =
nullptr;
66 uint mNumberOfLocalDofs = 0;
75 real * mRotationData =
nullptr;
119 const id_t aMasterBlockID,
120 const id_t aSlaveBlockID );
337 const id_t aSideSetID,
338 const id_t aMasterBlockID,
339 const id_t aSlaveBlockID );
352 link_dofs_facet_only(
365 link_dofs_facet_and_master(
378 link_dofs_facet_and_slave(
391 link_dofs_master_and_slave(
405 link_dofs_thin_shell(
409 const id_t aMasterBlockID,
410 const id_t aSlaveBlockID );
415 link_dofs_thin_shell_master_and_slave(
428 link_dofs_thin_shell_facet_only(
438 grab_edge_directions_for_facet(
Element * aReferenceElement );
447 const uint aNumberOfNodesPerElement,
457 const uint aNumberOfEdgesPerElement,
467 const uint aNumberOfFacesPerElement,
473 link_edge_dofs_thin_shell(
482 link_face_dofs_thin_shell(
498 compute_edge_directions();
503 compute_edge_directions_thinshell();
562 mReferenceElement = aElement;
570 return mParent->material();
586 return mDOFs[ aIndex ];
594 return mNumberOfDofs;
602 return mNumberOfLocalDofs == 0 ? mDOFs[ aIndex ] : mLocalDofs[ aIndex ];
610 return mNumberOfLocalDofs == 0 ? mNumberOfDofs : mNumberOfLocalDofs ;
618 return mRotationData !=
nullptr;
626 for (
uint e = 0; e < mElement->number_of_edges(); ++e )
628 aEdgeDirections[ e ] = mEdgeDirections.test( e ) ? 1.0 : -1.0;
638 for (
uint e = 0; e < mElement->number_of_edges(); ++e )
640 if ( mEdgeDirections.test( e ))
642 aEdgeDirections.
set( e );
646 aEdgeDirections.
reset( e );
656 return mEdgeDirections.test( aIndex );
664 return mElement->id();
675 for (
uint i = 0; i < tD; ++i )
677 for (
uint k = 0; k < tN; ++k )
679 aNodeCoords( k, i ) = mElement->node( k )->x( i );
689 return mTmatrix != nullptr ;
721 return mReferenceElement;
727 return mReferenceElement;
void reset(const index_t aIndex)
set a bit to false
Definition cl_Bitset.hpp:103
void set(const index_t aIndex)
set a bit to true
Definition cl_Bitset.hpp:92
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
Base class for all materials in BELFEM.
Definition cl_Material.hpp:279
size_t n_rows() const
Definition cl_AR_Matrix.hpp:205
size_t n_cols() const
Definition cl_AR_Matrix.hpp:213
Definition cl_FEM_Block.hpp:35
Definition cl_FEM_Dof.hpp:28
this class creates the DOFs based on the passed equation object.
Definition cl_FEM_DofManager.hpp:55
Definition cl_FEM_Element.hpp:41
void edge_directions(real *aEdgeDirections) const
expose container for edge directions (obsolete)
Definition cl_FEM_Element.hpp:624
Element * slave()
return the slave element, only for sidesets, returns null if there is none
Definition cl_FEM_Element.hpp:528
const Material * material() const
return the material of this element
Definition cl_FEM_Element.hpp:568
void unflag_dofs()
unflag all dofs that are connected to this element
Definition cl_FEM_Element.cpp:1326
void get_node_coors(Matrix< real > &aNodeCoords)
Definition cl_FEM_Element.hpp:670
bool has_hanging_dofs() const
Definition cl_FEM_Element.cpp:1593
void flag_dofs()
flag all dofs that are connected to this element
Definition cl_FEM_Element.cpp:1315
void add_t_matrix(const Matrix< real > &aT)
void set_rotation_data(const Matrix< real > &aRotationAxes, const Vector< real > &aRotationAngles)
set the rotation axes
Definition cl_FEM_Element.cpp:1441
Group * parent()
Definition cl_FEM_Element.hpp:711
Element(Block *aParent, DofManager *aDofManager, mesh::Element *aElement)
Definition cl_FEM_Element.cpp:24
Dof * dof(const index_t aIndex)
expose a specific dof
Definition cl_FEM_Element.hpp:584
void set_facet(mesh::Facet *aFacet)
Definition cl_FEM_Element.hpp:552
void relink_dofs(Cell< Dof * > &aGlobalDofs, Cell< Dof * > &aLocalDofs, const Matrix< real > &aTmatrix)
Definition cl_FEM_Element.cpp:1541
uint number_of_dofs() const
expose the number of dofs
Definition cl_FEM_Element.hpp:592
void set_reference(Element *aElement)
Definition cl_FEM_Element.hpp:560
Dof * local_dof(const index_t aIndex)
expose a specific dof
Definition cl_FEM_Element.hpp:600
uint number_of_local_dofs() const
expose the number of dofs
Definition cl_FEM_Element.hpp:608
bool edge_direction(const index_t aIndex) const
expose container for edge directions
Definition cl_FEM_Element.hpp:654
bool has_rotation() const
tell if this element has rotation properties
Definition cl_FEM_Element.hpp:616
const Tmatrix * t_matrix() const
Definition cl_FEM_Element.hpp:695
Element * reference()
Definition cl_FEM_Element.hpp:719
mesh::Facet * facet()
Definition cl_FEM_Element.hpp:536
bool has_t_matrix() const
Definition cl_FEM_Element.hpp:687
Element * master()
return the master element, only for sidesets
Definition cl_FEM_Element.hpp:520
id_t id() const
return the id of the underlying mesh element
Definition cl_FEM_Element.hpp:662
mesh::Element * element()
expose the underlying element on the mesh
Definition cl_FEM_Element.hpp:576
void get_rotation_data(Matrix< real > &aRotationAxes, Vector< real > &aRotationAngles)
Definition cl_FEM_Element.cpp:1494
Definition cl_FEM_Group.hpp:45
Definition cl_FEM_SideSet.hpp:60
Definition cl_FEM_Tmatrix.hpp:22
Definition cl_Facet.hpp:24
Definition cl_IFB_LINE3.hpp:21
SideSetDofLinkMode
how the dofs of a sideset element are linked to its facet, master and slave elements ( six modes plus...
Definition en_IWG_SideSetDofLinkMode.hpp:25
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
unsigned int id_t
Definition typedefs.hpp:41
uint32_t index_t
Definition typedefs.hpp:52
double real
Definition typedefs.hpp:36