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 <string> 8 : 9 : #include "DataStructures/DataBox/Tag.hpp" 10 : #include "Domain/Tags.hpp" 11 : #include "Utilities/Gsl.hpp" 12 : 13 : /// \cond 14 : template <size_t Dim> 15 : class Mesh; 16 : /// \endcond 17 : 18 : namespace evolution::dg::subcell::Tags { 19 : /// @{ 20 : /// The mesh on the subcells 21 : template <size_t VolumeDim> 22 1 : struct Mesh : db::SimpleTag { 23 0 : static std::string name() { return "Subcell(Mesh)"; } 24 0 : using type = ::Mesh<VolumeDim>; 25 : }; 26 : 27 : template <size_t VolumeDim> 28 0 : struct MeshCompute : Mesh<VolumeDim>, db::ComputeTag { 29 0 : using base = Mesh<VolumeDim>; 30 0 : using return_type = typename base::type; 31 0 : using argument_tags = tmpl::list<::domain::Tags::Mesh<VolumeDim>>; 32 0 : static void function(gsl::not_null<return_type*> subcell_mesh, 33 : const ::Mesh<VolumeDim>& dg_mesh); 34 : }; 35 : /// @} 36 : } // namespace evolution::dg::subcell::Tags