version 0.4.1
Ikarus::VanishingStress< stressIndexPair, MI > Struct Template Reference

VanishingStress material model that enforces stress components to be zero. More...

#include <ikarus/finiteelements/mechanics/materials/vanishingstress.hh>

Inheritance diagram for Ikarus::VanishingStress< stressIndexPair, MI >:
[legend]

Public Types

using Underlying = MI
 The underlying material type. More...
 
using MaterialParameters = typename Underlying::MaterialParameters
 
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...
 
constexpr const MaterialImplimpl () const
 Const accessor to the underlying material (CRTP). More...
 
constexpr MaterialImplimpl ()
 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...
 

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 auto fixedPairs = stressIndexPair
 Array of fixed stress components. More...
 
static constexpr auto freeVoigtIndices = createfreeVoigtIndices(fixedPairs)
 Free Voigt indices. More...
 
static constexpr auto fixedVoigtIndices = 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 double derivativeFactor
 This factor denotes the differences between the returned stresses and moduli and the passed strain. More...
 

Detailed Description

template<auto stressIndexPair, typename MI>
struct Ikarus::VanishingStress< stressIndexPair, MI >
Template Parameters
stressIndexPairAn array of MatrixIndexPair representing fixed stress components.
MIThe underlying material model.

Member Typedef Documentation

◆ MaterialImpl

using Ikarus::Material< VanishingStress< stressIndexPair, MI > >::MaterialImpl = VanishingStress< stressIndexPair, MI >
inherited

◆ MaterialParameters

template<auto stressIndexPair, typename MI >
using Ikarus::VanishingStress< stressIndexPair, MI >::MaterialParameters = typename Underlying::MaterialParameters

◆ ScalarType

template<auto stressIndexPair, typename MI >
using Ikarus::VanishingStress< stressIndexPair, MI >::ScalarType = typename Underlying::ScalarType

◆ Underlying

template<auto stressIndexPair, typename MI >
using Ikarus::VanishingStress< stressIndexPair, MI >::Underlying = MI

Constructor & Destructor Documentation

◆ VanishingStress()

template<auto stressIndexPair, typename MI >
Ikarus::VanishingStress< stressIndexPair, MI >::VanishingStress ( MI  mat,
typename MI::ScalarType  tol = 1e-12 
)
inlineexplicit
Parameters
matThe underlying material model.
tolTolerance for stress reduction.

Member Function Documentation

◆ impl() [1/2]

constexpr MaterialImpl & Ikarus::Material< VanishingStress< stressIndexPair, MI > >::impl ( )
inlineconstexprinherited
Returns
Reference to the underlying material.

◆ impl() [2/2]

constexpr const MaterialImpl & Ikarus::Material< VanishingStress< stressIndexPair, MI > >::impl ( ) const
inlineconstexprinherited
Returns
Const reference to the underlying material.

◆ materialParameters()

auto Ikarus::Material< VanishingStress< stressIndexPair, MI > >::materialParameters ( ) const
inlineinherited
Returns
Material parameter.

◆ materialParametersImpl()

template<auto stressIndexPair, typename MI >
MaterialParameters Ikarus::VanishingStress< stressIndexPair, MI >::materialParametersImpl ( ) const
inline

◆ name()

static constexpr std::string Ikarus::Material< VanishingStress< stressIndexPair, MI > >::name ( )
inlinestaticconstexprinherited
Returns
Name of the material.

◆ nameImpl()

template<auto stressIndexPair, typename MI >
static constexpr std::string Ikarus::VanishingStress< stressIndexPair, MI >::nameImpl ( )
inlinestaticconstexprnoexcept

◆ rebind()

template<auto stressIndexPair, typename MI >
template<typename ScalarTypeOther >
auto Ikarus::VanishingStress< stressIndexPair, MI >::rebind ( ) const
inline
Template Parameters
ScalarTypeOtherThe target scalar type.
Returns
VanishingStress The rebound VanishingStress material.

◆ storedEnergy()

auto Ikarus::Material< VanishingStress< stressIndexPair, MI > >::storedEnergy ( const Eigen::MatrixBase< Derived > &  Eraw) const
inlineinherited

This function return the free Helmholtz energy of the material

Template Parameters
tagStrain tag indicating which strain tensor components are passed.
DerivedThe underlying Eigen type.
Parameters
ErawThe strain tensor components passed in Voigt notation or matrix notation.
Returns
Scalar return of stored energy.

◆ storedEnergyImpl()

template<auto stressIndexPair, typename MI >
template<typename Derived >
ScalarType Ikarus::VanishingStress< stressIndexPair, MI >::storedEnergyImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
DerivedThe derived type of the input matrix.
Parameters
EThe Green-Lagrangian strain.
Returns
ScalarType The stored energy.

◆ stresses()

auto Ikarus::Material< VanishingStress< stressIndexPair, MI > >::stresses ( const Eigen::MatrixBase< Derived > &  Eraw) const
inlineinherited
Template Parameters
tagStrain tag indicating which strain tensor components are passed.
voigtBoolean indicating whether to return Voigt-shaped result.
DerivedThe underlying Eigen type.
Parameters
ErawThe strain tensor components passed in Voigt notation or matrix notation.
Returns
Vectorial or Matrix return of stresses.

◆ stressesImpl()

template<auto stressIndexPair, typename MI >
template<bool voigt, typename Derived >
auto Ikarus::VanishingStress< stressIndexPair, MI >::stressesImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtA boolean indicating whether to return stresses in Voigt notation.
DerivedThe derived type of the input matrix.
Parameters
EThe Green-Lagrangian strain.
Returns
StressMatrix The stresses.

◆ tangentModuli()

auto Ikarus::Material< VanishingStress< stressIndexPair, MI > >::tangentModuli ( const Eigen::MatrixBase< Derived > &  Eraw) const
inlineinherited
Template Parameters
tagStrain tag indicating which strain tensor components are passed.
voigtBoolean indicating whether to return Voigt-shaped result.
DerivedThe underlying Eigen type.
Parameters
ErawThe strain tensor components passed in Voigt notation or matrix notation.
Returns
Tangent moduli in Voigt notation or as fourth-order tensor.

◆ tangentModuliImpl()

template<auto stressIndexPair, typename MI >
template<bool voigt, typename Derived >
auto Ikarus::VanishingStress< stressIndexPair, MI >::tangentModuliImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtA boolean indicating whether to return tangent moduli in Voigt notation.
DerivedThe derived type of the input matrix.
Parameters
EThe Green-Lagrangian strain.
Returns
TangentModuli The tangent moduli.

Member Data Documentation

◆ derivativeFactor

constexpr double Ikarus::Material< VanishingStress< stressIndexPair, MI > >::derivativeFactor
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

◆ derivativeFactorImpl

template<auto stressIndexPair, typename MI >
constexpr double Ikarus::VanishingStress< stressIndexPair, MI >::derivativeFactorImpl = Underlying::derivativeFactorImpl
staticconstexpr

◆ energyAcceptsVoigt

template<auto stressIndexPair, typename MI >
constexpr bool Ikarus::VanishingStress< stressIndexPair, MI >::energyAcceptsVoigt = Underlying::energyAcceptsVoigt
staticconstexpr

◆ fixedDiagonalVoigtIndicesSize

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::fixedDiagonalVoigtIndicesSize
staticconstexpr
Initial value:
=
countDiagonalIndices(fixedPairs)
static constexpr auto fixedPairs
Array of fixed stress components.
Definition: vanishingstress.hh:34

◆ fixedPairs

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::fixedPairs = stressIndexPair
staticconstexpr

◆ fixedVoigtIndices

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::fixedVoigtIndices = createFixedVoigtIndices(fixedPairs)
staticconstexpr

◆ freeStrains

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::freeStrains = freeVoigtIndices.size()
staticconstexpr

◆ freeVoigtIndices

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::freeVoigtIndices = createfreeVoigtIndices(fixedPairs)
staticconstexpr

◆ isAutoDiff

template<auto stressIndexPair, typename MI >
constexpr bool Ikarus::VanishingStress< stressIndexPair, MI >::isAutoDiff = Concepts::AutodiffScalar<ScalarType>
staticconstexpr

◆ isReduced

constexpr bool Ikarus::Material< VanishingStress< stressIndexPair, MI > >::isReduced
staticconstexprinherited

◆ moduliAcceptsVoigt

template<auto stressIndexPair, typename MI >
constexpr bool Ikarus::VanishingStress< stressIndexPair, MI >::moduliAcceptsVoigt = true
staticconstexpr

◆ moduliToVoigt

template<auto stressIndexPair, typename MI >
constexpr bool Ikarus::VanishingStress< stressIndexPair, MI >::moduliToVoigt = true
staticconstexpr

◆ strainTag

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::strainTag = Underlying::strainTag
staticconstexpr

◆ stressAcceptsVoigt

template<auto stressIndexPair, typename MI >
constexpr bool Ikarus::VanishingStress< stressIndexPair, MI >::stressAcceptsVoigt = true
staticconstexpr

◆ stressTag

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::stressTag = Underlying::stressTag
staticconstexpr

◆ stressToVoigt

template<auto stressIndexPair, typename MI >
constexpr bool Ikarus::VanishingStress< stressIndexPair, MI >::stressToVoigt = true
staticconstexpr

◆ tangentModuliTag

template<auto stressIndexPair, typename MI >
constexpr auto Ikarus::VanishingStress< stressIndexPair, MI >::tangentModuliTag = Underlying::tangentModuliTag
staticconstexpr

The documentation for this struct was generated from the following file: