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
|