version 0.4
Ikarus::StVenantKirchhoffT< ScalarType_ > Struct Template Reference

Implementation of the Saint Venant-Kirchhoff material model.The energy is computed as. More...

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

Inheritance diagram for Ikarus::StVenantKirchhoffT< ScalarType_ >:
[legend]

Public Types

using ScalarType = ScalarType_
 
using StrainMatrix = Eigen::Matrix< ScalarType, worldDimension, worldDimension >
 
using StressMatrix = StrainMatrix
 
using MaterialImplType = StVenantKirchhoffT< ScalarType_ >
 Type of material implementation. More...
 

Public Member Functions

constexpr std::string nameImpl () const
 
 StVenantKirchhoffT (const LamesFirstParameterAndShearModulus &mpt)
 Constructor for StVenantKirchhoffT. More...
 
template<typename Derived >
ScalarType storedEnergyImpl (const Eigen::MatrixBase< Derived > &E) const
 Computes the stored energy in the Saint Venant-Kirchhoff material model. More...
 
template<bool voigt, typename Derived >
auto stressesImpl (const Eigen::MatrixBase< Derived > &E) const
 Computes the stresses in the Saint Venant-Kirchhoff material model. More...
 
template<bool voigt, typename Derived >
auto tangentModuliImpl (const Eigen::MatrixBase< Derived > &E) const
 Computes the tangent moduli in the Saint Venant-Kirchhoff material model. More...
 
template<typename ScalarTypeOther >
auto rebind () const
 Rebinds the material to a different scalar type. More...
 
constexpr const StVenantKirchhoffT< ScalarType_ > & impl () const
 Const accessor to the underlying material (CRTP). More...
 
constexpr StVenantKirchhoffT< ScalarType_ > & impl ()
 Accessor to the underlying material (CRTP). More...
 
constexpr std::string name () const
 Get the name of 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...
 

Public Attributes

LamesFirstParameterAndShearModulus materialParameter
 

Static Public Attributes

static constexpr int worldDimension = 3
 
static constexpr auto strainTag = StrainTags::greenLagrangian
 
static constexpr auto stressTag = StressTags::PK2
 
static constexpr auto tangentModuliTag = TangentModuliTags::Material
 
static constexpr bool energyAcceptsVoigt = true
 
static constexpr bool stressToVoigt = true
 
static constexpr bool stressAcceptsVoigt = true
 
static constexpr bool moduliToVoigt = true
 
static constexpr bool moduliAcceptsVoigt = true
 
static constexpr double derivativeFactor = 1
 
static constexpr bool isReduced
 Static constant for determining if the material has vanishing stress components (is reduced). More...
 

Detailed Description

template<typename ScalarType_>
struct Ikarus::StVenantKirchhoffT< ScalarType_ >

\[ \psi(\BE) = \frac{\lambda}{2} (\tr \BE)^2 +\mu \tr (\BE^2) ,\]

where \( \BE \) denotes the Green-Lagrangian strain.

The second Piola-Kirchhoff stresses are computed as

\[ \BS(\BE) =\fracpt{\psi(\BE)}{\BE} = \lambda \tr \BE \BI +2 \mu \BE,\]

and the material tangent moduli are computed as

\[ \BBC(\BE) =\fracpt{^2\psi(\BE)}{\BE^2} = \lambda \tr \BE \CI +2 \mu \CI^{\mathrm{sym}},\]

where \( \CI_{IJKL} = \de_{IJ}\de_{KL}\) and \( \CI_{IJKL}^\mathrm{sym} = \frac{1}{2}(\de_{IK}\de_{JL}+ \de_{IL}\de_{JK})\).

Template Parameters
ScalarType_The scalar type used in the material.

Member Typedef Documentation

◆ MaterialImplType

using Ikarus::Material< StVenantKirchhoffT< ScalarType_ > >::MaterialImplType = StVenantKirchhoffT< ScalarType_ >
inherited

◆ ScalarType

template<typename ScalarType_ >
using Ikarus::StVenantKirchhoffT< ScalarType_ >::ScalarType = ScalarType_

◆ StrainMatrix

template<typename ScalarType_ >
using Ikarus::StVenantKirchhoffT< ScalarType_ >::StrainMatrix = Eigen::Matrix<ScalarType, worldDimension, worldDimension>

◆ StressMatrix

template<typename ScalarType_ >
using Ikarus::StVenantKirchhoffT< ScalarType_ >::StressMatrix = StrainMatrix

Constructor & Destructor Documentation

◆ StVenantKirchhoffT()

template<typename ScalarType_ >
Ikarus::StVenantKirchhoffT< ScalarType_ >::StVenantKirchhoffT ( const LamesFirstParameterAndShearModulus mpt)
inlineexplicit
Parameters
mptThe material parameters (Lamé's first parameter and shear modulus).

Member Function Documentation

◆ impl() [1/2]

constexpr StVenantKirchhoffT< ScalarType_ > & Ikarus::Material< StVenantKirchhoffT< ScalarType_ > >::impl ( )
inlineconstexprinherited
Returns
Reference to the underlying material.

◆ impl() [2/2]

constexpr const StVenantKirchhoffT< ScalarType_ > & Ikarus::Material< StVenantKirchhoffT< ScalarType_ > >::impl ( ) const
inlineconstexprinherited
Returns
Const reference to the underlying material.

◆ name()

constexpr std::string Ikarus::Material< StVenantKirchhoffT< ScalarType_ > >::name ( ) const
inlineconstexprinherited
Returns
Name of the material.

◆ nameImpl()

template<typename ScalarType_ >
constexpr std::string Ikarus::StVenantKirchhoffT< ScalarType_ >::nameImpl ( ) const
inlineconstexpr

◆ rebind()

template<typename ScalarType_ >
template<typename ScalarTypeOther >
auto Ikarus::StVenantKirchhoffT< ScalarType_ >::rebind ( ) const
inline
Template Parameters
ScalarTypeOtherThe target scalar type.
Returns
StVenantKirchhoffT<ScalarTypeOther> The rebound StVenantKirchhoff material.

◆ storedEnergy()

auto Ikarus::Material< StVenantKirchhoffT< ScalarType_ > >::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<typename ScalarType_ >
template<typename Derived >
ScalarType Ikarus::StVenantKirchhoffT< ScalarType_ >::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< StVenantKirchhoffT< ScalarType_ > >::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<typename ScalarType_ >
template<bool voigt, typename Derived >
auto Ikarus::StVenantKirchhoffT< ScalarType_ >::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< StVenantKirchhoffT< ScalarType_ > >::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<typename ScalarType_ >
template<bool voigt, typename Derived >
auto Ikarus::StVenantKirchhoffT< ScalarType_ >::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
Eigen::TensorFixedSize<ScalarType, Eigen::Sizes<3, 3, 3, 3>> The tangent moduli.

Member Data Documentation

◆ derivativeFactor

template<typename ScalarType_ >
constexpr double Ikarus::StVenantKirchhoffT< ScalarType_ >::derivativeFactor = 1
staticconstexpr

◆ energyAcceptsVoigt

template<typename ScalarType_ >
constexpr bool Ikarus::StVenantKirchhoffT< ScalarType_ >::energyAcceptsVoigt = true
staticconstexpr

◆ isReduced

constexpr bool Ikarus::Material< StVenantKirchhoffT< ScalarType_ > >::isReduced
staticconstexprinherited

◆ materialParameter

template<typename ScalarType_ >
LamesFirstParameterAndShearModulus Ikarus::StVenantKirchhoffT< ScalarType_ >::materialParameter

◆ moduliAcceptsVoigt

template<typename ScalarType_ >
constexpr bool Ikarus::StVenantKirchhoffT< ScalarType_ >::moduliAcceptsVoigt = true
staticconstexpr

◆ moduliToVoigt

template<typename ScalarType_ >
constexpr bool Ikarus::StVenantKirchhoffT< ScalarType_ >::moduliToVoigt = true
staticconstexpr

◆ strainTag

template<typename ScalarType_ >
constexpr auto Ikarus::StVenantKirchhoffT< ScalarType_ >::strainTag = StrainTags::greenLagrangian
staticconstexpr

◆ stressAcceptsVoigt

template<typename ScalarType_ >
constexpr bool Ikarus::StVenantKirchhoffT< ScalarType_ >::stressAcceptsVoigt = true
staticconstexpr

◆ stressTag

template<typename ScalarType_ >
constexpr auto Ikarus::StVenantKirchhoffT< ScalarType_ >::stressTag = StressTags::PK2
staticconstexpr

◆ stressToVoigt

template<typename ScalarType_ >
constexpr bool Ikarus::StVenantKirchhoffT< ScalarType_ >::stressToVoigt = true
staticconstexpr

◆ tangentModuliTag

template<typename ScalarType_ >
constexpr auto Ikarus::StVenantKirchhoffT< ScalarType_ >::tangentModuliTag = TangentModuliTags::Material
staticconstexpr

◆ worldDimension

template<typename ScalarType_ >
constexpr int Ikarus::StVenantKirchhoffT< ScalarType_ >::worldDimension = 3
staticconstexpr

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