SpECTRE  v2026.11.11
Loading...
Searching...
No Matches
Elasticity::ConstitutiveRelations::AnisotropicHomogeneous Class Reference

A general homogeneous anisotropic linear elastic material in 3D. More...

#include <AnisotropicHomogeneous.hpp>

Classes

struct  StiffnessMatrix

Public Types

using options = tmpl::list<StiffnessMatrix>

Public Member Functions

 AnisotropicHomogeneous (const AnisotropicHomogeneous &)=default
AnisotropicHomogeneous & operator= (const AnisotropicHomogeneous &)=default
 AnisotropicHomogeneous (AnisotropicHomogeneous &&)=default
AnisotropicHomogeneous & operator= (AnisotropicHomogeneous &&)=default
 AnisotropicHomogeneous (std::array< std::array< double, 6 >, 6 > stiffness, const Options::Context &context={})
 The stiffness matrix must be symmetric and positive definite (see the class documentation), which is checked in all build types (not only in Debug builds).
std::unique_ptr< ConstitutiveRelation< 3 > > get_clone () const override
 Returns a std::unique_ptr pointing to a copy of the ConstitutiveRelation.
void stress (gsl::not_null< tnsr::II< DataVector, 3 > * > stress, const tnsr::ii< DataVector, 3 > &strain, const tnsr::I< DataVector, 3 > &x) const override
const std::array< std::array< double, 6 >, 6 > & stiffness_matrix () const
void pup (PUP::er &) override
 AnisotropicHomogeneous (CkMigrateMessage *)
 WRAPPED_PUPable_decl_base_template (SINGLE_ARG(ConstitutiveRelation< 3 >), AnisotropicHomogeneous)
Public Member Functions inherited from Elasticity::ConstitutiveRelations::ConstitutiveRelation< 3 >
ConstitutiveRelation & operator= (const ConstitutiveRelation &)=default
 WRAPPED_PUPable_abstract (ConstitutiveRelation)
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.

Static Public Attributes

static constexpr size_t volume_dim = 3
static constexpr double min_relative_eigenvalue = 1.e-12
 The smallest eigenvalue of the Voigt matrix must exceed this fraction of the largest eigenvalue for the matrix to count as positive definite.
static constexpr Options::String help
Static Public Attributes inherited from Elasticity::ConstitutiveRelations::ConstitutiveRelation< 3 >
static constexpr size_t volume_dim

Detailed Description

A general homogeneous anisotropic linear elastic material in 3D.

Details

The material is specified by a symmetric 6x6 stiffness matrix in Voigt notation. The stress-strain relation is

\[T^{ij} = -Y^{ijkl} S_{kl} \]

where \(S_{ij}=\nabla_{(i}u_{j)}\) is the (symmetric) strain tensor.

We interpret the Voigt strain vector with engineering shear strains:

\[e = [S_{xx}, S_{yy}, S_{zz}, 2S_{yz}, 2S_{xz}, 2S_{xy}] \]

and the Voigt stress vector as:

\[s = [T_{xx}, T_{yy}, T_{zz}, T_{yz}, T_{xz}, T_{xy}] \]

Then \( s = -C e \), where \(C\) is the 6x6 stiffness matrix.

The matrix must be symmetric and positive definite, so that the strain energy density \(e^T C e / 2\) is positive for every nonzero strain. The positive-definiteness check is relative: the smallest eigenvalue of \(C\) must exceed min_relative_eigenvalue times its largest eigenvalue, so the check does not depend on the units of \(C\) and numerically singular matrices are rejected deterministically.

Member Function Documentation

◆ get_clone()

std::unique_ptr< ConstitutiveRelation< 3 > > Elasticity::ConstitutiveRelations::AnisotropicHomogeneous::get_clone ( ) const
overridevirtual

Member Data Documentation

◆ help

Options::String Elasticity::ConstitutiveRelations::AnisotropicHomogeneous::help
staticconstexpr
Initial value:
= {
"A constitutive relation that describes a homogeneous, anisotropic "
"material in terms of a symmetric 6x6 stiffness matrix in Voigt "
"notation. The matrix entries are in the same units of stress as the "
"other materials (e.g. GPa in the input files)."}

The documentation for this class was generated from the following file:
  • src/PointwiseFunctions/Elasticity/ConstitutiveRelations/AnisotropicHomogeneous.hpp