Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include "DataStructures/DataBox/Protocols/Mutator.hpp"
7 : #include "DataStructures/Tensor/Tensor.hpp"
8 : #include "Domain/Structure/DirectionalIdMap.hpp"
9 : #include "Evolution/DgSubcell/GhostData.hpp"
10 : #include "Evolution/DgSubcell/Mesh.hpp"
11 : #include "Evolution/DgSubcell/Tags/GhostDataForReconstruction.hpp"
12 : #include "Evolution/DgSubcell/Tags/Mesh.hpp"
13 : #include "Evolution/Systems/Ccz4/FiniteDifference/System.hpp"
14 : #include "Evolution/Systems/Ccz4/FiniteDifference/Tags.hpp"
15 : #include "Evolution/Systems/Ccz4/Tags.hpp"
16 : #include "Utilities/Gsl.hpp"
17 : #include "Utilities/ProtocolHelpers.hpp"
18 : #include "Utilities/TMPL.hpp"
19 :
20 1 : namespace Ccz4::fd {
21 : /*!
22 : * \brief Apply the Kreiss-Oliger filter to the evolved variables
23 : *
24 : */
25 1 : struct ApplyFilter : tt::ConformsTo<db::protocols::Mutator> {
26 0 : using return_tags = tmpl::list<System::variables_tag>;
27 0 : using argument_tags =
28 : tmpl::list<evolution::dg::subcell::Tags::Mesh<3>,
29 : Tags::EvolveLapseAndShift, Tags::KreissOligerEpsilon,
30 : evolution::dg::subcell::Tags::GhostDataForReconstruction<3>>;
31 :
32 0 : static void apply(
33 : gsl::not_null<typename System::variables_tag::type*>
34 : evolved_vars_ptr,
35 : const Mesh<3>& subcell_mesh, bool evolve_lapse_and_shift,
36 : double kreiss_oliger_epsilon,
37 : const DirectionalIdMap<3, evolution::dg::subcell::GhostData>& ghost_data);
38 : };
39 : } // namespace Ccz4::fd
|