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