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 |
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) }. \]
ST_ | The underlying scalar type. |
n | Number of ogden parameters |
tag | Type of principal stretch quantity, either total stretches or deviatoric stretches |
using Ikarus::Materials::OgdenT< ST_, n, tag >::FirstDerivative = Eigen::Vector<ST, dim> |
using Ikarus::Materials::OgdenT< ST_, n, tag >::MaterialExponents = std::array<double, numMatParameters> |
using Ikarus::Materials::OgdenT< ST_, n, tag >::MaterialParameters = std::array<double, numMatParameters> |
using Ikarus::Materials::OgdenT< ST_, n, tag >::PrincipalStretches = Eigen::Vector<ST, 3> |
using Ikarus::Materials::OgdenT< ST_, n, tag >::ScalarType = ST_ |
using Ikarus::Materials::OgdenT< ST_, n, tag >::SecondDerivative = Eigen::Matrix<ST, dim, dim> |
|
inlineexplicit |
mpt | material parameters (array of mu values) |
mex | material exponents (array of alpha values) |
|
inline |
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
inline |
|
inline |
|
inlinestaticconstexprnoexcept |
|
inline |
STO | The target scalar type. |
|
inline |
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
inline |
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |