SpECTRE  v2024.04.12
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 = tmpl::list< BulkModulus, ShearModulus >
 

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) \(\mu\).
 
double lame_parameter () const
 The Lamé parameter \(\lambda\).
 
double youngs_modulus () const
 The Young's modulus \(E\).
 
double poisson_ratio () const
 The Poisson ratio \(\nu\).
 
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 \(T^{ij}=-Y^{ijkl}S_{kl}\) reduces to

\[ Y^{ijkl} = \lambda \delta^{ij}\delta^{kl} + \mu \left(\delta^{ik}\delta^{jl} + \delta^{il}\delta^{jk}\right) \\ \implies \quad T^{ij} = -\lambda \mathrm{Tr}(S) \delta^{ij} - 2\mu S^{ij} \]

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

\[ K=\lambda + \frac{2}{3}\mu \]

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

\[ T^{ij} = -K \mathrm{Tr}(S) \delta^{ij} - 2\mu\left(S^{ij} - \frac{1}{3}\mathrm{Tr}(S)\delta^{ij}\right) \]

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

\[ E=\frac{9K\mu}{3K+\mu}=\frac{\mu(3\lambda+2\mu)}{\lambda+\mu} \]

and the Poisson ratio

\[ \nu=\frac{3K-2\mu}{2(3K+\mu)}=\frac{\lambda}{2(\lambda+\mu)}\text{.} \]

Inversely, these relations read:

\[ K =\frac{E}{3(1-2\nu)}, \quad \lambda =\frac{E\nu}{(1+\nu)(1-2\nu)}, \quad \mu =\frac{E}{2(1+\nu)} \]

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 \(T^{i3}=0=T^{3i}\) we find \(\mathrm{Tr}(S)=\frac{2\mu}{\lambda + 2\mu}\mathrm{Tr}^{(2)}(S)\), where \(\mathrm{Tr}^{(2)}\) denotes that the trace only applies to the two dimensions within the plane. The constitutive relation thus reduces to

\begin{align} T^{ij}=&-\frac{2\lambda\mu}{\lambda + 2\mu}\mathrm{Tr}^{(2)}(S)\delta^{ij} - 2\mu S^{ij} \\ =&-\frac{E\nu}{1-\nu^2}\mathrm{Tr}^{(2)}(S)\delta^{ij} - \frac{E}{1+\nu}S^{ij} \end{align}

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 \(\partial_3T^{ij}=0\) the elasticity problem \(-\partial_i T^{ij}=F^j\) 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: