Implementation of the Neo-Hookean material model.The energy is computed as. More...
#include <ikarus/finiteelements/mechanics/materials/neohooke.hh>
Public Types | |
using | ScalarType = ScalarType_ |
using | StrainMatrix = Eigen::Matrix< ScalarType, worldDimension, worldDimension > |
using | StressMatrix = StrainMatrix |
using | MaterialImplType = NeoHookeT< ScalarType_ > |
Type of material implementation. More... | |
Public Member Functions | |
constexpr std::string | nameImpl () const noexcept |
NeoHookeT (const LamesFirstParameterAndShearModulus &mpt) | |
Constructor for NeoHookeT. More... | |
template<typename Derived > | |
ScalarType | storedEnergyImpl (const Eigen::MatrixBase< Derived > &C) const noexcept |
Computes the stored energy in the Neo-Hookean material model. More... | |
template<bool voigt, typename Derived > | |
auto | stressesImpl (const Eigen::MatrixBase< Derived > &C) const |
Computes the stresses in the Neo-Hookean material model. More... | |
template<bool voigt, typename Derived > | |
auto | tangentModuliImpl (const Eigen::MatrixBase< Derived > &C) const |
Computes the tangent moduli in the Neo-Hookean material model. More... | |
template<typename ScalarTypeOther > | |
auto | rebind () const |
Rebinds the material to a different scalar type. More... | |
constexpr const NeoHookeT< ScalarType_ > & | impl () const |
Const accessor to the underlying material (CRTP). More... | |
constexpr NeoHookeT< ScalarType_ > & | impl () |
Accessor to the underlying material (CRTP). More... | |
constexpr std::string | name () const |
Get the name of 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... | |
Public Attributes | |
LamesFirstParameterAndShearModulus | lambdaAndmu |
Static Public Attributes | |
static constexpr int | worldDimension = 3 |
static constexpr auto | strainTag = StrainTags::rightCauchyGreenTensor |
static constexpr auto | stressTag = StressTags::PK2 |
static constexpr auto | tangentModuliTag = TangentModuliTags::Material |
static constexpr bool | energyAcceptsVoigt = false |
static constexpr bool | stressToVoigt = false |
static constexpr bool | stressAcceptsVoigt = false |
static constexpr bool | moduliToVoigt = false |
static constexpr bool | moduliAcceptsVoigt = false |
static constexpr double | derivativeFactor = 2 |
static constexpr bool | isReduced |
Static constant for determining if the material has vanishing stress components (is reduced). More... | |
\[ \psi(\BC) = \frac{\mu}{2} (\tr \BC-3- 2 \log \sqrt{\det \BC}) + \frac{\lambda}{2} (\log \sqrt{\det \BC})^2 ,\]
where \( \BC \) denotes the right Cauchy-Green strain tensor.
The second Piola-Kirchhoff stresses are computed as
\[ \BS(\BC) =\fracpt{\psi(\BC)}{\BC} = \mu (\BI-\BC^{-1}) + \lambda \log \sqrt{\det \BC} \BC^{-1},\]
and the material tangent moduli are computed as
\[ \BBC(\BC) =\fracpt{^2\psi(\BC)}{\BC^2} = \lambda \BC^{-1} \otimes \BC^{-1} + 2 (\mu- \lambda \log \sqrt{\det \BC} ) \CI,\]
where \( \CI_{IJKL} = \frac{1}{2}({(\BC^{-1})}^{IK}{(\BC^{-1})}^{JL}+{(\BC^{-1})}^{IL} {(\BC^{-1})}^{JK}).\)
ScalarType_ | The scalar type for the strains and stresses,.... |
|
inherited |
using Ikarus::NeoHookeT< ScalarType_ >::ScalarType = ScalarType_ |
using Ikarus::NeoHookeT< ScalarType_ >::StrainMatrix = Eigen::Matrix<ScalarType, worldDimension, worldDimension> |
using Ikarus::NeoHookeT< ScalarType_ >::StressMatrix = StrainMatrix |
|
inlineexplicit |
mpt | The Lame's parameters (first parameter and shear modulus). |
|
inlineconstexprinherited |
|
inlineconstexprinherited |
|
inlineconstexprinherited |
|
inlineconstexprnoexcept |
|
inline |
ScalarTypeOther | The target scalar type. |
|
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. |
|
inlinenoexcept |
Derived | The derived type of the input matrix. |
C | The right Cauchy-Green tensor. |
|
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 | A boolean indicating whether to return stresses in Voigt notation. |
Derived | The derived type of the input matrix. |
C | The right Cauchy-Green tensor. |
|
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 | A boolean indicating whether to return tangent moduli in Voigt notation. |
Derived | The derived type of the input matrix. |
C | The right Cauchy-Green tensor. |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexprinherited |
LamesFirstParameterAndShearModulus Ikarus::NeoHookeT< ScalarType_ >::lambdaAndmu |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |