DisplacementPressure class represents a displacement-pressure finite element. More...
#include <ikarus/finiteelements/mechanics/displacementpressure.hh>
Public Types | |
| using | Traits = PreFE::Traits |
| using | Basis = typename Traits::Basis |
| using | FlatBasis = typename Traits::FlatBasis |
| using | Requirement = FERequirements< FESolutions::displacement, FEParameter::loadfactor > |
| using | LocalView = typename Traits::LocalView |
| using | Geometry = typename Traits::Geometry |
| using | GridView = typename Traits::GridView |
| using | Element = typename Traits::Element |
| using | Pre = PRE |
| using | LocalBasisTypeU = decltype(std::declval< LocalView >().tree().child(Dune::Indices::_0).child(0).finiteElement().localBasis()) |
| using | LocalBasisTypeP = decltype(std::declval< LocalView >().tree().child(Dune::Indices::_1).finiteElement().localBasis()) |
| template<typename ST > | |
| using | VectorXOptRef = std::optional< std::reference_wrapper< const Eigen::VectorX< ST > > > |
| template<template< typename, int, int > class RT> | |
| using | RTWrapperType = ResultWrapper< RT< typename Traits::ctype, myDim, Traits::worlddim >, ResultShape::Vector > |
| template<typename ST = double> | |
| using | StrainType = Eigen::Vector< ST, strainDim > |
| template<typename ST = double> | |
| using | BopType = Eigen::Matrix< ST, strainDim, myDim > |
| template<typename ST = double> | |
| using | KgType = Eigen::Matrix< ST, myDim, myDim > |
| using | MaterialType = typename Pre::Material |
| template<typename MAT > | |
| using | DecomposedDevType = typename Materials::DecomposedMaterialTypes< MaterialType >::DevType |
| template<typename MAT > | |
| using | DecomposedVolType = typename Materials::DecomposedMaterialTypes< MaterialType >::VolType |
| using | DPConstitutiveDriverType = Impl::DPConstitutiveDriver< DecomposedDevType< MaterialType >, DecomposedVolType< MaterialType > > |
| using | SupportedResultTypes = std::tuple< decltype(makeRT< ResultTypes >())... > |
Public Member Functions | |
| DisplacementPressure (const Pre &pre) | |
| Constructor for the DisplacementPressure class. More... | |
| template<typename ScalarType = double> | |
| auto | displacementFunction (const Requirement &par, const VectorXOptRef< ScalarType > &dx=std::nullopt) const |
| Get the displacement function for the given Requirement. More... | |
| template<typename ScalarType = double> | |
| auto | pressureFunction (const Requirement &par, const VectorXOptRef< ScalarType > &dx=std::nullopt) const |
| Get the pressure function for the given Requirement. More... | |
| template<typename ScalarType = double> | |
| auto | strainFunction (const Requirement &par, const VectorXOptRef< ScalarType > &dx=std::nullopt) const |
| The strain function for the given Requirement. More... | |
| const Geometry & | geometry () const |
| size_t | numberOfNodes () const |
| int | order () const |
| const Dune::CachedLocalBasis< std::remove_cvref_t< LocalBasisTypeU > > & | localBasis () const |
| const Dune::CachedLocalBasis< std::remove_cvref_t< LocalBasisTypeP > > & | localBasisP () const |
| template<typename ScalarType = double> | |
| decltype(auto) | constitutiveDriver () const |
| template<template< typename, int, int > class RT> requires (supportsResultType<RT>()) | |
| auto | resultFunction () const |
| Get a lambda function that evaluates the requested result type for a given strain (in Voigt notation) and pressure. More... | |
| template<template< typename, int, int > class RT> requires (supportsResultType<RT>()) | |
| auto | calculateAtImpl (const Requirement &req, const Dune::FieldVector< double, Traits::mydim > &local, Dune::PriorityTag< 1 >) const |
| Calculates a requested result at a specific local position. More... | |
| template<typename ST > | |
| auto | geometricStiffnessMatrixFunction (const Requirement &par, typename Traits::template MatrixType< ST > &K, const VectorXOptRef< ST > &dx=std::nullopt) const |
| Get a lambda function that evaluates the geometric part of the stiffness matrix (Kg) for a given integration point and its index. More... | |
| template<typename ST > | |
| auto | materialStiffnessMatrixFunction (const Requirement &par, typename Traits::template MatrixType< ST > &K, const VectorXOptRef< ST > &dx=std::nullopt) const |
| Get a lambda function that evaluates the material part of the stiffness matrix (Ke + Ku) for a given strain, integration point and its index. More... | |
| template<typename ST > | |
| auto | internalForcesFunction (const Requirement &par, typename Traits::template VectorType< ST > &force, const VectorXOptRef< ST > &dx=std::nullopt) const |
| Get a lambda function that evaluates the internal force vector for a given strain, integration point and its index. More... | |
| template<typename ST > | |
| auto | energyFunction (const Requirement &par, const VectorXOptRef< ST > &dx=std::nullopt) const |
| Get a lambda function that evaluates the internal energy at a given integration point and its index. More... | |
Static Public Member Functions | |
| static consteval bool | supportsResultType () |
| Returns whether a ResultType is provided by the element. More... | |
Static Public Attributes | |
| static constexpr int | myDim = Traits::mydim |
| static constexpr int | strainDim = myDim * (myDim + 1) / 2 |
| static constexpr auto | strainType = StrainTags::greenLagrangian |
| static constexpr auto | stressType = StressTags::PK2 |
Protected Member Functions | |
| void | bindImpl () |
| A helper function to bind the local view to the element. More... | |
| template<typename ScalarType > | |
| void | calculateMatrixImpl (const Requirement &par, const MatrixAffordance &affordance, typename Traits::template MatrixType<> K, const VectorXOptRef< ScalarType > &dx=std::nullopt) const |
| Calculate the matrix associated with the given Requirement. More... | |
| template<typename ScalarType > | |
| auto | calculateScalarImpl (const Requirement &par, ScalarAffordance affordance, const VectorXOptRef< ScalarType > &dx=std::nullopt) const -> ScalarType |
| template<typename ScalarType > | |
| void | calculateVectorImpl (const Requirement &par, VectorAffordance affordance, typename Traits::template VectorType< ScalarType > force, const VectorXOptRef< ScalarType > &dx=std::nullopt) const |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::Basis = typename Traits::Basis |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::BopType = Eigen::Matrix<ST, strainDim, myDim> |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::DecomposedDevType = typename Materials::DecomposedMaterialTypes<MaterialType>::DevType |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::DecomposedVolType = typename Materials::DecomposedMaterialTypes<MaterialType>::VolType |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::DPConstitutiveDriverType = Impl::DPConstitutiveDriver<DecomposedDevType<MaterialType>, DecomposedVolType<MaterialType> > |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::Element = typename Traits::Element |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::FlatBasis = typename Traits::FlatBasis |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::Geometry = typename Traits::Geometry |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::GridView = typename Traits::GridView |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::KgType = Eigen::Matrix<ST, myDim, myDim> |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::LocalBasisTypeP = decltype(std::declval<LocalView>().tree().child(Dune::Indices::_1).finiteElement().localBasis()) |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::LocalBasisTypeU = decltype(std::declval<LocalView>().tree().child(Dune::Indices::_0).child(0).finiteElement().localBasis()) |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::LocalView = typename Traits::LocalView |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::MaterialType = typename Pre::Material |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::Pre = PRE |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::Requirement = FERequirements<FESolutions::displacement, FEParameter::loadfactor> |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::RTWrapperType = ResultWrapper<RT<typename Traits::ctype, myDim, Traits::worlddim>, ResultShape::Vector> |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::StrainType = Eigen::Vector<ST, strainDim> |
|
inherited |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::Traits = PreFE::Traits |
| using Ikarus::DisplacementPressure< PreFE, FE, PRE >::VectorXOptRef = std::optional<std::reference_wrapper<const Eigen::VectorX<ST> >> |
|
inlineexplicit |
| pre | The pre fe |
|
inlineprotected |
|
inline |
| req | The Requirement object holding the global solution. |
| local | Local position vector. |
| RT | The type representing the requested result. |
|
inlineprotected |
| ScalarType | The scalar type for the calculation. |
| par | The Requirement object specifying the requirements for the calculation. |
| K | The matrix to store the calculated result. |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
| ScalarType | The scalar type for the displacement function. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
|
inline |
| ST | The scalar type for the material and strain. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
|
inline |
| ST | The scalar type for the material and strain. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
| K | The matrix to store the calculated result. |
|
inline |
|
inline |
| ST | The scalar type for the material and strain. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
| force | The vector to store the calculated result. |
|
inline |
|
inline |
|
inline |
| ST | The scalar type for the material and strain. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
| K | The matrix to store the calculated result. |
|
inline |
|
inline |
|
inline |
| ScalarType | The scalar type for the pressure function. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
|
inline |
| RT | The type representing the requested result. |
|
inline |
| ScalarType | The scalar type for the strain function. |
| par | The Requirement object. |
| dx | Optional displacement vector. |
|
inlinestaticinherited |
| RT | requested ResultType |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |