LinearElastic class represents a linear elastic finite element. More...
#include <ikarus/finiteelements/mechanics/linearelastic.hh>
Public Types | |
using | Traits = TraitsFromFE< Basis_, FERequirements_, useEigenRef > |
using | Basis = typename Traits::Basis |
using | FlatBasis = typename Traits::FlatBasis |
using | FERequirementType = typename Traits::FERequirementType |
using | LocalView = typename Traits::LocalView |
using | Geometry = typename Traits::Geometry |
using | GridView = typename Traits::GridView |
using | Element = typename Traits::Element |
using | ResultRequirementsType = typename Traits::ResultRequirementsType |
using | BaseDisp = PowerBasisFE< FlatBasis > |
using | VolumeType = Volume< LinearElastic< Basis_, FERequirements_, useEigenRef >, Traits > |
using | TractionType = Traction< LinearElastic< Basis_, FERequirements_, useEigenRef >, Traits > |
using | LocalBasisType = decltype(std::declval< LocalView >().tree().child(0).finiteElement().localBasis()) |
using | RootBasis = Basis_::FlatBasis |
Type of the root basis. More... | |
using | GlobalIndex = typename LocalView::MultiIndex |
Type of the global index. More... | |
using | GridElement = typename LocalView::Element |
Type of the grid element. More... | |
Public Member Functions | |
template<typename VolumeLoad = utils::LoadDefault, typename NeumannBoundaryLoad = utils::LoadDefault> | |
LinearElastic (const Basis &globalBasis, const typename LocalView::Element &element, double emod, double nu, VolumeLoad p_volumeLoad={}, const BoundaryPatch< GridView > *p_neumannBoundary=nullptr, NeumannBoundaryLoad p_neumannBoundaryLoad={}) | |
Constructor for the LinearElastic class. More... | |
template<typename ScalarType = double> | |
auto | displacementFunction (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
Gets the displacement function for the given FERequirementType and optional displacement vector. More... | |
template<class ScalarType = double> | |
auto | strainFunction (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
Gets the strain function for the given FERequirementType and optional displacement vector. More... | |
auto | materialTangent () const |
Gets the material tangent matrix for the linear elastic material. More... | |
auto | materialTangentFunction (const FERequirementType &par) const |
Gets the material tangent function for the given FERequirementType. More... | |
const Geometry & | geometry () const |
size_t | numberOfNodes () const |
int | order () const |
double | calculateScalar (const FERequirementType &par) const |
Calculates the scalar energy for the given FERequirementType. More... | |
void | calculateVector (const FERequirementType &par, typename Traits::template VectorType<> force) const |
Calculates the vector force for the given FERequirementType. More... | |
void | calculateMatrix (const FERequirementType &par, typename Traits::template MatrixType<> K) const |
Calculates the matrix stiffness for the given FERequirementType. More... | |
void | calculateAt (const ResultRequirementsType &req, const Dune::FieldVector< double, Traits::mydim > &local, ResultTypeMap< double > &result) const |
Calculates results at a specific local position. More... | |
constexpr size_t | size () const |
Get the size of the local view. More... | |
void | globalFlatIndices (std::vector< GlobalIndex > &globalIndices) const |
Get the global flat indices for the power basis. More... | |
const GridElement & | gridElement () const |
Get the grid element associated with the local view. More... | |
const LocalView & | localView () const |
Get the const reference to the local view. More... | |
LocalView & | localView () |
Get the reference to the local view. More... | |
double | calculateScalar (const FERequirementType &req) const |
Calculate the scalar value. More... | |
void | calculateVector (const FERequirementType &req, typename Traits::template VectorType<> force) const |
Calculate the vector associated with the given FERequirementType. More... | |
void | calculateMatrix (const FERequirementType &req, typename Traits::template MatrixType<> K) const |
Calculate the matrix associated with the given FERequirementType. More... | |
double | calculateScalar (const FERequirementType &req) const |
Calculate the scalar value. More... | |
void | calculateVector (const FERequirementType &req, typename Traits::template VectorType<> force) const |
Calculate the vector associated with the given FERequirementType. More... | |
void | calculateMatrix (const FERequirementType &req, typename Traits::template MatrixType<> K) const |
Calculate the matrix associated with the given FERequirementType. More... | |
Static Public Attributes | |
static constexpr int | myDim = Traits::mydim |
static constexpr int | num_children |
Number of children in the powerBasis. More... | |
static constexpr int | worldDim |
static constexpr int | worldDim |
Protected Member Functions | |
template<typename ScalarType > | |
auto | calculateScalarImpl (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const -> ScalarType |
template<typename ScalarType > | |
void | calculateVectorImpl (const FERequirementType &par, typename Traits::template VectorType< ScalarType > force, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
auto | calculateScalarImpl (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const -> ScalarType |
void | calculateVectorImpl (const FERequirementType &par, typename Traits::template VectorType< ScalarType > force, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
void | calculateMatrixImpl (const FERequirementType &par, typename Traits::template MatrixType<> K, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
auto | calculateScalarImpl (const FERequirementType &par, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const -> ScalarType |
void | calculateVectorImpl (const FERequirementType &par, typename Traits::template VectorType< ScalarType > force, const std::optional< const Eigen::VectorX< ScalarType > > dx=std::nullopt) const |
void | calculateMatrixImpl (const FERequirementType &par, typename Traits::template MatrixType<> K, const std::optional< const Eigen::VectorX< ScalarType > > &dx=std::nullopt) const |
Basis_ | The basis type for the finite element. |
FERequirements_ | The requirements for the finite element. |
useEigenRef | A boolean flag indicating whether to use Eigen references. |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::BaseDisp = PowerBasisFE<FlatBasis> |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::Basis = typename Traits::Basis |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::Element = typename Traits::Element |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::FERequirementType = typename Traits::FERequirementType |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::FlatBasis = typename Traits::FlatBasis |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::Geometry = typename Traits::Geometry |
|
inherited |
|
inherited |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::GridView = typename Traits::GridView |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::LocalBasisType = decltype(std::declval<LocalView>().tree().child(0).finiteElement().localBasis()) |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::LocalView = typename Traits::LocalView |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::ResultRequirementsType = typename Traits::ResultRequirementsType |
|
inherited |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::TractionType = Traction<LinearElastic<Basis_, FERequirements_, useEigenRef>, Traits> |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::Traits = TraitsFromFE<Basis_, FERequirements_, useEigenRef> |
using Ikarus::LinearElastic< Basis_, FERequirements_, useEigenRef >::VolumeType = Volume<LinearElastic<Basis_, FERequirements_, useEigenRef>, Traits> |
|
inline |
VolumeLoad | The type for the volume load function. |
NeumannBoundaryLoad | The type for the Neumann boundary load function. |
globalBasis | The global basis for the finite element. |
element | The element for which the finite element is constructed. |
emod | Young's modulus. |
nu | Poisson's ratio. |
p_volumeLoad | Volume load function (default is LoadDefault). |
p_neumannBoundary | Neumann boundary patch (default is nullptr). |
p_neumannBoundaryLoad | Neumann boundary load function (default is LoadDefault). |
|
inline |
req | The ResultRequirementsType object specifying the requested results. |
local | Local position vector. |
result | Map to store the calculated results. |
|
inline |
par | The FERequirementType object. |
K | Matrix to store the calculated stiffness. |
|
inlineinherited |
ScalarType | The scalar type for the calculation. |
req | The FERequirementType object specifying the requirements for the calculation. |
K | The matrix to store the calculated result. |
|
inlineinherited |
ScalarType | The scalar type for the calculation. |
req | The FERequirementType object specifying the requirements for the calculation. |
K | The matrix to store the calculated result. |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inline |
par | The FERequirementType object. |
|
inlineinherited |
Calculates the scalar value based on the given FERequirements.
req | The FERequirements. |
|
inlineinherited |
Calculates the scalar value based on the given FERequirements.
req | The FERequirements. |
|
inlineprotected |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inline |
par | The FERequirementType object. |
force | Vector to store the calculated force. |
|
inlineinherited |
ScalarType | The scalar type for the calculation. |
req | The FERequirementType object specifying the requirements for the calculation. |
force | The vector to store the calculated result. |
|
inlineinherited |
ScalarType | The scalar type for the calculation. |
req | The FERequirementType object specifying the requirements for the calculation. |
force | The vector to store the calculated result. |
|
inlineprotected |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
Integration rule along the boundary
The value of the local function wrt the i-th coeff
Value of the Neumann data at the current position
|
inline |
ScalarType | The scalar type for the displacement vector. |
par | The FERequirementType object. |
dx | Optional displacement vector. |
|
inline |
|
inlineinherited |
The global indices are collected in a FlatInterLeaved order. I.e. x_0, y_0, z_0, ..., x_n, y_n, z_n
globalIndices | Output vector to store global indices. |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inline |
|
inline |
par | The FERequirementType object. |
|
inline |
|
inline |
|
inlineconstexprinherited |
|
inline |
ScalarType | The scalar type for the strain vector. |
par | The FERequirementType object. |
dx | Optional displacement vector. |
|
staticconstexpr |
|
staticconstexprinherited |
|
staticconstexprinherited |
|
staticconstexprinherited |