LinearElastic class represents a linear elastic finite element. More...
#include <ikarus/finiteelements/mechanics/linearelastic.hh>
| Public Types | |
| using | Traits = PreFE::Traits | 
| using | BasisHandler = typename Traits::BasisHandler | 
| 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 | Material = PRE::Material | 
| using | Pre = PRE | 
| using | LocalBasisType = decltype(std::declval< LocalView >().tree().child(0).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 | SupportedResultTypes = std::tuple< decltype(makeRT< ResultTypes >())... > | 
| Public Member Functions | |
| LinearElastic (const Pre &pre) | |
| Constructor for the LinearElastic class.  More... | |
| template<typename ScalarType = double> | |
| auto | displacementFunction (const Requirement &par, const VectorXOptRef< ScalarType > &dx=std::nullopt) const | 
| Gets the displacement function for the given Requirement and optional displacement vector.  More... | |
| template<class ScalarType = double> | |
| auto | strainFunction (const Requirement &par, const VectorXOptRef< ScalarType > &dx=std::nullopt) const | 
| Gets the strain function for the given Requirement and optional di splacement vector.  More... | |
| template<typename ScalarType , int strainDim> | |
| auto | internalEnergy (const Eigen::Vector< ScalarType, strainDim > &strain) const | 
| Get the internal energy for the given strain.  More... | |
| template<typename ScalarType , int strainDim, bool voigt = true> | |
| auto | stress (const Eigen::Vector< ScalarType, strainDim > &strain) const | 
| Get the stress for the given strain.  More... | |
| template<typename ScalarType , int strainDim, bool voigt = true> | |
| auto | materialTangent (const Eigen::Vector< ScalarType, strainDim > &strain=Eigen::Vector< ScalarType, strainDim >::Zero()) const | 
| Get the linear elastic material tangent for the given strain for the given Requirement.  More... | |
| const Geometry & | geometry () const | 
| size_t | numberOfNodes () const | 
| int | order () const | 
| const Dune::CachedLocalBasis< std::remove_cvref_t< LocalBasisType > > & | localBasis () const | 
| template<typename ScalarType = double> | |
| decltype(auto) | material () const | 
| template<template< typename, int, int > class RT> requires (LinearElastic::template supportsResultType<RT>()) | |
| auto | resultFunction () const | 
| Get a lambda function that evaluates the requested result type for a given strain (in Voigt notation).  More... | |
| template<template< typename, int, int > class RT> requires (LinearElastic::template 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 elastic stiffness matrix 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 ScalarType > | |
| auto | energyFunction (const Requirement &par, const VectorXOptRef< ScalarType > &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::linear | 
| static constexpr auto | stressType = StressTags::linear | 
| 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 | 
| 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::LinearElastic< PreFE, FE, PRE >::BasisHandler = typename Traits::BasisHandler | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::BopType = Eigen::Matrix<ST, strainDim, myDim> | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::Element = typename Traits::Element | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::FlatBasis = typename Traits::FlatBasis | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::Geometry = typename Traits::Geometry | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::GridView = typename Traits::GridView | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::KgType = Eigen::Matrix<ST, myDim, myDim> | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::LocalBasisType = decltype(std::declval<LocalView>().tree().child(0).finiteElement().localBasis()) | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::LocalView = typename Traits::LocalView | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::Material = PRE::Material | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::Pre = PRE | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::Requirement = FERequirements<FESolutions::displacement, FEParameter::loadfactor> | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::RTWrapperType = ResultWrapper<RT<typename Traits::ctype, myDim, Traits::worlddim>, ResultShape::Vector> | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::StrainType = Eigen::Vector<ST, strainDim> | 
| 
 | inherited | 
| using Ikarus::LinearElastic< PreFE, FE, PRE >::Traits = PreFE::Traits | 
| using Ikarus::LinearElastic< 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 | 
| 
 | inlineprotected | 
| 
 | inlineprotected | 
| 
 | inline | 
| ScalarType | The scalar type for the displacement vector. | 
| par | The Requirement object. | 
| dx | Optional displacement vector. | 
| 
 | inline | 
| ScalarType | The scalar type for the material and strain. | 
| par | The Requirement object. | 
| dx | Optional displacement vector. | 
| 
 | inline | 
This is here due to symmetry to the NonLinearElastic class
| 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 | 
| ScalarType | The scalar type for the material and strain. | 
| strainDim | The dimension of the strain vector. | 
| strain | The strain vector in Voigt notation. | 
| 
 | 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 | 
| ScalarType | The scalar type for the material and strain. | 
| strainDim | The dimension of the strain vector. | 
| voigt | Flag indicating whether to use Voigt notation. | 
| strain | The strain vector. | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| RT | The type representing the requested result. | 
| 
 | inline | 
| ScalarType | The scalar type for the strain vector. | 
| par | The Requirement object. | 
| dx | Optional displacement vector. | 
| 
 | inline | 
| ScalarType | The scalar type for the material and strain. | 
| strainDim | The dimension of the strain vector. | 
| voigt | A boolean indicating whether to use the Voigt notation for stress. | 
| strain | The strain vector in Voigt notation. | 
| 
 | inlinestaticinherited | 
| RT | requested ResultType | 
| 
 | staticconstexpr | 
| 
 | staticconstexpr | 
| 
 | staticconstexpr | 
| 
 | staticconstexpr |