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