version 0.4.1
Ikarus::VanishingStrain< strainIndexPair, MI > Struct Template Reference

VanishingStrain material model that enforces strain components to be zero. More...

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

Inheritance diagram for Ikarus::VanishingStrain< strainIndexPair, MI >:
[legend]

Public Types

using Underlying = MI
 The underlying material type. More...
 
using ScalarType = typename Underlying::ScalarType
 Scalar type. More...
 
using MaterialParameters = typename Underlying::MaterialParameters
 
using MaterialImpl = VanishingStrain< strainIndexPair, MI >
 Type of material implementation. More...
 

Public Member Functions

 VanishingStrain (MI mat)
 Constructor for VanishingStrain. 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 VanishingStrain material. More...
 
template<bool voigt, typename Derived >
auto stressesImpl (const Eigen::MatrixBase< Derived > &E) const
 Computes the stresses for the VanishingStrain material. More...
 
template<bool voigt, typename Derived >
auto tangentModuliImpl (const Eigen::MatrixBase< Derived > &E) const
 Computes the tangent moduli for the VanishingStrain 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 = strainIndexPair
 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 freeStrains = freeVoigtIndices.size()
 Number of free strains. More...
 
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 strainIndexPair, typename MI>
struct Ikarus::VanishingStrain< strainIndexPair, MI >
Template Parameters
strainIndexPairAn array of MatrixIndexPair representing fixed stress components.
MIThe underlying material model.

Member Typedef Documentation

◆ MaterialImpl

using Ikarus::Material< VanishingStrain< strainIndexPair, MI > >::MaterialImpl = VanishingStrain< strainIndexPair, MI >
inherited

◆ MaterialParameters

template<auto strainIndexPair, typename MI >
using Ikarus::VanishingStrain< strainIndexPair, MI >::MaterialParameters = typename Underlying::MaterialParameters

◆ ScalarType

template<auto strainIndexPair, typename MI >
using Ikarus::VanishingStrain< strainIndexPair, MI >::ScalarType = typename Underlying::ScalarType

◆ Underlying

template<auto strainIndexPair, typename MI >
using Ikarus::VanishingStrain< strainIndexPair, MI >::Underlying = MI

Constructor & Destructor Documentation

◆ VanishingStrain()

template<auto strainIndexPair, typename MI >
Ikarus::VanishingStrain< strainIndexPair, MI >::VanishingStrain ( MI  mat)
inlineexplicit
Parameters
matThe underlying material model.

Member Function Documentation

◆ impl() [1/2]

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

◆ impl() [2/2]

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

◆ materialParameters()

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

◆ materialParametersImpl()

template<auto strainIndexPair, typename MI >
MaterialParameters Ikarus::VanishingStrain< strainIndexPair, MI >::materialParametersImpl ( ) const
inline

◆ name()

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

◆ nameImpl()

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

◆ rebind()

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

◆ storedEnergy()

auto Ikarus::Material< VanishingStrain< strainIndexPair, 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 strainIndexPair, typename MI >
template<typename Derived >
ScalarType Ikarus::VanishingStrain< strainIndexPair, MI >::storedEnergyImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
DerivedThe derived type of the input matrix.
Parameters
ErawThe strain mesasure
Returns
ScalarType The stored energy.

◆ stresses()

auto Ikarus::Material< VanishingStrain< strainIndexPair, 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 strainIndexPair, typename MI >
template<bool voigt, typename Derived >
auto Ikarus::VanishingStrain< strainIndexPair, MI >::stressesImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtA boolean indicating whether to return strains in Voigt notation.
DerivedThe derived type of the input matrix.
Parameters
ErawThe Green-Lagrangian strain.
Returns
StressMatrix The strains.

◆ tangentModuli()

auto Ikarus::Material< VanishingStrain< strainIndexPair, 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 strainIndexPair, typename MI >
template<bool voigt, typename Derived >
auto Ikarus::VanishingStrain< strainIndexPair, 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 strain measure.
Returns
TangentModuli The tangent moduli.

Member Data Documentation

◆ derivativeFactor

constexpr double Ikarus::Material< VanishingStrain< strainIndexPair, 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 strainIndexPair, typename MI >
constexpr double Ikarus::VanishingStrain< strainIndexPair, MI >::derivativeFactorImpl = Underlying::derivativeFactorImpl
staticconstexpr

◆ energyAcceptsVoigt

template<auto strainIndexPair, typename MI >
constexpr bool Ikarus::VanishingStrain< strainIndexPair, MI >::energyAcceptsVoigt = Underlying::energyAcceptsVoigt
staticconstexpr

◆ fixedPairs

template<auto strainIndexPair, typename MI >
constexpr auto Ikarus::VanishingStrain< strainIndexPair, MI >::fixedPairs = strainIndexPair
staticconstexpr

◆ fixedVoigtIndices

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

◆ freeStrains

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

◆ freeVoigtIndices

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

◆ isReduced

constexpr bool Ikarus::Material< VanishingStrain< strainIndexPair, MI > >::isReduced
staticconstexprinherited

◆ moduliAcceptsVoigt

template<auto strainIndexPair, typename MI >
constexpr bool Ikarus::VanishingStrain< strainIndexPair, MI >::moduliAcceptsVoigt = true
staticconstexpr

◆ moduliToVoigt

template<auto strainIndexPair, typename MI >
constexpr bool Ikarus::VanishingStrain< strainIndexPair, MI >::moduliToVoigt = true
staticconstexpr

◆ strainTag

template<auto strainIndexPair, typename MI >
constexpr auto Ikarus::VanishingStrain< strainIndexPair, MI >::strainTag = Underlying::strainTag
staticconstexpr

◆ stressAcceptsVoigt

template<auto strainIndexPair, typename MI >
constexpr bool Ikarus::VanishingStrain< strainIndexPair, MI >::stressAcceptsVoigt = true
staticconstexpr

◆ stressTag

template<auto strainIndexPair, typename MI >
constexpr auto Ikarus::VanishingStrain< strainIndexPair, MI >::stressTag = Underlying::stressTag
staticconstexpr

◆ stressToVoigt

template<auto strainIndexPair, typename MI >
constexpr bool Ikarus::VanishingStrain< strainIndexPair, MI >::stressToVoigt = true
staticconstexpr

◆ tangentModuliTag

template<auto strainIndexPair, typename MI >
constexpr auto Ikarus::VanishingStrain< strainIndexPair, MI >::tangentModuliTag = Underlying::tangentModuliTag
staticconstexpr

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