Interface classf or materials. More...
#include <ikarus/finiteelements/mechanics/materials/interface.hh>
Public Types | |
using | MaterialImpl = MI |
Type of material implementation. More... | |
Public Member Functions | |
constexpr const MaterialImpl & | impl () const |
Const accessor to the underlying material (CRTP). More... | |
constexpr MaterialImpl & | impl () |
Accessor to the underlying material (CRTP). More... | |
auto | materialParameters () const |
Returns the material parameters stored in the implemented material. More... | |
template<StrainTags tag, typename Derived > requires CorrectStrainSize<MaterialImpl, Derived> | |
auto | storedEnergy (const Eigen::MatrixBase< Derived > &Eraw) const |
Return the stored potential energy of the material. More... | |
template<StrainTags tag, bool voigt = true, typename Derived > requires CorrectStrainSize<MaterialImpl, Derived> | |
auto | stresses (const Eigen::MatrixBase< Derived > &Eraw) const |
Get the stresses of the material. More... | |
template<StrainTags tag, bool voigt = true, typename Derived > requires CorrectStrainSize<MaterialImpl, Derived> | |
auto | tangentModuli (const Eigen::MatrixBase< Derived > &Eraw) const |
Get the tangentModuli of the material. More... | |
template<typename STO > | |
auto | rebind () const |
Rebind material to a different scalar type. More... | |
Static Public Member Functions | |
static constexpr std::string | name () |
Get the name of the implemented material. More... | |
Static Public Attributes | |
static constexpr bool | isReduced |
Static constant for determining if the material has vanishing stress or strain components (is reduced). More... | |
static constexpr double | derivativeFactor = MI::derivativeFactorImpl |
This factor denotes the differences between the returned stresses and moduli and the passed strain. More... | |
Consider a hyper elastic material with the free Helmholtz energy
\[\require{cases}\psi: \begin{cases}\mathbb{R}^{3\times 3} &\rightarrow \mathbb{R} \\ \BC &\mapsto \psi(\BC) \end{cases}.\]
Then, the value of this potential energy is return by storedEnergy and its first derivative (the stresses) by stresses and the second derivatives (the tangent moduli) by tangentModuli .
The passed strains can be in several formats, i.e., \(\BC\) can be the right Cauchy-Green tensor, the deformation gradient \(\mathbf{F}\) or linear strains. The current supported tags are given by Ikarus::StrainTags.
MI | Type of the underlying material implementation. |
using Ikarus::Material< MI >::MaterialImpl = MI |
|
inlineconstexpr |
|
inlineconstexpr |
|
inline |
|
inlinestaticconstexpr |
Useful for using automatic differentiation.
STO | The scalar type to rebind to. |
|
inline |
This function return the free Helmholtz energy of the material
tag | Strain tag indicating which strain tensor components are passed. |
Derived | The underlying Eigen type. |
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
|
inline |
tag | Strain tag indicating which strain tensor components are passed. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
|
inline |
tag | Strain tag indicating which strain tensor components are passed. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
|
staticconstexpr |
For neoHooke the inserted quantity is $C$ the Green-Lagrangian strain tensor, the function relation between the energy and the stresses is $S = 1 \dfrac{\partial\psi(E)}{\partial E}$. This factor is the pre factor, which is the difference to the actual derivative, which is written here
|
staticconstexpr |