VanishingStrain material model that enforces strain components to be zero.
More...
#include <ikarus/finiteelements/mechanics/materials/vanishingstrain.hh>
|
static constexpr std::string | nameImpl () noexcept |
|
static constexpr std::string | name () |
| Get the name of the implemented material. More...
|
|
template<auto strainIndexPair, typename MI>
struct Ikarus::Materials::VanishingStrain< strainIndexPair, MI >
- Template Parameters
-
strainIndexPair | An array of MatrixIndexPair representing fixed stress components. |
MI | The underlying material model. |
◆ MaterialImpl
◆ MaterialParameters
template<auto strainIndexPair, typename MI >
◆ MaterialTensor
template<auto strainIndexPair, typename MI >
◆ ScalarType
template<auto strainIndexPair, typename MI >
◆ StrainMatrix
template<auto strainIndexPair, typename MI >
◆ StressMatrix
template<auto strainIndexPair, typename MI >
◆ Underlying
template<auto strainIndexPair, typename MI >
◆ VanishingStrain()
template<auto strainIndexPair, typename MI >
- Parameters
-
mat | The underlying material model. |
◆ impl() [1/2]
- Returns
- Reference to the underlying material.
◆ impl() [2/2]
- Returns
- Const reference to the underlying material.
◆ materialInversion()
auto Ikarus::Materials::Material< VanishingStrain< strainIndexPair, MI > >::materialInversion |
( |
const Eigen::MatrixBase< Derived > & |
Sraw, |
|
|
const Eigen::MatrixBase< Derived > & |
EstartRaw = Derived::Zero().eval() , |
|
|
const double |
tol = 1e-12 , |
|
|
const int |
maxIter = 20 |
|
) |
| const |
|
inlineinherited |
This assumes the existence of a complementary stored energy function $\chi(\BS)$, such that $$ \partial_{\BS} \chi(\BS) := \BE$$. Except for linear materials, this is not just the inverse of the material tangent, but needs the inversion of the materials stored energy function. For SVK and Linear Elasticity, the inverse of $\BC$ is taken. For NeoHooke an analytical solution exists, and for the general hyperelastic framework (and for all materials that don't implement the material inversion, for that a strain energy function exists) a numerical approach is used.
- Template Parameters
-
tag | Strain tag indicating which strain tensor components are expected as result. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
useNumeric | forces the function to use the generic numerical approach |
Derived | the type of the stress matrix |
- Parameters
-
Sraw | input stress matrix |
EstartRaw | optionally define a starting value for the numerical algorithm (applies only to numerical inversion) |
tol | tolerance for the Newton-Raphson solver (applies only to numerical inversion). |
maxIter | maximum number of iterations for the Newton-Raphson solver (applies only to numerical inversion). |
- Returns
- pair of inverse material tangent and strain tensor
◆ materialParameters()
◆ materialParametersImpl()
template<auto strainIndexPair, typename MI >
◆ name()
|
inlinestaticconstexprinherited |
- Returns
- Name of the material.
◆ nameImpl()
template<auto strainIndexPair, typename MI >
|
inlinestaticconstexprnoexcept |
◆ rebind()
template<auto strainIndexPair, typename MI >
template<typename ScalarTypeOther >
◆ storedEnergy()
This function return the free Helmholtz energy of the material
- Template Parameters
-
tag | Strain tag indicating which strain tensor components are passed. |
Derived | The underlying Eigen type. |
- Parameters
-
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
- Returns
- Scalar return of stored energy.
◆ storedEnergyImpl()
template<auto strainIndexPair, typename MI >
template<typename Derived >
- Template Parameters
-
Derived | The derived type of the input matrix. |
- Parameters
-
- Returns
- ScalarType The stored energy.
◆ stresses()
- Template Parameters
-
tag | Strain tag indicating which strain tensor components are passed. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
- Parameters
-
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
- Returns
- Vectorial or Matrix return of stresses.
◆ stressesImpl()
template<auto strainIndexPair, typename MI >
template<bool voigt, typename Derived >
- Template Parameters
-
voigt | A boolean indicating whether to return strains in Voigt notation. |
Derived | The derived type of the input matrix. |
- Parameters
-
Eraw | The Green-Lagrangian strain. |
- Returns
- StressMatrix The strains.
◆ tangentModuli()
- Template Parameters
-
tag | Strain tag indicating which strain tensor components are passed. |
voigt | Boolean indicating whether to return Voigt-shaped result. |
Derived | The underlying Eigen type. |
- Parameters
-
Eraw | The strain tensor components passed in Voigt notation or matrix notation. |
- Returns
- Tangent moduli in Voigt notation or as fourth-order tensor.
◆ tangentModuliImpl()
template<auto strainIndexPair, typename MI >
template<bool voigt, typename Derived >
- Template Parameters
-
voigt | A boolean indicating whether to return tangent moduli in Voigt notation. |
Derived | The derived type of the input matrix. |
- Parameters
-
- Returns
- TangentModuli The tangent moduli.
◆ underlying()
template<auto strainIndexPair, typename MI >
◆ derivativeFactor
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
◆ derivativeFactorImpl
template<auto strainIndexPair, typename MI >
◆ dim
template<auto strainIndexPair, typename MI >
◆ energyAcceptsVoigt
template<auto strainIndexPair, typename MI >
◆ fixedPairs
template<auto strainIndexPair, typename MI >
◆ fixedVoigtIndices
template<auto strainIndexPair, typename MI >
◆ freeStrains
template<auto strainIndexPair, typename MI >
◆ freeVoigtIndices
template<auto strainIndexPair, typename MI >
◆ isLinear
◆ isReduced
◆ moduliAcceptsVoigt
template<auto strainIndexPair, typename MI >
◆ moduliToVoigt
template<auto strainIndexPair, typename MI >
◆ strainTag
template<auto strainIndexPair, typename MI >
◆ stressAcceptsVoigt
template<auto strainIndexPair, typename MI >
◆ stressTag
template<auto strainIndexPair, typename MI >
◆ stressToVoigt
template<auto strainIndexPair, typename MI >
◆ tangentModuliTag
template<auto strainIndexPair, typename MI >
The documentation for this struct was generated from the following file: