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 <tuple>
8 :
9 : #include "DataStructures/Tensor/TypeAliases.hpp"
10 : #include "Domain/Tags.hpp"
11 : #include "Evolution/DgSubcell/RdmpTciData.hpp"
12 : #include "Evolution/DgSubcell/Tags/DataForRdmpTci.hpp"
13 : #include "Evolution/DgSubcell/Tags/Mesh.hpp"
14 : #include "Evolution/DgSubcell/Tags/SubcellOptions.hpp"
15 : #include "Evolution/Systems/Burgers/Tags.hpp"
16 : #include "Utilities/TMPL.hpp"
17 :
18 : /// \cond
19 : class DataVector;
20 : template <size_t Dim>
21 : class Mesh;
22 : /// \endcond
23 :
24 : namespace Burgers::subcell {
25 : /*!
26 : * \brief Troubled-cell indicator applied to the finite difference subcell
27 : * solution to check if the corresponding DG solution is admissible.
28 : *
29 : * Applies the Persson to \f$U\f$ on the DG grid, and the RDMP TCI to \f$U\f$.
30 : */
31 1 : struct TciOnFdGrid {
32 0 : using return_tags = tmpl::list<>;
33 0 : using argument_tags =
34 : tmpl::list<Burgers::Tags::U, ::domain::Tags::Mesh<1>,
35 : evolution::dg::subcell::Tags::Mesh<1>,
36 : evolution::dg::subcell::Tags::DataForRdmpTci,
37 : evolution::dg::subcell::Tags::SubcellOptions<1>>;
38 :
39 0 : static std::tuple<bool, evolution::dg::subcell::RdmpTciData> apply(
40 : const Scalar<DataVector>& subcell_u, const Mesh<1>& dg_mesh,
41 : const Mesh<1>& subcell_mesh,
42 : const evolution::dg::subcell::RdmpTciData& past_rdmp_tci_data,
43 : const evolution::dg::subcell::SubcellOptions& subcell_options,
44 : double persson_exponent, bool need_rdmp_data_only);
45 : };
46 : } // namespace Burgers::subcell
|