|
SpECTRE
v2026.11.11
|
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 |
A general homogeneous anisotropic linear elastic material in 3D.
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.
|
overridevirtual |
Returns a std::unique_ptr pointing to a copy of the ConstitutiveRelation.
Implements Elasticity::ConstitutiveRelations::ConstitutiveRelation< 3 >.
|
staticconstexpr |