version 0.4.1
Ikarus::LinearElasticityT< ST > Struct Template Reference

Implementation of the Linear Elasticity material model.The energy is computed as. More...

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

Inheritance diagram for Ikarus::LinearElasticityT< ST >:
[legend]

Public Types

using ScalarType = ST
 
using Base = StVenantKirchhoffT< ScalarType >
 
using field_type = ScalarType
 
using StrainMatrix = Eigen::Matrix< ScalarType, worldDimension, worldDimension >
 
using StressMatrix = StrainMatrix
 
using MaterialParameters = typename Base::MaterialParameters
 
using MaterialImpl = LinearElasticityT< ST >
 Type of material implementation. More...
 

Public Member Functions

 LinearElasticityT (const MaterialParameters &mpt)
 Constructor for LinearElasticityT. More...
 
MaterialParameters materialParametersImpl () const
 Returns the material parameters stored in the material. More...
 
template<typename Derived >
ScalarType storedEnergyImpl (const Eigen::MatrixBase< Derived > &E) const
 Calculates the stored energy in the material. More...
 
template<bool voigt, typename Derived >
auto stressesImpl (const Eigen::MatrixBase< Derived > &E) const
 Calculates the stresses in the material. More...
 
template<bool voigt, typename Derived >
auto tangentModuliImpl (const Eigen::MatrixBase< Derived > &E) const
 Calculates the tangent moduli in the material. More...
 
template<typename STO >
auto rebind () const
 Rebind 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 int worldDimension = 3
 
static constexpr auto strainTag = StrainTags::linear
 
static constexpr auto stressTag = StressTags::linear
 
static constexpr auto tangentModuliTag = TangentModuliTags::Material
 
static constexpr bool energyAcceptsVoigt = Base::energyAcceptsVoigt
 
static constexpr bool stressToVoigt = Base::stressToVoigt
 
static constexpr bool stressAcceptsVoigt = Base::stressAcceptsVoigt
 
static constexpr bool moduliToVoigt = Base::moduliToVoigt
 
static constexpr bool moduliAcceptsVoigt = Base::moduliAcceptsVoigt
 
static constexpr double derivativeFactorImpl = Base::derivativeFactorImpl
 
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<typename ST>
struct Ikarus::LinearElasticityT< ST >

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

where \( \Bvep \) denotes the linear strain tensor.

The second Piola-Kirchhoff stresses are computed as

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

and the material tangent moduli are computed as

\[ \BBC(\Bvep) =\fracpt{^2\psi(\Bvep)}{\Bvep^2} = \lambda \tr \Bvep \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
STThe scalar type used in the material.

Member Typedef Documentation

◆ Base

template<typename ST >
using Ikarus::LinearElasticityT< ST >::Base = StVenantKirchhoffT<ScalarType>

◆ field_type

template<typename ST >
using Ikarus::LinearElasticityT< ST >::field_type = ScalarType

◆ MaterialImpl

using Ikarus::Material< LinearElasticityT< ST > >::MaterialImpl = LinearElasticityT< ST >
inherited

◆ MaterialParameters

template<typename ST >
using Ikarus::LinearElasticityT< ST >::MaterialParameters = typename Base::MaterialParameters

◆ ScalarType

template<typename ST >
using Ikarus::LinearElasticityT< ST >::ScalarType = ST

◆ StrainMatrix

template<typename ST >
using Ikarus::LinearElasticityT< ST >::StrainMatrix = Eigen::Matrix<ScalarType, worldDimension, worldDimension>

◆ StressMatrix

template<typename ST >
using Ikarus::LinearElasticityT< ST >::StressMatrix = StrainMatrix

Constructor & Destructor Documentation

◆ LinearElasticityT()

template<typename ST >
Ikarus::LinearElasticityT< ST >::LinearElasticityT ( const MaterialParameters mpt)
inlineexplicit
Parameters
mptThe LamesFirstParameterAndShearModulus object.

Member Function Documentation

◆ impl() [1/2]

constexpr MaterialImpl & Ikarus::Material< LinearElasticityT< ST > >::impl ( )
inlineconstexprinherited
Returns
Reference to the underlying material.

◆ impl() [2/2]

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

◆ materialParameters()

auto Ikarus::Material< LinearElasticityT< ST > >::materialParameters ( ) const
inlineinherited
Returns
Material parameter.

◆ materialParametersImpl()

template<typename ST >
MaterialParameters Ikarus::LinearElasticityT< ST >::materialParametersImpl ( ) const
inline

◆ name()

static constexpr std::string Ikarus::Material< LinearElasticityT< ST > >::name ( )
inlinestaticconstexprinherited
Returns
Name of the material.

◆ nameImpl()

template<typename ST >
static constexpr std::string Ikarus::LinearElasticityT< ST >::nameImpl ( )
inlinestaticconstexprnoexcept

◆ rebind()

template<typename ST >
template<typename STO >
auto Ikarus::LinearElasticityT< ST >::rebind ( ) const
inline
Template Parameters
STOThe scalar type to rebind to.
Returns
Rebound material.

◆ storedEnergy()

auto Ikarus::Material< LinearElasticityT< ST > >::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 ST >
template<typename Derived >
ScalarType Ikarus::LinearElasticityT< ST >::storedEnergyImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
DerivedThe underlying Eigen type.
Parameters
EThe strain tensor components.
Returns
Scalar return of stored energy.
Here is the caller graph for this function:

◆ stresses()

auto Ikarus::Material< LinearElasticityT< ST > >::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 ST >
template<bool voigt, typename Derived >
auto Ikarus::LinearElasticityT< ST >::stressesImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtBoolean indicating whether to return Voigt-shaped result.
DerivedThe underlying Eigen type.
Parameters
EThe strain tensor components.
Returns
Matrix valued return of stresses.

◆ tangentModuli()

auto Ikarus::Material< LinearElasticityT< ST > >::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 ST >
template<bool voigt, typename Derived >
auto Ikarus::LinearElasticityT< ST >::tangentModuliImpl ( const Eigen::MatrixBase< Derived > &  E) const
inline
Template Parameters
voigtBoolean indicating whether to return Voigt-shaped result.
DerivedThe underlying Eigen type.
Parameters
EThe strain tensor components.
Returns
Tangent moduli as fourth-order tensor.

Member Data Documentation

◆ derivativeFactor

constexpr double Ikarus::Material< LinearElasticityT< ST > >::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<typename ST >
constexpr double Ikarus::LinearElasticityT< ST >::derivativeFactorImpl = Base::derivativeFactorImpl
staticconstexpr

◆ energyAcceptsVoigt

template<typename ST >
constexpr bool Ikarus::LinearElasticityT< ST >::energyAcceptsVoigt = Base::energyAcceptsVoigt
staticconstexpr

◆ isReduced

constexpr bool Ikarus::Material< LinearElasticityT< ST > >::isReduced
staticconstexprinherited

◆ moduliAcceptsVoigt

template<typename ST >
constexpr bool Ikarus::LinearElasticityT< ST >::moduliAcceptsVoigt = Base::moduliAcceptsVoigt
staticconstexpr

◆ moduliToVoigt

template<typename ST >
constexpr bool Ikarus::LinearElasticityT< ST >::moduliToVoigt = Base::moduliToVoigt
staticconstexpr

◆ strainTag

template<typename ST >
constexpr auto Ikarus::LinearElasticityT< ST >::strainTag = StrainTags::linear
staticconstexpr

◆ stressAcceptsVoigt

template<typename ST >
constexpr bool Ikarus::LinearElasticityT< ST >::stressAcceptsVoigt = Base::stressAcceptsVoigt
staticconstexpr

◆ stressTag

template<typename ST >
constexpr auto Ikarus::LinearElasticityT< ST >::stressTag = StressTags::linear
staticconstexpr

◆ stressToVoigt

template<typename ST >
constexpr bool Ikarus::LinearElasticityT< ST >::stressToVoigt = Base::stressToVoigt
staticconstexpr

◆ tangentModuliTag

template<typename ST >
constexpr auto Ikarus::LinearElasticityT< ST >::tangentModuliTag = TangentModuliTags::Material
staticconstexpr

◆ worldDimension

template<typename ST >
constexpr int Ikarus::LinearElasticityT< ST >::worldDimension = 3
staticconstexpr

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