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/DataBox/PrefixHelpers.hpp"
9 : #include "DataStructures/DataBox/Prefixes.hpp"
10 : #include "Utilities/TMPL.hpp"
11 :
12 : /// \cond
13 : class DataVector;
14 : template <size_t Dim, typename T>
15 : class DirectionalIdMap;
16 : class LtsTimeStepper;
17 : namespace Tags {
18 : template <typename StepperInterface>
19 : struct TimeStepper;
20 : } // namespace Tags
21 : namespace TimeSteppers {
22 : template <typename LocalData, typename RemoteData,
23 : typename UntypedCouplingResult>
24 : class BoundaryHistory;
25 : } // namespace TimeSteppers
26 : namespace evolution::dg {
27 : template <size_t Dim>
28 : struct MortarData;
29 : template <size_t Dim>
30 : class MortarInfo;
31 : } // namespace evolution::dg
32 : namespace evolution::dg::Tags {
33 : template <size_t Dim>
34 : struct MortarDataHistory;
35 : template <size_t Dim>
36 : struct MortarInfo;
37 : } // namespace evolution::dg::Tags
38 : namespace gsl {
39 : template <class T>
40 : class not_null;
41 : } // namespace gsl
42 : /// \endcond
43 :
44 : namespace evolution::dg {
45 : /// Mutator to remove old entries from the mortar histories in a
46 : /// local-time-stepping DG evolution.
47 : template <size_t Dim>
48 1 : struct CleanMortarHistory {
49 0 : using return_tags = tmpl::list<evolution::dg::Tags::MortarDataHistory<Dim>>;
50 0 : using argument_tags =
51 : tmpl::list<::Tags::TimeStepper<LtsTimeStepper>, Tags::MortarInfo<Dim>>;
52 :
53 0 : static void apply(
54 : gsl::not_null<DirectionalIdMap<
55 : Dim, TimeSteppers::BoundaryHistory<::evolution::dg::MortarData<Dim>,
56 : ::evolution::dg::MortarData<Dim>,
57 : DataVector>>*>
58 : history,
59 : const LtsTimeStepper& time_stepper,
60 : const DirectionalIdMap<Dim, MortarInfo<Dim>>& mortar_info);
61 : };
62 : } // namespace evolution::dg
|