Implementation of the Gent material model. More...
#include <ikarus/finiteelements/mechanics/materials/hyperelastic/deviatoric/gent.hh>
Public Types | |
using | ScalarType = ST_ |
template<typename ST = ScalarType> | |
using | PrincipalStretches = Eigen::Vector< ST, 3 > |
template<typename ST = ScalarType> | |
using | Invariants = PrincipalStretches< ST > |
template<typename ST = ScalarType> | |
using | FirstDerivative = Eigen::Vector< ST, dim > |
template<typename ST = ScalarType> | |
using | SecondDerivative = Eigen::Matrix< ST, dim, dim > |
using | MaterialParameters = GentMatParameters |
Public Member Functions | |
GentT (const MaterialParameters &matPar) | |
Constructor for GentT. More... | |
MaterialParameters | materialParametersImpl () const |
Returns the material parameters stored in the material. More... | |
template<typename ST = ScalarType> | |
ST | storedEnergyImpl (const PrincipalStretches< ST > &lambda) const |
Computes the stored energy in the Gent material model. More... | |
template<typename ST = ScalarType> | |
FirstDerivative< ST > | firstDerivativeImpl (const PrincipalStretches< ST > &lambda) const |
Computes the first derivative of the stored energy function w.r.t. the total principal stretches. More... | |
template<typename ST = ScalarType> | |
SecondDerivative< ST > | secondDerivativeImpl (const PrincipalStretches< ST > &lambda) const |
Computes the second derivatives of the stored energy function w.r.t. the total principal stretches. More... | |
template<typename STO > | |
auto | rebind () const |
Rebinds the material to a different scalar type. More... | |
Static Public Member Functions | |
static constexpr std::string | name () noexcept |
Static Public Attributes | |
static constexpr int | dim = 3 |
static constexpr auto | stretchTag = PrincipalStretchTags::deviatoric |
The energy is computed as
\[ \hat{\Psi}(\la_1, \la_2, \la_3) = -\frac{\mu}{2} J_m \ln{(1-\frac{W_1 - 3}{J_m})}, \]
with \( J_m > W_1-3\).
The first derivatives w.r.t the total principal stretches are
\[ \fracpt{\Psi}{\la_i} = \frac{\mu J_m}{2(J_m - W_1) + 6}\fracpt{W_1}{\la_i}. \]
The second derivatives w.r.t the total principal stretches are
\[ \fracpt{^2 \Psi}{\la_i\partial\la_j} = \frac{\mu}{2\al} (\fracpt{^2 W_1}{\la_i\partial\la_j} + \frac{1}{\al J_m} \fracpt{W_1}{\la_i} \fracpt{W_1}{\la_j}) - \delta_{ij} \frac{\mu}{2\al\la_i} \fracpt{W_1}{\la_i}, \]
with \( \al = 1 - \frac{W_1 - 3}{J_m} \).
ST_ | The underlying scalar type. |
using Ikarus::Materials::GentT< ST_ >::FirstDerivative = Eigen::Vector<ST, dim> |
using Ikarus::Materials::GentT< ST_ >::Invariants = PrincipalStretches<ST> |
using Ikarus::Materials::GentT< ST_ >::MaterialParameters = GentMatParameters |
using Ikarus::Materials::GentT< ST_ >::PrincipalStretches = Eigen::Vector<ST, 3> |
using Ikarus::Materials::GentT< ST_ >::ScalarType = ST_ |
using Ikarus::Materials::GentT< ST_ >::SecondDerivative = Eigen::Matrix<ST, dim, dim> |
|
inlineexplicit |
C | material constant |
lambdaM | maximum stretch at which the polymer chain locks |
|
inline |
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
inline |
|
inlinestaticconstexprnoexcept |
|
inline |
STO | The target scalar type. |
|
inline |
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
inline |
Using only the first five terms of the inverse Langevin function.
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
staticconstexpr |
|
staticconstexpr |