VanishingStress material model that enforces stress components to be zero. More...
#include <ikarus/finiteelements/mechanics/materials/vanishingstress.hh>
Public Types | |
using | Underlying = MI |
The underlying material type. More... | |
using | MaterialParameters = typename Underlying::MaterialParameters |
using | StrainMatrix = typename Underlying::StrainMatrix |
using | StressMatrix = typename Underlying::StressMatrix |
using | MaterialTensor = typename Underlying::MaterialTensor |
using | ScalarType = typename Underlying::ScalarType |
Scalar type. More... | |
using | MaterialImpl = VanishingStress< stressIndexPair, MI > |
Type of material implementation. More... | |
Public Member Functions | |
VanishingStress (MI mat, typename MI::ScalarType tol=1e-12) | |
Constructor for VanishingStress. More... | |
MaterialParameters | materialParametersImpl () const |
Returns the material parameters stored in the material. More... | |
template<typename Derived > | |
ScalarType | storedEnergyImpl (const Eigen::MatrixBase< Derived > &E) const |
Computes the stored energy for the VanishingStress material. More... | |
template<bool voigt, typename Derived > | |
auto | stressesImpl (const Eigen::MatrixBase< Derived > &E) const |
Computes the stresses for the VanishingStress material. More... | |
template<bool voigt, typename Derived > | |
auto | tangentModuliImpl (const Eigen::MatrixBase< Derived > &E) const |
Computes the tangent moduli for the VanishingStress material. More... | |
template<typename ScalarTypeOther > | |
auto | rebind () const |
Rebinds the material to a different scalar type. More... | |
auto & | underlying () const |
Returns a const reference to the underlying material. More... | |
template<typename Derived > | |
auto | materialInversionImpl (const Eigen::MatrixBase< Derived > &Sraw) const |
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... | |
auto | storedEnergy (const Eigen::MatrixBase< Derived > &Eraw) const |
Return the stored potential energy of the material. More... | |
auto | stresses (const Eigen::MatrixBase< Derived > &Eraw) const |
Get the stresses of the material. More... | |
auto | tangentModuli (const Eigen::MatrixBase< Derived > &Eraw) const |
Get the tangentModuli of the material. More... | |
auto | materialInversion (const Eigen::MatrixBase< Derived > &Sraw, const Eigen::MatrixBase< Derived > &EstartRaw=Derived::Zero().eval(), const double tol=1e-12, const int maxIter=20) const |
Computes the corresponding strain measure and inverse material tangent for a given stress state. More... | |
Static Public Member Functions | |
static constexpr std::string | nameImpl () noexcept |
static constexpr std::string | name () |
Get the name of the implemented material. More... | |
Static Public Attributes | |
static constexpr int | dim = Underlying::dim |
static constexpr auto | fixedPairs = stressIndexPair |
Array of fixed stress components. More... | |
static constexpr auto | freeVoigtIndices = Impl::createfreeVoigtIndices(fixedPairs) |
Free Voigt indices. More... | |
static constexpr auto | fixedVoigtIndices = Impl::createFixedVoigtIndices(fixedPairs) |
Fixed Voigt indices. More... | |
static constexpr auto | fixedDiagonalVoigtIndicesSize |
Number of fixed diagonal indices. More... | |
static constexpr auto | freeStrains = freeVoigtIndices.size() |
Number of free strains. More... | |
static constexpr bool | isAutoDiff = Concepts::AutodiffScalar<ScalarType> |
static constexpr auto | strainTag = Underlying::strainTag |
Strain tag. More... | |
static constexpr auto | stressTag = Underlying::stressTag |
Stress tag. More... | |
static constexpr auto | tangentModuliTag = Underlying::tangentModuliTag |
Tangent moduli tag. More... | |
static constexpr bool | energyAcceptsVoigt = Underlying::energyAcceptsVoigt |
Energy accepts Voigt notation. More... | |
static constexpr bool | stressToVoigt = true |
Stress to Voigt notation. More... | |
static constexpr bool | stressAcceptsVoigt = true |
Stress accepts Voigt notation. More... | |
static constexpr bool | moduliToVoigt = true |
Moduli to Voigt notation. More... | |
static constexpr bool | moduliAcceptsVoigt = true |
Moduli accepts Voigt notation. More... | |
static constexpr double | derivativeFactorImpl = Underlying::derivativeFactorImpl |
Derivative factor. More... | |
static constexpr bool | isReduced |
Static constant for determining if the material has vanishing stress or strain components (is reduced). More... | |
static constexpr bool | isLinear |
static constexpr double | derivativeFactor |
This factor denotes the differences between the returned stresses and moduli and the passed strain. More... | |
stressIndexPair | An array of MatrixIndexPair representing fixed stress components. |
MI | The underlying material model. |
|
inherited |
using Ikarus::Materials::VanishingStress< stressIndexPair, MI >::MaterialParameters = typename Underlying::MaterialParameters |
using Ikarus::Materials::VanishingStress< stressIndexPair, MI >::MaterialTensor = typename Underlying::MaterialTensor |
using Ikarus::Materials::VanishingStress< stressIndexPair, MI >::ScalarType = typename Underlying::ScalarType |
using Ikarus::Materials::VanishingStress< stressIndexPair, MI >::StrainMatrix = typename Underlying::StrainMatrix |
using Ikarus::Materials::VanishingStress< stressIndexPair, MI >::StressMatrix = typename Underlying::StressMatrix |
using Ikarus::Materials::VanishingStress< stressIndexPair, MI >::Underlying = MI |
|
inlineexplicit |
mat | The underlying material model. |
tol | Tolerance for stress reduction. |
|
inlineconstexprinherited |
|
inlineconstexprinherited |
|
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.
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 |
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). |
|
inline |
|
inlineinherited |
|
inline |
|
inlinestaticconstexprinherited |
|
inlinestaticconstexprnoexcept |
|
inline |
ScalarTypeOther | The target scalar type. |
|
inlineinherited |
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 |
Derived | The derived type of the input matrix. |
E | The Green-Lagrangian strain. |
|
inlineinherited |
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 |
voigt | A boolean indicating whether to return stresses in Voigt notation. |
Derived | The derived type of the input matrix. |
E | The Green-Lagrangian strain. |
|
inlineinherited |
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 |
voigt | A boolean indicating whether to return tangent moduli in Voigt notation. |
Derived | The derived type of the input matrix. |
E | The Green-Lagrangian strain. |
|
inline |
|
staticconstexprinherited |
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 |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexprinherited |
|
staticconstexprinherited |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |