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 :
8 : #include "DataStructures/Tensor/TypeAliases.hpp"
9 : #include "Domain/Tags.hpp"
10 : #include "Evolution/DgSubcell/RdmpTciData.hpp"
11 : #include "Evolution/DgSubcell/Tags/ActiveGrid.hpp"
12 : #include "Evolution/DgSubcell/Tags/DataForRdmpTci.hpp"
13 : #include "Evolution/DgSubcell/Tags/Mesh.hpp"
14 : #include "Evolution/Systems/NewtonianEuler/Tags.hpp"
15 : #include "Utilities/TMPL.hpp"
16 :
17 : /// \cond
18 : class DataVector;
19 : template <size_t Dim>
20 : class Mesh;
21 : template <typename TagsList>
22 : class Variables;
23 : /// \endcond
24 :
25 : namespace NewtonianEuler::subcell {
26 : /// \brief Sets the initial RDMP data.
27 : ///
28 : /// Used on the subcells after the TCI marked the DG solution as inadmissible.
29 : template <size_t Dim>
30 1 : struct SetInitialRdmpData {
31 : private:
32 0 : using MassDensityCons = NewtonianEuler::Tags::MassDensityCons;
33 0 : using EnergyDensity = NewtonianEuler::Tags::EnergyDensity;
34 0 : using MomentumDensity = NewtonianEuler::Tags::MomentumDensity<Dim>;
35 :
36 : public:
37 0 : using argument_tags = tmpl::list<
38 : ::Tags::Variables<
39 : tmpl::list<MassDensityCons, MomentumDensity, EnergyDensity>>,
40 : evolution::dg::subcell::Tags::ActiveGrid, ::domain::Tags::Mesh<Dim>,
41 : evolution::dg::subcell::Tags::Mesh<Dim>>;
42 0 : using return_tags = tmpl::list<evolution::dg::subcell::Tags::DataForRdmpTci>;
43 :
44 0 : static void apply(
45 : gsl::not_null<evolution::dg::subcell::RdmpTciData*> rdmp_tci_data,
46 : const Variables<tmpl::list<MassDensityCons, MomentumDensity,
47 : EnergyDensity>>& subcell_vars,
48 : evolution::dg::subcell::ActiveGrid active_grid, const Mesh<Dim>& dg_mesh,
49 : const Mesh<Dim>& subcell_mesh);
50 : };
51 : } // namespace NewtonianEuler::subcell
|