version 0.4.9
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 MaterialExponents & materialExponents () 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: