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 : #include <optional> 8 : #include <string> 9 : 10 : #include "DataStructures/DataBox/Tag.hpp" 11 : #include "DataStructures/Tensor/TypeAliases.hpp" 12 : #include "Domain/Tags.hpp" 13 : #include "Domain/TagsTimeDependent.hpp" 14 : #include "Utilities/Gsl.hpp" 15 : #include "Utilities/TMPL.hpp" 16 : 17 : /// \cond 18 : class DataVector; 19 : /// \endcond 20 : 21 : namespace evolution { 22 0 : namespace domain { 23 0 : namespace Tags { 24 : /// The divergence of the frame velocity 25 : template <size_t Dim> 26 1 : struct DivMeshVelocityCompute : db::ComputeTag, 27 : ::domain::Tags::DivMeshVelocity { 28 0 : using base = DivMeshVelocity; 29 0 : using return_type = typename base::type; 30 : 31 0 : static void function( 32 : gsl::not_null<std::optional<Scalar<DataVector>>*> div_mesh_velocity, 33 : const std::optional<tnsr::I<DataVector, Dim, Frame::Inertial>>& 34 : mesh_velocity, 35 : const ::Mesh<Dim>& mesh, 36 : const ::InverseJacobian<DataVector, Dim, Frame::ElementLogical, 37 : Frame::Inertial>& inv_jac_logical_to_inertial); 38 : 39 0 : using argument_tags = 40 : tmpl::list<::domain::Tags::MeshVelocity<Dim, Frame::Inertial>, 41 : ::domain::Tags::Mesh<Dim>, 42 : ::domain::Tags::InverseJacobian<Dim, Frame::ElementLogical, 43 : Frame::Inertial>>; 44 : }; 45 : } // namespace Tags 46 : } // namespace domain 47 : } // namespace evolution