|
Mechanics of Defect Evolution Library
|
Class template for a Lagrange finite element of degree p on a d-dimensional Simplex. More...
#include <DiscontinuousLagrangeElement.h>
Public Types | |
| typedef LagrangeNode< ElementType > | NodeType |
| typedef Eigen::Matrix< double, 1, dim+1 > | BaryType |
Public Member Functions | |
| DiscontinuousLagrangeElement (const Simplex< dim, dim > &s, std::deque< NodeType > &nodeContainer, std::map< Eigen::Matrix< double, dim, 1 >, NodeType *const, CompareVectorsByComponent< double, dim, float > > &, std::map< size_t, const NodeType *const > &) | |
| template<typename TrialFunctionType> | |
| TypeTraits< TrialFunctionType >::ShapeFunctionGradMatrixType | sfmGrad (const BaryType &bary) const |
| template<typename TrialFunctionType> | |
| TypeTraits< TrialFunctionType >::ShapeFunctionDefMatrixType | sfmDef (const BaryType &bary) const |
| const NodeType & | node (const size_t &n) const |
| NodeType & | node (const size_t &n) |
| Eigen::Matrix< double, dim, 1 > | position (const BaryType &bary) const |
| Eigen::Matrix< double, _dim, _dim > | Fs (const BaryType &bary) const |
| double | absJ (const BaryType &bary) const |
| Eigen::Matrix< double, _dim, _dim > | Gs (const BaryType &bary) const |
| Eigen::Matrix< double, dim, 1 > | jGN (const BaryType &bary, const int &n) const |
| bool | isBoundaryElement () const |
| std::vector< int > | boundaryFaces () const |
Static Public Member Functions | |
| static constexpr int | dofPerNode (int c) |
| static Eigen::Matrix< double, 1, nodesPerElement > | sf (const BaryType &bary) |
| template<typename TrialFunctionType> | |
| static TypeTraits< TrialFunctionType >::ShapeFunctionMatrixType | sfm (const BaryType &bary) |
| static Eigen::Matrix< double, dim+1, nodesPerElement > | diff (const BaryType &bary) |
| static Eigen::Matrix< double, dim, nodesPerElement > | gradS (const BaryType &bary) |
Public Attributes | |
| const Simplex< dim, dim > & | simplex |
| A const reference to the Simplex that this element refers to. | |
| Eigen::Matrix< double, _dim, nodesPerElement > | Xe |
| The matrix of nodal coordinates. | |
Static Public Attributes | |
| static constexpr int | dim =_dim |
| static constexpr int | order =degree |
| static constexpr int | nodesPerElement =CombinationWithRepetition<_dim+1,degree>::value |
| static const Eigen::Matrix< int,CombinationWithRepetition< _dim+1, degree >::value, _dim+1 > | baryStarsAndBars |
| static const Eigen::Matrix< double, CombinationWithRepetition< _dim+1, degree >::value, _dim+1 > | baryNodalCoordinates |
| static const std::vector< Eigen::Matrix< double, _dim+1, degree+1 > > | sfCoeffsVector |
Class template for a Lagrange finite element of degree p on a d-dimensional Simplex.
The degrees of freedom for a LagrangeElement are the functinal values computed at the nodes (LagrangeNode). In a d-dimensional Simplex, each node is identified by a set of (d+1) positive integers \(I_k\) which satisfy the Diophantine equation:
\[ \sum_{k=0}^{d+1}I_k=p \]
These integeres are found using the StarsAndBars algorithm. The baricentric (area) coordinate of node \(\{I_k\}\) are obtained as \(A_k=I_k/p\).
The shape function of node \(\{I_k\}\) are:
\[ N_{\{I_k\}}(A_0,\dots A_{d})=\prod_{k=0}^{d+1}\frac{1}{I_k!}\prod_{i=0}^{I_k-1}\left(pA_k-i\right) \]
This can also be written as:
\[ N_{\{I_k\}}(A_0,\dots A_{d})=\prod_{i=0}^{d+1}\left([c_{i0},\dots,c_{ip}]\cdot[A_i^0,\dots,A_i^p]\right) \]
The matrix \(c_{ij}\) is stored in the field sfCoeffs;
Definition at line 58 of file DiscontinuousLagrangeElement.h.
| typedef Eigen::Matrix<double,1,dim+1> model::DiscontinuousLagrangeElement< _dim, degree, MappingType >::BaryType |
Definition at line 71 of file DiscontinuousLagrangeElement.h.
| typedef LagrangeNode<ElementType> model::DiscontinuousLagrangeElement< _dim, degree, MappingType >::NodeType |
Definition at line 70 of file DiscontinuousLagrangeElement.h.
|
inline |
| [in] | s | A const reference to a Simplex<dim,dim> |
Definition at line 208 of file DiscontinuousLagrangeElement.h.
|
inline |
| bary | the vector of baricentric coordinates |
Definition at line 404 of file DiscontinuousLagrangeElement.h.
|
inline |
Definition at line 434 of file DiscontinuousLagrangeElement.h.
|
inlinestatic |
| [in] | bary | the barycentric coordinate |
\[ dN_{\{I_k\}}/dA_j(A_0,\dots A_{d}) \]
Definition at line 306 of file DiscontinuousLagrangeElement.h.
|
inlinestaticconstexpr |
Definition at line 68 of file DiscontinuousLagrangeElement.h.
|
inline |
| bary | the vector of baricentric coordinates |
Definition at line 396 of file DiscontinuousLagrangeElement.h.
|
inlinestatic |
| [in] | bary | the barycentric coordinate |
\[ dN_{\{I_k\}}/dS_j(A_0,\dots A_{d}) \]
Definition at line 331 of file DiscontinuousLagrangeElement.h.
|
inline |
| bary | the vector of baricentric coordinates |
Definition at line 413 of file DiscontinuousLagrangeElement.h.
|
inline |
Definition at line 427 of file DiscontinuousLagrangeElement.h.
|
inline |
Definition at line 421 of file DiscontinuousLagrangeElement.h.
|
inline |
| [in] | the | local node ID in the element |
Definition at line 379 of file DiscontinuousLagrangeElement.h.
|
inline |
| [in] | the | local node ID in the element |
Definition at line 370 of file DiscontinuousLagrangeElement.h.
|
inline |
| [in] | bary | the vector of barycentric coordinate |
Definition at line 388 of file DiscontinuousLagrangeElement.h.
|
inlinestatic |
| [in] | bary | the vector of barycentric coordinates |
\[ N_{\{I_k\}}(A_0,\dots A_{d})=\prod_{i=0}^{d+1}\left([c_{i0},\dots,c_{ip}]\cdot[A_i^0,\dots,A_i^p]\right) \]
Definition at line 276 of file DiscontinuousLagrangeElement.h.
|
inlinestatic |
| [in] | bary | the vector of barycentric coordinates |
\[ N_{\{I_k\}}(A_0,\dots A_{d})=\prod_{i=0}^{d+1}\left([c_{i0},\dots,c_{ip}]\cdot[A_i^0,\dots,A_i^p]\right) \]
Definition at line 294 of file DiscontinuousLagrangeElement.h.
|
inline |
| [in] | bary | the vector of barycentric coordinates |
Definition at line 359 of file DiscontinuousLagrangeElement.h.
|
inline |
| [in] | bary | the vector of barycentric coordinates |
\[ M_{ij}=\frac{\partial N_j}{\partial x_i} \]
Definition at line 344 of file DiscontinuousLagrangeElement.h.
|
static |
Definition at line 197 of file DiscontinuousLagrangeElement.h.
|
static |
Definition at line 196 of file DiscontinuousLagrangeElement.h.
|
staticconstexpr |
Definition at line 65 of file DiscontinuousLagrangeElement.h.
|
staticconstexpr |
Definition at line 67 of file DiscontinuousLagrangeElement.h.
|
staticconstexpr |
Definition at line 66 of file DiscontinuousLagrangeElement.h.
|
static |
Definition at line 198 of file DiscontinuousLagrangeElement.h.
| const Simplex<dim,dim>& model::DiscontinuousLagrangeElement< _dim, degree, MappingType >::simplex |
A const reference to the Simplex that this element refers to.
Definition at line 201 of file DiscontinuousLagrangeElement.h.
| Eigen::Matrix<double,_dim,nodesPerElement> model::DiscontinuousLagrangeElement< _dim, degree, MappingType >::Xe |
The matrix of nodal coordinates.
Definition at line 204 of file DiscontinuousLagrangeElement.h.