version 0.4.1
Ikarus::Materials::InvariantBasedT< ST_, n > Struct Template Reference

Implementation of the InvariantBased material model. More...

#include <ikarus/finiteelements/mechanics/materials/hyperelastic/deviatoric/invariantbased.hh>

Public Types

using ScalarType = ST_
 
template<typename ST = ScalarType>
using PrincipalStretches = Eigen::Vector< ST, 3 >
 
template<typename ST = ScalarType>
using Invariants = PrincipalStretches< ST >
 
using Exponents = std::array< std::size_t, numMatParameters >
 
using MaterialParameters = std::array< double, numMatParameters >
 
template<typename ST = ScalarType>
using FirstDerivative = Eigen::Vector< ST, dim >
 
template<typename ST = ScalarType>
using SecondDerivative = Eigen::Matrix< ST, dim, dim >
 

Public Member Functions

MaterialParameters materialParametersImpl () const
 
const ExponentspExponents () const
 
const ExponentsqExponents () const
 
 InvariantBasedT (const Exponents &pex, const Exponents &qex, const MaterialParameters &matParameters)
 Constructor for InvariantBasedT. More...
 
template<typename ST = ScalarType>
ST storedEnergyImpl (const PrincipalStretches< ST > &lambda) const
 Computes the stored energy in the InvariantBased 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 int numMatParameters = n
 
static constexpr auto stretchTag = PrincipalStretchTags::deviatoric
 

Detailed Description

template<typename ST_, int n>
struct Ikarus::Materials::InvariantBasedT< ST_, n >

This is a general model based on deviatoric invariants. It can be used to derive other specific material models, for instance Mooney-Rivlin and Yeoh models. The energy is computed as

\[ \hat{\Psi}(\la_1, \la_2, \la_3) = \sum_{p+q=1}^n{C_{pq} (W_1 - 3)^p (W_2 - 3)^q}, \quad p,q \geq 0. \]

Remarks
See [1] for details on this material. For information on the deviatoric invariants \( W_1, W_2 \), see DeviatoricInvariants.
Template Parameters
ST_The underlying scalar type.
nNumber of material parameters

Member Typedef Documentation

◆ Exponents

template<typename ST_ , int n>
using Ikarus::Materials::InvariantBasedT< ST_, n >::Exponents = std::array<std::size_t, numMatParameters>

◆ FirstDerivative

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

◆ Invariants

template<typename ST_ , int n>
template<typename ST = ScalarType>
using Ikarus::Materials::InvariantBasedT< ST_, n >::Invariants = PrincipalStretches<ST>

◆ MaterialParameters

template<typename ST_ , int n>
using Ikarus::Materials::InvariantBasedT< ST_, n >::MaterialParameters = std::array<double, numMatParameters>

◆ PrincipalStretches

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

◆ ScalarType

template<typename ST_ , int n>
using Ikarus::Materials::InvariantBasedT< ST_, n >::ScalarType = ST_

◆ SecondDerivative

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

Constructor & Destructor Documentation

◆ InvariantBasedT()

template<typename ST_ , int n>
Ikarus::Materials::InvariantBasedT< ST_, n >::InvariantBasedT ( const Exponents pex,
const Exponents qex,
const MaterialParameters matParameters 
)
inlineexplicit
Parameters
pexArray of exponents related to the first invariant.
qexArray of exponents related to the second invariant.
matParametersArray of material parameters.

Member Function Documentation

◆ firstDerivativeImpl()

template<typename ST_ , int n>
template<typename ST = ScalarType>
FirstDerivative< ST > Ikarus::Materials::InvariantBasedT< ST_, n >::firstDerivativeImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
FirstDerivative the first derivative

◆ materialParametersImpl()

template<typename ST_ , int n>
MaterialParameters Ikarus::Materials::InvariantBasedT< ST_, n >::materialParametersImpl ( ) const
inline

◆ name()

template<typename ST_ , int n>
static constexpr std::string Ikarus::Materials::InvariantBasedT< ST_, n >::name ( )
inlinestaticconstexprnoexcept

◆ pExponents()

template<typename ST_ , int n>
const Exponents & Ikarus::Materials::InvariantBasedT< ST_, n >::pExponents ( ) const
inline

◆ qExponents()

template<typename ST_ , int n>
const Exponents & Ikarus::Materials::InvariantBasedT< ST_, n >::qExponents ( ) const
inline

◆ rebind()

template<typename ST_ , int n>
template<typename STO >
auto Ikarus::Materials::InvariantBasedT< ST_, n >::rebind ( ) const
inline
Template Parameters
STOThe target scalar type.
Returns
InvariantBasedT<ScalarTypeOther> The rebound InvariantBased material.

◆ secondDerivativeImpl()

template<typename ST_ , int n>
template<typename ST = ScalarType>
SecondDerivative< ST > Ikarus::Materials::InvariantBasedT< ST_, n >::secondDerivativeImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches.
Template Parameters
STthe scalartype of the principal stretches
Returns
SecondDerivative the second derivative

◆ storedEnergyImpl()

template<typename ST_ , int n>
template<typename ST = ScalarType>
ST Ikarus::Materials::InvariantBasedT< ST_, n >::storedEnergyImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
ScalarType the energy

Member Data Documentation

◆ dim

template<typename ST_ , int n>
constexpr int Ikarus::Materials::InvariantBasedT< ST_, n >::dim = 3
staticconstexpr

◆ numMatParameters

template<typename ST_ , int n>
constexpr int Ikarus::Materials::InvariantBasedT< ST_, n >::numMatParameters = n
staticconstexpr

◆ stretchTag

template<typename ST_ , int n>
constexpr auto Ikarus::Materials::InvariantBasedT< ST_, n >::stretchTag = PrincipalStretchTags::deviatoric
staticconstexpr

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