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/Tensor/Tensor.hpp"
9 : #include "Domain/Tags.hpp"
10 : #include "Elliptic/Systems/Elasticity/Tags.hpp"
11 : #include "PointwiseFunctions/Elasticity/ConstitutiveRelations/ConstitutiveRelation.hpp"
12 : #include "PointwiseFunctions/Elasticity/ConstitutiveRelations/Tags.hpp"
13 :
14 : namespace Elasticity::Tags {
15 :
16 : template <size_t Dim>
17 0 : struct StressCompute : Elasticity::Tags::Stress<Dim>, db::ComputeTag {
18 0 : using base = Elasticity::Tags::Stress<Dim>;
19 0 : using return_type = tnsr::II<DataVector, Dim>;
20 0 : using argument_tags =
21 : tmpl::list<Elasticity::Tags::Strain<Dim>,
22 : domain::Tags::Coordinates<Dim, Frame::Inertial>,
23 : Elasticity::Tags::ConstitutiveRelation<Dim>>;
24 0 : static void function(const gsl::not_null<tnsr::II<DataVector, Dim>*> stress,
25 : const tnsr::ii<DataVector, Dim>& strain,
26 : const tnsr::I<DataVector, Dim>& coordinates,
27 : const ConstitutiveRelations::ConstitutiveRelation<Dim>&
28 : constitutive_relation) {
29 : constitutive_relation.stress(stress, strain, coordinates);
30 : }
31 : };
32 :
33 : } // namespace Elasticity::Tags
|