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
|