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 : const tnsr::I<DataVector, Dim, Frame::Inertial>& coords);
39 :
40 0 : using argument_tags =
41 : tmpl::list<::domain::Tags::MeshVelocity<Dim, Frame::Inertial>,
42 : ::domain::Tags::Mesh<Dim>,
43 : ::domain::Tags::InverseJacobian<Dim, Frame::ElementLogical,
44 : Frame::Inertial>,
45 : ::domain::Tags::Coordinates<Dim, Frame::Inertial>>;
46 : };
47 : } // namespace Tags
48 : } // namespace domain
49 : } // namespace evolution
|