Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <string> 7 : 8 : #include "DataStructures/DataBox/Tag.hpp" 9 : #include "DataStructures/Tensor/TypeAliases.hpp" 10 : 11 : /// \cond 12 : class DataVector; 13 : /// \endcond 14 : 15 : /*! 16 : * \ingroup EllipticSystemsGroup 17 : * \brief Items related to solving elasticity problems 18 : * 19 : * \details In elasticity problems we solve for the displacement vector 20 : * field \f$\boldsymbol{\xi}\f$ in an elastic material that responds to external 21 : * forces, stresses or deformations. In this static approximation the 22 : * equations of motion reduce to the elliptic equations 23 : * 24 : * \f[ 25 : * \nabla_i T^{ij} = f_\mathrm{ext}^j 26 : * \f] 27 : * 28 : * that describes a state of equilibrium between the stresses \f$T^{ij}\f$ 29 : * within the material and the external body forces 30 : * \f$\boldsymbol{f}_\mathrm{ext}\f$ (Eqns. 11.13 and 11.14 in 31 : * \cite ThorneBlandford2017 with the counteracting internal forces 32 : * \f$\boldsymbol{f} = -\boldsymbol{f}_\mathrm{ext}\f$). For small 33 : * deformations (see e.g. \cite ThorneBlandford2017, Section 11.3.2 for a 34 : * discussion) the stress is related to the strain 35 : * \f$S_{ij}=\nabla_{(i}\xi_{j)}\f$ by a linear constitutive relation 36 : * \f$T^{ij}=-Y^{ijkl}S_{kl}\f$ (Eq. 11.17 in \cite ThorneBlandford2017) that 37 : * describes the elastic properties of the material (see 38 : * `Elasticity::ConstitutiveRelations::ConstitutiveRelation`). 39 : */ 40 : namespace Elasticity { 41 : namespace Tags { 42 : 43 : /*! 44 : * \brief The material displacement field \f$\boldsymbol{u}(x)\f$ 45 : */ 46 : template <size_t Dim> 47 1 : struct Displacement : db::SimpleTag { 48 0 : using type = tnsr::I<DataVector, Dim>; 49 : }; 50 : 51 : /*! 52 : * \brief The symmetric strain \f$S_{ij}=\nabla_{(i}u_{j)}\f$, describing the 53 : * deformation of the elastic material. 54 : */ 55 : template <size_t Dim> 56 1 : struct Strain : db::SimpleTag { 57 0 : using type = tnsr::ii<DataVector, Dim>; 58 : }; 59 : 60 : /*! 61 : * \brief The symmetric stress, i.e. $T^{ij}$, describing pressure within the 62 : * elastic material. 63 : */ 64 : template <size_t Dim> 65 1 : struct Stress : db::SimpleTag { 66 0 : using type = tnsr::II<DataVector, Dim>; 67 : }; 68 : 69 : /*! 70 : * \brief Minus the `Stress`, i.e. $-T^{ij}$. This tag can be used for the flux 71 : * in a first-order formulation of the elasticity system. 72 : */ 73 : template <size_t Dim> 74 1 : struct MinusStress : db::SimpleTag { 75 0 : using type = tnsr::II<DataVector, Dim>; 76 : }; 77 : 78 : /*! 79 : * \brief The energy density \f$U=-\frac{1}{2}S_{ij}T^{ij}\f$ stored in the 80 : * deformation of the elastic material. 81 : */ 82 : template <size_t Dim> 83 1 : struct PotentialEnergyDensity : db::SimpleTag { 84 0 : using type = Scalar<DataVector>; 85 : }; 86 : 87 : } // namespace Tags 88 : } // namespace Elasticity