Implementation of the Linear Elasticity material model.The energy is computed as. More...
#include <ikarus/finiteelements/mechanics/materials/linearelasticity.hh>
Public Types | |
using | ScalarType = ST |
using | Base = StVenantKirchhoffT< ScalarType > |
using | field_type = ScalarType |
using | StrainMatrix = Eigen::Matrix< ScalarType, worldDimension, worldDimension > |
using | StressMatrix = StrainMatrix |
using | MaterialParameters = typename Base::MaterialParameters |
using | MaterialImpl = LinearElasticityT< ST > |
Type of material implementation. More... | |
Public Member Functions | |
LinearElasticityT (const MaterialParameters &mpt) | |
Constructor for LinearElasticityT. More... | |
MaterialParameters | materialParametersImpl () const |
Returns the material parameters stored in the material. More... | |
template<typename Derived > | |
ScalarType | storedEnergyImpl (const Eigen::MatrixBase< Derived > &E) const |
Calculates the stored energy in the material. More... | |
template<bool voigt, typename Derived > | |
auto | stressesImpl (const Eigen::MatrixBase< Derived > &E) const |
Calculates the stresses in the material. More... | |
template<bool voigt, typename Derived > | |
auto | tangentModuliImpl (const Eigen::MatrixBase< Derived > &E) const |
Calculates the tangent moduli in the material. More... | |
template<typename STO > | |
auto | rebind () const |
Rebind material to a different scalar type. More... | |
constexpr const MaterialImpl & | impl () const |
Const accessor to the underlying material (CRTP). More... | |
constexpr MaterialImpl & | impl () |
Accessor to the underlying material (CRTP). More... | |
auto | materialParameters () const |
Returns the material parameters stored in the implemented material. More... | |
auto | storedEnergy (const Eigen::MatrixBase< Derived > &Eraw) const |
Return the stored potential energy of the material. More... | |
auto | stresses (const Eigen::MatrixBase< Derived > &Eraw) const |
Get the stresses of the material. More... | |
auto | tangentModuli (const Eigen::MatrixBase< Derived > &Eraw) const |
Get the tangentModuli of the material. More... | |
Static Public Member Functions | |
static constexpr std::string | nameImpl () noexcept |
static constexpr std::string | name () |
Get the name of the implemented material. More... | |
Static Public Attributes | |
static constexpr int | worldDimension = 3 |
static constexpr auto | strainTag = StrainTags::linear |
static constexpr auto | stressTag = StressTags::linear |
static constexpr auto | tangentModuliTag = TangentModuliTags::Material |
static constexpr bool | energyAcceptsVoigt = Base::energyAcceptsVoigt |
static constexpr bool | stressToVoigt = Base::stressToVoigt |
static constexpr bool | stressAcceptsVoigt = Base::stressAcceptsVoigt |
static constexpr bool | moduliToVoigt = Base::moduliToVoigt |
static constexpr bool | moduliAcceptsVoigt = Base::moduliAcceptsVoigt |
static constexpr double | derivativeFactorImpl = Base::derivativeFactorImpl |
static constexpr bool | isReduced |
Static constant for determining if the material has vanishing stress or strain components (is reduced). More... | |
static constexpr double | derivativeFactor |
This factor denotes the differences between the returned stresses and moduli and the passed strain. More... | |
\[ \psi(\Bvep) = \frac{\lambda}{2} (\tr \Bvep)^2 +\mu \tr (\Bvep^2) ,\]
where \( \Bvep \) denotes the linear strain tensor.
The second Piola-Kirchhoff stresses are computed as
\[ \BS(\Bvep) =\fracpt{\psi(\Bvep)}{\Bvep} = \lambda \tr \Bvep \BI +2 \mu \Bvep,\]
and the material tangent moduli are computed as
\[ \BBC(\Bvep) =\fracpt{^2\psi(\Bvep)}{\Bvep^2} = \lambda \tr \Bvep \CI +2 \mu \CI^{\mathrm{sym}},\]
where \( \CI_{IJKL} = \de_{IJ}\de_{KL}\) and \( \CI_{IJKL}^\mathrm{sym} = \frac{1}{2}(\de_{IK}\de_{JL}+ \de_{IL}\de_{JK})\).
ST | The scalar type used in the material. |
using Ikarus::LinearElasticityT< ST >::Base = StVenantKirchhoffT<ScalarType> |
using Ikarus::LinearElasticityT< ST >::field_type = ScalarType |
|
inherited |
using Ikarus::LinearElasticityT< ST >::MaterialParameters = typename Base::MaterialParameters |
using Ikarus::LinearElasticityT< ST >::ScalarType = ST |
using Ikarus::LinearElasticityT< ST >::StrainMatrix = Eigen::Matrix<ScalarType, worldDimension, worldDimension> |
using Ikarus::LinearElasticityT< ST >::StressMatrix = StrainMatrix |
|
inlineexplicit |
mpt | The LamesFirstParameterAndShearModulus object. |
|
inlineconstexprinherited |
|
inlineconstexprinherited |
|
inlineinherited |
|
inline |
|
inlinestaticconstexprinherited |
|
inlinestaticconstexprnoexcept |
|
inline |
STO | The scalar type to rebind to. |
|
inlineinherited |
This function return the free Helmholtz energy of the material
tag | Strain tag indicating which strain tensor components are passed. |
Derived | The underlying Eigen type. |
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
|
inline |
Derived | The underlying Eigen type. |
E | The strain tensor components. |
|
inlineinherited |
tag | Strain tag indicating which strain tensor components are passed. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
|
inline |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
E | The strain tensor components. |
|
inlineinherited |
tag | Strain tag indicating which strain tensor components are passed. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
|
inline |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
E | The strain tensor components. |
|
staticconstexprinherited |
For neoHooke the inserted quantity is $C$ the Green-Lagrangian strain tensor, the function relation between the energy and the stresses is $S = 1 \dfrac{\partial\psi(E)}{\partial E}$. This factor is the pre factor, which is the difference to the actual derivative, which is written here
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexprinherited |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |