SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Elasticity::ConstitutiveRelations::IsotropicHomogeneous< Dim > Class Template Reference

An isotropic and homogeneous material. More...

#include <IsotropicHomogeneous.hpp>

Classes

struct  BulkModulus
 
struct  ShearModulus
 

Public Types

using options = implementation defined
 

Public Member Functions

 IsotropicHomogeneous (const IsotropicHomogeneous &)=default
 
IsotropicHomogeneousoperator= (const IsotropicHomogeneous &)=default
 
 IsotropicHomogeneous (IsotropicHomogeneous &&)=default
 
IsotropicHomogeneousoperator= (IsotropicHomogeneous &&)=default
 
 IsotropicHomogeneous (double bulk_modulus, double shear_modulus)
 
std::unique_ptr< ConstitutiveRelation< Dim > > get_clone () const override
 Returns a std::unique_ptr pointing to a copy of the ConstitutiveRelation. More...
 
void stress (gsl::not_null< tnsr::II< DataVector, Dim > * > stress, const tnsr::ii< DataVector, Dim > &strain, const tnsr::I< DataVector, Dim > &x) const override
 The constitutive relation that characterizes the elastic properties of a material. More...
 
double bulk_modulus () const
 The bulk modulus (or incompressibility) K.
 
double shear_modulus () const
 The shear modulus (or rigidity) μ.
 
double lame_parameter () const
 The Lamé parameter λ.
 
double youngs_modulus () const
 The Young's modulus E.
 
double poisson_ratio () const
 The Poisson ratio ν.
 
void pup (PUP::er &) override
 
 IsotropicHomogeneous (CkMigrateMessage *)
 
 WRAPPED_PUPable_decl_base_template (SINGLE_ARG(ConstitutiveRelation< Dim >), IsotropicHomogeneous)
 
- Public Member Functions inherited from Elasticity::ConstitutiveRelations::ConstitutiveRelation< Dim >
 ConstitutiveRelation (const ConstitutiveRelation &)=default
 
ConstitutiveRelationoperator= (const ConstitutiveRelation &)=default
 
 ConstitutiveRelation (ConstitutiveRelation &&)=default
 
ConstitutiveRelationoperator= (ConstitutiveRelation &&)=default
 
 WRAPPED_PUPable_abstract (ConstitutiveRelation)
 
virtual std::unique_ptr< ConstitutiveRelation< Dim > > get_clone () const =0
 Returns a std::unique_ptr pointing to a copy of the ConstitutiveRelation. More...
 
virtual void stress (gsl::not_null< tnsr::II< DataVector, Dim > * > stress, const tnsr::ii< DataVector, Dim > &strain, const tnsr::I< DataVector, Dim > &x) const =0
 The constitutive relation that characterizes the elastic properties of a material. More...
 

Static Public Attributes

static constexpr size_t volume_dim = Dim
 
static constexpr Options::String help
 
- Static Public Attributes inherited from Elasticity::ConstitutiveRelations::ConstitutiveRelation< Dim >
static constexpr size_t volume_dim = Dim
 

Detailed Description

template<size_t Dim>
class Elasticity::ConstitutiveRelations::IsotropicHomogeneous< Dim >

An isotropic and homogeneous material.

Details

For an isotropic and homogeneous material the linear constitutive relation Tij=YijklSkl reduces to

Yijkl=λδijδkl+μ(δikδjl+δilδjk)Tij=λTr(S)δij2μSij

with the Lamé parameter λ and the shear modulus (or rigidity) μ. In the parametrization chosen in this implementation we use the bulk modulus (or incompressibility)

K=λ+23μ

instead of the Lamé parameter. In this parametrization the stress-strain relation

Tij=KTr(S)δij2μ(Sij13Tr(S)δij)

decomposes into a scalar and a traceless part (Eq. 11.18 in ). Parameters also often used in this context are the Young's modulus

E=9Kμ3K+μ=μ(3λ+2μ)λ+μ

and the Poisson ratio

ν=3K2μ2(3K+μ)=λ2(λ+μ).

Inversely, these relations read:

K=E3(12ν),λ=Eν(1+ν)(12ν),μ=E2(1+ν)

In two dimensions this implementation reduces to the plane-stress approximation. We assume that all stresses apply in the plane of the computational domain, which corresponds to scenarios of in-plane stretching and shearing of thin slabs of material. Since orthogonal stresses vanish as Ti3=0=T3i we find Tr(S)=2μλ+2μTr(2)(S), where Tr(2) denotes that the trace only applies to the two dimensions within the plane. The constitutive relation thus reduces to

(1)Tij=2λμλ+2μTr(2)(S)δij2μSij(2)=Eν1ν2Tr(2)(S)δijE1+νSij

which is non-zero only in the directions of the plane. Since the stresses are also assumed to be constant along the thickness of the plane 3Tij=0 the elasticity problem iTij=Fj reduces to two dimensions.

Member Function Documentation

◆ get_clone()

template<size_t Dim>
std::unique_ptr< ConstitutiveRelation< Dim > > Elasticity::ConstitutiveRelations::IsotropicHomogeneous< Dim >::get_clone ( ) const
overridevirtual

◆ stress()

template<size_t Dim>
void Elasticity::ConstitutiveRelations::IsotropicHomogeneous< Dim >::stress ( gsl::not_null< tnsr::II< DataVector, Dim > * >  stress,
const tnsr::ii< DataVector, Dim > &  strain,
const tnsr::I< DataVector, Dim > &  x 
) const
overridevirtual

The constitutive relation that characterizes the elastic properties of a material.

Implements Elasticity::ConstitutiveRelations::ConstitutiveRelation< Dim >.

Member Data Documentation

◆ help

template<size_t Dim>
constexpr Options::String Elasticity::ConstitutiveRelations::IsotropicHomogeneous< Dim >::help
staticconstexpr
Initial value:
= {
"A constitutive relation that describes an isotropic, homogeneous "
"material in terms of two elastic moduli. These bulk and shear moduli "
"indicate the material's resistance to volume and shape changes, "
"respectively. Both are measured in units of stress, typically Pascals."}

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