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