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 Exponents & | pExponents () const |
const Exponents & | qExponents () 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 |
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. \]
ST_ | The underlying scalar type. |
n | Number of material parameters |
using Ikarus::Materials::InvariantBasedT< ST_, n >::Exponents = std::array<std::size_t, numMatParameters> |
using Ikarus::Materials::InvariantBasedT< ST_, n >::FirstDerivative = Eigen::Vector<ST, dim> |
using Ikarus::Materials::InvariantBasedT< ST_, n >::Invariants = PrincipalStretches<ST> |
using Ikarus::Materials::InvariantBasedT< ST_, n >::MaterialParameters = std::array<double, numMatParameters> |
using Ikarus::Materials::InvariantBasedT< ST_, n >::PrincipalStretches = Eigen::Vector<ST, 3> |
using Ikarus::Materials::InvariantBasedT< ST_, n >::ScalarType = ST_ |
using Ikarus::Materials::InvariantBasedT< ST_, n >::SecondDerivative = Eigen::Matrix<ST, dim, dim> |
|
inlineexplicit |
pex | Array of exponents related to the first invariant. |
qex | Array of exponents related to the second invariant. |
matParameters | Array of material parameters. |
|
inline |
lambda | principal stretches |
ST | the scalartype of the principal stretches |
|
inline |
|
inlinestaticconstexprnoexcept |
|
inline |
|
inline |
|
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 |