Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
model::FiniteElement< _ElementType > Class Template Reference

#include <FiniteElement.h>

Inheritance diagram for model::FiniteElement< _ElementType >:
Collaboration diagram for model::FiniteElement< _ElementType >:

Public Types

typedef _ElementType ElementType
typedef FiniteElement< ElementType > FiniteElementType
typedef ElementType::NodeType NodeType
typedef std::deque< const NodeType * > NodeListType
typedef std::map< size_t, NodeListType > NodeListContainerType
typedef SimplicialMesh< dim > MeshType
typedef std::map< typename SimplexTraits< _ElementType::dim, _ElementType::dim >::SimplexIDType, _ElementType > ElementContainerType
typedef std::deque< typename _ElementType::NodeType > NodeContainerType
typedef std::map< Eigen::Matrix< double, _ElementType::dim, 1 >, typename _ElementType::NodeType *const, CompareVectorsByComponent< double, _ElementType::dim, float > > NodeFinderType

Public Member Functions

 FiniteElement (const SimplicialMesh< dim > &m)
 FiniteElement (std::shared_ptr< const MeshType > m)
 FiniteElement (const FiniteElement &)=delete
 FiniteElement (FiniteElement &&)=delete
std::weak_ptr< const int > lifetimeToken () const
void validateMeshLifetime () const
void updatePeriodicNodePairs ()
const auto & periodicNodePairs () const
size_t periodicRepresentative (size_t nodeID) const
const Eigen::Matrix< double, dim, 1 > & periodicShift (size_t nodeID) const
template<int nComponents>
auto trial ()
template<char name, int nComponents>
auto trial ()
const ElementContainerType & elements () const
size_t elementSize () const
const NodeContainerType & nodes () const
size_t nodeSize () const
const NodeType & node (const size_t &n) const
const NodeFinderType & nodeFinder () const
const Eigen::Matrix< double, dim, 1 > & xMin () const
const double & xMin (const int &k) const
const Eigen::Matrix< double, dim, 1 > & xMax () const
const double & xMax (const int &k) const
const Eigen::Matrix< double, dim, 1 > & xMean () const
const double & xMean (const int &k) const
template<typename BndType, int qOrder, template< short unsigned int, size_t > class QuadratureRule>
IntegrationDomain< FiniteElementType, 1, qOrder, QuadratureRule > boundary () const
template<typename DomainType, int qOrder, template< short unsigned int, size_t > class QuadratureRule>
IntegrationDomain< FiniteElementType, 0, qOrder, QuadratureRule > domain () const
const std::map< size_t, const typename _ElementType::NodeType *const > & mesh2femIDmap () const
std::map< size_t, const typename _ElementType::NodeType *const > & mesh2femIDmap ()
template<typename NodeSelectorType, typename... NodeSelectorArgs>
size_t createNodeList (const NodeSelectorArgs &... args)
void clearNodeLists ()
const NodeListType & nodeList (const size_t &k) const
std::pair< bool, const ElementType * > search (const Eigen::Matrix< double, dim, 1 > &P) const
std::pair< bool, const ElementType * > searchWithGuess (const Eigen::Matrix< double, dim, 1 > &P, const Simplex< dim, dim > *const guess) const

Static Public Member Functions

static const MeshType & requireMesh (const std::shared_ptr< const MeshType > &m)

Public Attributes

const MeshType & mesh

Static Public Attributes

static constexpr int dim =ElementType::dim
static constexpr int nodesPerElement =ElementType::nodesPerElement

Detailed Description

template<typename _ElementType>
class model::FiniteElement< _ElementType >

Definition at line 42 of file FiniteElement.h.

Member Typedef Documentation

◆ ElementContainerType

template<typename _ElementType>
typedef std::map<typename SimplexTraits<_ElementType::dim,_ElementType::dim>::SimplexIDType, _ElementType> model::FiniteElement< _ElementType >::ElementContainerType

Definition at line 90 of file FiniteElement.h.

◆ ElementType

template<typename _ElementType>
typedef _ElementType model::FiniteElement< _ElementType >::ElementType

Definition at line 74 of file FiniteElement.h.

◆ FiniteElementType

template<typename _ElementType>
typedef FiniteElement<ElementType> model::FiniteElement< _ElementType >::FiniteElementType

Definition at line 75 of file FiniteElement.h.

◆ MeshType

template<typename _ElementType>
typedef SimplicialMesh<dim> model::FiniteElement< _ElementType >::MeshType

Definition at line 84 of file FiniteElement.h.

◆ NodeContainerType

template<typename _ElementType>
typedef std::deque<typename _ElementType::NodeType> model::FiniteElement< _ElementType >::NodeContainerType

Definition at line 91 of file FiniteElement.h.

◆ NodeFinderType

template<typename _ElementType>
typedef std::map<Eigen::Matrix<double,_ElementType::dim,1>, typename _ElementType::NodeType* const, CompareVectorsByComponent<double,_ElementType::dim,float> > model::FiniteElement< _ElementType >::NodeFinderType

Definition at line 95 of file FiniteElement.h.

◆ NodeListContainerType

template<typename _ElementType>
typedef std::map<size_t,NodeListType> model::FiniteElement< _ElementType >::NodeListContainerType

Definition at line 80 of file FiniteElement.h.

◆ NodeListType

template<typename _ElementType>
typedef std::deque<const NodeType*> model::FiniteElement< _ElementType >::NodeListType

Definition at line 79 of file FiniteElement.h.

◆ NodeType

template<typename _ElementType>
typedef ElementType::NodeType model::FiniteElement< _ElementType >::NodeType

Definition at line 76 of file FiniteElement.h.

Constructor & Destructor Documentation

◆ FiniteElement() [1/4]

template<typename _ElementType>
model::FiniteElement< _ElementType >::FiniteElement ( const SimplicialMesh< dim > & m)
inline
Parameters
[in]sA const reference to a SimplicialMesh on which *this FiniteElement is constructed.

Definition at line 100 of file FiniteElement.h.

◆ FiniteElement() [2/4]

template<typename _ElementType>
model::FiniteElement< _ElementType >::FiniteElement ( std::shared_ptr< const MeshType > m)
inlineexplicit

Definition at line 193 of file FiniteElement.h.

◆ FiniteElement() [3/4]

template<typename _ElementType>
model::FiniteElement< _ElementType >::FiniteElement ( const FiniteElement< _ElementType > & )
delete

◆ FiniteElement() [4/4]

template<typename _ElementType>
model::FiniteElement< _ElementType >::FiniteElement ( FiniteElement< _ElementType > && )
delete

Member Function Documentation

◆ boundary()

template<typename _ElementType>
template<typename BndType, int qOrder, template< short unsigned int, size_t > class QuadratureRule>
IntegrationDomain< FiniteElementType, 1, qOrder, QuadratureRule > model::FiniteElement< _ElementType >::boundary ( ) const
inline

Definition at line 340 of file FiniteElement.h.

◆ clearNodeLists()

template<typename _ElementType>
void model::FiniteElement< _ElementType >::clearNodeLists ( )
inline

Definition at line 384 of file FiniteElement.h.

◆ createNodeList()

template<typename _ElementType>
template<typename NodeSelectorType, typename... NodeSelectorArgs>
size_t model::FiniteElement< _ElementType >::createNodeList ( const NodeSelectorArgs &... args)
inline

Definition at line 366 of file FiniteElement.h.

◆ domain()

template<typename _ElementType>
template<typename DomainType, int qOrder, template< short unsigned int, size_t > class QuadratureRule>
IntegrationDomain< FiniteElementType, 0, qOrder, QuadratureRule > model::FiniteElement< _ElementType >::domain ( ) const
inline

Definition at line 347 of file FiniteElement.h.

◆ elements()

template<typename _ElementType>
const ElementContainerType & model::FiniteElement< _ElementType >::elements ( ) const
inline

Definition at line 264 of file FiniteElement.h.

◆ elementSize()

template<typename _ElementType>
size_t model::FiniteElement< _ElementType >::elementSize ( ) const
inline
Returns
the number of elements in the FiniteElement

Definition at line 270 of file FiniteElement.h.

◆ lifetimeToken()

template<typename _ElementType>
std::weak_ptr< const int > model::FiniteElement< _ElementType >::lifetimeToken ( ) const
inline

Definition at line 207 of file FiniteElement.h.

◆ mesh2femIDmap() [1/2]

template<typename _ElementType>
std::map< size_t, const typename _ElementType::NodeType *const > & model::FiniteElement< _ElementType >::mesh2femIDmap ( )
inline

Definition at line 359 of file FiniteElement.h.

◆ mesh2femIDmap() [2/2]

template<typename _ElementType>
const std::map< size_t, const typename _ElementType::NodeType *const > & model::FiniteElement< _ElementType >::mesh2femIDmap ( ) const
inline

Definition at line 353 of file FiniteElement.h.

◆ node()

template<typename _ElementType>
const NodeType & model::FiniteElement< _ElementType >::node ( const size_t & n) const
inline
Parameters
[in]nthe n-th node stored in *this FiniteElement
Returns
a reference to the n-th node in *this FiniteElement

Definition at line 289 of file FiniteElement.h.

◆ nodeFinder()

template<typename _ElementType>
const NodeFinderType & model::FiniteElement< _ElementType >::nodeFinder ( ) const
inline

Definition at line 297 of file FiniteElement.h.

◆ nodeList()

template<typename _ElementType>
const NodeListType & model::FiniteElement< _ElementType >::nodeList ( const size_t & k) const
inline

Definition at line 390 of file FiniteElement.h.

◆ nodes()

template<typename _ElementType>
const NodeContainerType & model::FiniteElement< _ElementType >::nodes ( ) const
inline

Definition at line 277 of file FiniteElement.h.

◆ nodeSize()

template<typename _ElementType>
size_t model::FiniteElement< _ElementType >::nodeSize ( ) const
inline

Definition at line 283 of file FiniteElement.h.

◆ periodicNodePairs()

template<typename _ElementType>
const auto & model::FiniteElement< _ElementType >::periodicNodePairs ( ) const
inline

Definition at line 238 of file FiniteElement.h.

◆ periodicRepresentative()

template<typename _ElementType>
size_t model::FiniteElement< _ElementType >::periodicRepresentative ( size_t nodeID) const
inline

Definition at line 242 of file FiniteElement.h.

◆ periodicShift()

template<typename _ElementType>
const Eigen::Matrix< double, dim, 1 > & model::FiniteElement< _ElementType >::periodicShift ( size_t nodeID) const
inline

Definition at line 246 of file FiniteElement.h.

◆ requireMesh()

template<typename _ElementType>
const MeshType & model::FiniteElement< _ElementType >::requireMesh ( const std::shared_ptr< const MeshType > & m)
inlinestatic

Definition at line 197 of file FiniteElement.h.

◆ search()

template<typename _ElementType>
std::pair< bool, const ElementType * > model::FiniteElement< _ElementType >::search ( const Eigen::Matrix< double, dim, 1 > & P) const
inline
Parameters
[in]Pposition to search for
Returns
a pair, where: -pair.first is a boolean indicating whether the search succesfully found a Simplex<dim,dim> which includes P. -pair.second is a pointer to the last Simplex<dim,dim> searched.

By default the search starts at this->begin()->second

Definition at line 404 of file FiniteElement.h.

◆ searchWithGuess()

template<typename _ElementType>
std::pair< bool, const ElementType * > model::FiniteElement< _ElementType >::searchWithGuess ( const Eigen::Matrix< double, dim, 1 > & P,
const Simplex< dim, dim > *const guess ) const
inline
Parameters
[in]Pposition to search for
[in]guessSimplex* where the search starts
Returns
a pair, where: -pair.first is a boolean indicating whether the search succesfully found a Simplex<dim,dim> which includes P. -pair.second is a pointer to the last Simplex<dim,dim> searched.

Definition at line 417 of file FiniteElement.h.

◆ trial() [1/2]

template<typename _ElementType>
template<char name, int nComponents>
auto model::FiniteElement< _ElementType >::trial ( )
inline

Definition at line 258 of file FiniteElement.h.

◆ trial() [2/2]

template<typename _ElementType>
template<int nComponents>
auto model::FiniteElement< _ElementType >::trial ( )
inline

Definition at line 252 of file FiniteElement.h.

◆ updatePeriodicNodePairs()

template<typename _ElementType>
void model::FiniteElement< _ElementType >::updatePeriodicNodePairs ( )
inline

Definition at line 220 of file FiniteElement.h.

◆ validateMeshLifetime()

template<typename _ElementType>
void model::FiniteElement< _ElementType >::validateMeshLifetime ( ) const
inline

Definition at line 211 of file FiniteElement.h.

◆ xMax() [1/2]

template<typename _ElementType>
const Eigen::Matrix< double, dim, 1 > & model::FiniteElement< _ElementType >::xMax ( ) const
inline

Definition at line 315 of file FiniteElement.h.

◆ xMax() [2/2]

template<typename _ElementType>
const double & model::FiniteElement< _ElementType >::xMax ( const int & k) const
inline

Definition at line 321 of file FiniteElement.h.

◆ xMean() [1/2]

template<typename _ElementType>
const Eigen::Matrix< double, dim, 1 > & model::FiniteElement< _ElementType >::xMean ( ) const
inline

Definition at line 327 of file FiniteElement.h.

◆ xMean() [2/2]

template<typename _ElementType>
const double & model::FiniteElement< _ElementType >::xMean ( const int & k) const
inline

Definition at line 333 of file FiniteElement.h.

◆ xMin() [1/2]

template<typename _ElementType>
const Eigen::Matrix< double, dim, 1 > & model::FiniteElement< _ElementType >::xMin ( ) const
inline

Definition at line 303 of file FiniteElement.h.

◆ xMin() [2/2]

template<typename _ElementType>
const double & model::FiniteElement< _ElementType >::xMin ( const int & k) const
inline

Definition at line 309 of file FiniteElement.h.

Member Data Documentation

◆ dim

template<typename _ElementType>
int model::FiniteElement< _ElementType >::dim =ElementType::dim
staticconstexpr

Definition at line 82 of file FiniteElement.h.

◆ mesh

template<typename _ElementType>
const MeshType& model::FiniteElement< _ElementType >::mesh

Definition at line 97 of file FiniteElement.h.

◆ nodesPerElement

template<typename _ElementType>
int model::FiniteElement< _ElementType >::nodesPerElement =ElementType::nodesPerElement
staticconstexpr

Definition at line 83 of file FiniteElement.h.


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