Implementation of the ArrudaBoyce material model (also referred as Eight-Chain model). More...
#include <ikarus/finiteelements/mechanics/materials/hyperelastic/deviatoric/arrudaboyce.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 = ArrudaBoyceMatParameters |
Public Member Functions | |
ArrudaBoyceT (const MaterialParameters &matPar) | |
Constructor for ArrudaBoyceT. More... | |
MaterialParameters | materialParametersImpl () const |
Returns the material parameters stored in the material. More... | |
template<typename ST > | |
ST | storedEnergyImpl (const PrincipalStretches< ST > &lambda) const |
Computes the stored energy in the ArrudaBoyce material model. More... | |
template<typename ST > | |
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 > | |
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 int | numTerms = 5 |
static constexpr auto | stretchTag = PrincipalStretchTags::deviatoric |
The energy is computed as
\[ \hat{\Psi}(\la_1, \la_2, \la_3) = \mu \sum_{p=0}^4{\al_p \beta^p} (W_1^{p+1} - 3^{p+1}), \]
with \( \beta = \frac{1}{\la_m^2} , \al_0 = \frac{1}{2}, \al_1 = \frac{1}{20}, \al_2 = \frac{11}{1050}, \al_3 = \frac{19}{7000}, \al_4 = \frac{519}{673750} \).
The first derivatives w.r.t the total principal stretches are
\[ \fracpt{\Psi}{\la_i} = \mu \sum_{p=0}^4{\al_p \beta^p W_1^p (p+1) \fracpt{W_1}{\la_i}}. \]
The second derivatives w.r.t the total principal stretches are
\[ \fracpt{^2 \Psi}{\la_i\partial\la_j} = \mu \sum_{p=0}^4{ \al_p \beta^p (W_1^p (p+1) \fracpt{^2 W_1}{\la_i\partial\la_j} + W_1^{p-1} p (p+1) \fracpt{W_1}{\la_i} \fracpt{W_1}{\la_j} - \delta_{ij} \frac{1}{\la_i} W_1^p (p+1) \fracpt{W_1}{\la_i}) } \]
ST_ | The underlying scalar type. |
using Ikarus::Materials::ArrudaBoyceT< ST_ >::FirstDerivative = Eigen::Vector<ST, dim> |
using Ikarus::Materials::ArrudaBoyceT< ST_ >::Invariants = PrincipalStretches<ST> |
using Ikarus::Materials::ArrudaBoyceT< ST_ >::MaterialParameters = ArrudaBoyceMatParameters |
using Ikarus::Materials::ArrudaBoyceT< ST_ >::PrincipalStretches = Eigen::Vector<ST, 3> |
using Ikarus::Materials::ArrudaBoyceT< ST_ >::ScalarType = ST_ |
using Ikarus::Materials::ArrudaBoyceT< ST_ >::SecondDerivative = Eigen::Matrix<ST, dim, dim> |
|
inlineexplicit |
matPar | The material parameters for the Arruda-Boyce material model. |
|
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 |
|
staticconstexpr |