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 :
9 : #include "DataStructures/DataBox/Tag.hpp"
10 : #include "DataStructures/DataVector.hpp"
11 : #include "DataStructures/Tensor/Tensor.hpp"
12 : #include "Domain/Tags.hpp"
13 : #include "Domain/TagsTimeDependent.hpp"
14 : #include "Evolution/DgSubcell/ActiveGrid.hpp"
15 : #include "Evolution/DgSubcell/Tags/ActiveGrid.hpp"
16 : #include "Evolution/DgSubcell/Tags/Mesh.hpp"
17 : #include "ParallelAlgorithms/Events/Tags.hpp"
18 : #include "Utilities/TMPL.hpp"
19 :
20 : /// \cond
21 : namespace gsl {
22 : template <typename T>
23 : class not_null;
24 : } // namespace gsl
25 : template <size_t Dim>
26 : class Mesh;
27 : /// \endcond
28 :
29 : namespace evolution::dg::subcell::Tags {
30 : /*!
31 : * \brief Computes the mesh velocity on the active grid.
32 : */
33 : template <size_t Dim>
34 1 : struct ObserverMeshVelocityCompute
35 : : db::ComputeTag,
36 : ::Events::Tags::ObserverMeshVelocity<Dim, Frame::Inertial> {
37 0 : using base = ::Events::Tags::ObserverMeshVelocity<Dim, Frame::Inertial>;
38 0 : using return_type = typename base::type;
39 0 : using argument_tags =
40 : tmpl::list<ActiveGrid, ::domain::Tags::MeshVelocity<Dim, Frame::Inertial>,
41 : ::domain::Tags::Mesh<Dim>,
42 : evolution::dg::subcell::Tags::Mesh<Dim>>;
43 :
44 0 : static void function(
45 : gsl::not_null<return_type*> active_mesh_velocity,
46 : subcell::ActiveGrid active_grid,
47 : const std::optional<tnsr::I<DataVector, Dim, Frame::Inertial>>&
48 : dg_mesh_velocity,
49 : const ::Mesh<Dim>& dg_mesh, const ::Mesh<Dim>& subcell_mesh);
50 : };
51 : } // namespace evolution::dg::subcell::Tags
|