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

Implementation of the Ogden material model. More...

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

Public Types

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

Public Member Functions

 OgdenT (const MaterialParameters &mpt, const MaterialExponents &mex)
 Constructor for OgdenT. More...
 
MaterialParameters materialParametersImpl () const
 Returns the material parameters (mu values) stored in the material. More...
 
const MaterialExponentsmaterialExponents () const
 Returns the material exponents (alpha values) stored in the material. More...
 
template<typename ST >
auto storedEnergyImpl (const PrincipalStretches< ST > &lambda) const
 Computes the stored energy in the Ogden material model. More...
 
template<typename ST >
auto 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 >
auto 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 PrincipalStretchTags stretchTag = tag
 
static constexpr int numMatParameters = n
 
static constexpr int dim = 3
 
static constexpr bool usesDeviatoricStretches = stretchTag == PrincipalStretchTags::deviatoric
 

Detailed Description

template<typename ST_, int n, PrincipalStretchTags tag>
struct Ikarus::Materials::OgdenT< ST_, n, tag >

If total principal stretches are used, the energy is computed via

\[ \hat{\Psi}(\la_1, \la_2, \la_3) = \sum_{p=1}^n{ \frac{\mu_n}{\al_n} ({\la_1}^{\al_n} + {\la_2}^{\al_n} + {\la_3}^{\al_n} - 3) - \mu_n \ln J}, \]

with \( J = \la_1 \la_2 \la_3 \).

If deviatoric principal stretches ( \( \bar{\la_i} = \la_i J^{-1/3} \)) are used, the energy is computed via

\[ \hat{\Psi}(\la_1, \la_2, \la_3) = \sum_{p=1}^n{ \frac{\mu_n}{\al_n}({\bar{\la_1}}^{\al_n} + {\bar{\la_2}}^{\al_n} + {\bar{\la_3}}^{\al_n} - 3) }. \]

Remarks
See [1] for details on this material.
Template Parameters
ST_The underlying scalar type.
nNumber of ogden parameters
tagType of principal stretch quantity, either total stretches or deviatoric stretches

Member Typedef Documentation

◆ FirstDerivative

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

◆ MaterialExponents

template<typename ST_ , int n, PrincipalStretchTags tag>
using Ikarus::Materials::OgdenT< ST_, n, tag >::MaterialExponents = std::array<double, numMatParameters>

◆ MaterialParameters

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

◆ PrincipalStretches

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

◆ ScalarType

template<typename ST_ , int n, PrincipalStretchTags tag>
using Ikarus::Materials::OgdenT< ST_, n, tag >::ScalarType = ST_

◆ SecondDerivative

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

Constructor & Destructor Documentation

◆ OgdenT()

template<typename ST_ , int n, PrincipalStretchTags tag>
Ikarus::Materials::OgdenT< ST_, n, tag >::OgdenT ( const MaterialParameters mpt,
const MaterialExponents mex 
)
inlineexplicit
Parameters
mptmaterial parameters (array of mu values)
mexmaterial exponents (array of alpha values)

Member Function Documentation

◆ firstDerivativeImpl()

template<typename ST_ , int n, PrincipalStretchTags tag>
template<typename ST >
auto Ikarus::Materials::OgdenT< ST_, n, tag >::firstDerivativeImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
ScalarType

◆ materialExponents()

template<typename ST_ , int n, PrincipalStretchTags tag>
const MaterialExponents & Ikarus::Materials::OgdenT< ST_, n, tag >::materialExponents ( ) const
inline

◆ materialParametersImpl()

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

◆ name()

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

◆ rebind()

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

◆ secondDerivativeImpl()

template<typename ST_ , int n, PrincipalStretchTags tag>
template<typename ST >
auto Ikarus::Materials::OgdenT< ST_, n, tag >::secondDerivativeImpl ( const PrincipalStretches< ST > &  lambda) const
inline
Parameters
lambdaprincipal stretches
Template Parameters
STthe scalartype of the principal stretches
Returns
ScalarType

◆ storedEnergyImpl()

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

Member Data Documentation

◆ dim

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

◆ numMatParameters

template<typename ST_ , int n, PrincipalStretchTags tag>
constexpr int Ikarus::Materials::OgdenT< ST_, n, tag >::numMatParameters = n
staticconstexpr

◆ stretchTag

template<typename ST_ , int n, PrincipalStretchTags tag>
constexpr PrincipalStretchTags Ikarus::Materials::OgdenT< ST_, n, tag >::stretchTag = tag
staticconstexpr

◆ usesDeviatoricStretches

template<typename ST_ , int n, PrincipalStretchTags tag>
constexpr bool Ikarus::Materials::OgdenT< ST_, n, tag >::usesDeviatoricStretches = stretchTag == PrincipalStretchTags::deviatoric
staticconstexpr

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