version 0.4.1
Ikarus::Materials::ArrudaBoyceT< ST_ > Struct Template Reference

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
 

Detailed Description

template<typename ST_>
struct Ikarus::Materials::ArrudaBoyceT< ST_ >

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}) } \]

Remarks
See [6] and [1] for details on this material. For information on the deviatoric invariant \( W_1 \), see DeviatoricInvariants.
Template Parameters
ST_The underlying scalar type.

Member Typedef Documentation

◆ FirstDerivative

template<typename ST_ >
template<typename ST = ScalarType>
using Ikarus::Materials::ArrudaBoyceT< ST_ >::FirstDerivative = Eigen::Vector<ST, dim>

◆ Invariants

template<typename ST_ >
template<typename ST = ScalarType>
using Ikarus::Materials::ArrudaBoyceT< ST_ >::Invariants = PrincipalStretches<ST>

◆ MaterialParameters

template<typename ST_ >
using Ikarus::Materials::ArrudaBoyceT< ST_ >::MaterialParameters = ArrudaBoyceMatParameters

◆ PrincipalStretches

template<typename ST_ >
template<typename ST = ScalarType>
using Ikarus::Materials::ArrudaBoyceT< ST_ >::PrincipalStretches = Eigen::Vector<ST, 3>

◆ ScalarType

template<typename ST_ >
using Ikarus::Materials::ArrudaBoyceT< ST_ >::ScalarType = ST_

◆ SecondDerivative

template<typename ST_ >
template<typename ST = ScalarType>
using Ikarus::Materials::ArrudaBoyceT< ST_ >::SecondDerivative = Eigen::Matrix<ST, dim, dim>

Constructor & Destructor Documentation

◆ ArrudaBoyceT()

template<typename ST_ >
Ikarus::Materials::ArrudaBoyceT< ST_ >::ArrudaBoyceT ( const MaterialParameters matPar)
inlineexplicit
Parameters
matParThe material parameters for the Arruda-Boyce material model.

Member Function Documentation

◆ firstDerivativeImpl()

template<typename ST_ >
template<typename ST >
FirstDerivative< ST > Ikarus::Materials::ArrudaBoyceT< ST_ >::firstDerivativeImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
FirstDerivative The first derivatives of the stored energy function w.r.t. the total principal stretches.

◆ materialParametersImpl()

template<typename ST_ >
MaterialParameters Ikarus::Materials::ArrudaBoyceT< ST_ >::materialParametersImpl ( ) const
inline

◆ name()

template<typename ST_ >
static constexpr std::string Ikarus::Materials::ArrudaBoyceT< ST_ >::name ( )
inlinestaticconstexprnoexcept

◆ rebind()

template<typename ST_ >
template<typename STO >
auto Ikarus::Materials::ArrudaBoyceT< ST_ >::rebind ( ) const
inline
Template Parameters
STOThe target scalar type.
Returns
ArrudaBoyceT<ScalarTypeOther> The rebound ArrudaBoyce material.

◆ secondDerivativeImpl()

template<typename ST_ >
template<typename ST >
SecondDerivative< ST > Ikarus::Materials::ArrudaBoyceT< ST_ >::secondDerivativeImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
SecondDerivative The second derivatives of the stored energy function w.r.t. the total principal stretches.

◆ storedEnergyImpl()

template<typename ST_ >
template<typename ST >
ST Ikarus::Materials::ArrudaBoyceT< ST_ >::storedEnergyImpl ( const PrincipalStretches< ST > &  lambda) const
inline

Using only the first five terms of the inverse Langevin function.

Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
ScalarType

Member Data Documentation

◆ dim

template<typename ST_ >
constexpr int Ikarus::Materials::ArrudaBoyceT< ST_ >::dim = 3
staticconstexpr

◆ numTerms

template<typename ST_ >
constexpr int Ikarus::Materials::ArrudaBoyceT< ST_ >::numTerms = 5
staticconstexpr

◆ stretchTag

template<typename ST_ >
constexpr auto Ikarus::Materials::ArrudaBoyceT< ST_ >::stretchTag = PrincipalStretchTags::deviatoric
staticconstexpr

The documentation for this struct was generated from the following file: