Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstddef> 7 : 8 : #include "DataStructures/DataBox/PrefixHelpers.hpp" 9 : #include "DataStructures/DataBox/Prefixes.hpp" 10 : #include "Elliptic/BoundaryConditions/BoundaryCondition.hpp" 11 : #include "Elliptic/Protocols/FirstOrderSystem.hpp" 12 : #include "Elliptic/Systems/Elasticity/Equations.hpp" 13 : #include "Elliptic/Systems/Elasticity/Tags.hpp" 14 : #include "NumericalAlgorithms/LinearOperators/PartialDerivatives.hpp" 15 : #include "PointwiseFunctions/Elasticity/ConstitutiveRelations/ConstitutiveRelation.hpp" 16 : #include "Utilities/ProtocolHelpers.hpp" 17 : #include "Utilities/TMPL.hpp" 18 : 19 : namespace Elasticity { 20 : 21 : /*! 22 : * \brief The linear elasticity equation formulated as a set of coupled 23 : * first-order PDEs. 24 : * 25 : * This system formulates the elasticity equation (see `Elasticity`): 26 : * 27 : * \f{align*} 28 : * \nabla_i T^{ij} = f_\mathrm{ext}^j \\ 29 : * T^{ij} = -Y^{ijkl} \nabla_{(k} \xi_{l)} 30 : * \f} 31 : * 32 : * The system can be formulated in terms of these fluxes and sources (see 33 : * `elliptic::protocols::FirstOrderSystem`): 34 : * 35 : * \f{align*} 36 : * F^{ij} &= -T^{ij} = Y^{ijkl} \nabla_{(k} \xi_{l)} \\ 37 : * S^j &= 0 \\ 38 : * f^j &= f_\mathrm{ext}^j \text{.} 39 : * \f} 40 : */ 41 : template <size_t Dim> 42 1 : struct FirstOrderSystem 43 : : tt::ConformsTo<elliptic::protocols::FirstOrderSystem> { 44 0 : static constexpr size_t volume_dim = Dim; 45 : 46 0 : using primal_fields = tmpl::list<Tags::Displacement<Dim>>; 47 0 : using primal_fluxes = tmpl::list<Tags::MinusStress<Dim>>; 48 : 49 0 : using background_fields = tmpl::list<>; 50 0 : using inv_metric_tag = void; 51 : 52 0 : using fluxes_computer = Fluxes<Dim>; 53 0 : using sources_computer = void; 54 : 55 0 : using boundary_conditions_base = 56 : elliptic::BoundaryConditions::BoundaryCondition<Dim>; 57 : }; 58 : } // namespace Elasticity