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 : template <size_t Dim, typename T> 14 : class DirectionalIdMap; 15 : class LtsTimeStepper; 16 : namespace Tags { 17 : template <typename StepperInterface> 18 : struct TimeStepper; 19 : } // namespace Tags 20 : namespace TimeSteppers { 21 : template <typename LocalData, typename RemoteData, typename CouplingResult> 22 : class BoundaryHistory; 23 : } // namespace TimeSteppers 24 : namespace evolution::dg { 25 : template <size_t Dim> 26 : struct MortarData; 27 : template <size_t Dim> 28 : class MortarInfo; 29 : } // namespace evolution::dg 30 : namespace evolution::dg::Tags { 31 : template <size_t Dim, typename CouplingResult> 32 : struct MortarDataHistory; 33 : template <size_t Dim> 34 : struct MortarInfo; 35 : } // namespace evolution::dg::Tags 36 : namespace gsl { 37 : template <class T> 38 : class not_null; 39 : } // namespace gsl 40 : /// \endcond 41 : 42 : namespace evolution::dg { 43 : /// Mutator to remove old entries from the mortar histories in a 44 : /// local-time-stepping DG evolution. 45 : template <typename System> 46 1 : struct CleanMortarHistory { 47 0 : static constexpr size_t dim = System::volume_dim; 48 0 : using dt_variables_tag = 49 : db::add_tag_prefix<::Tags::dt, typename System::variables_tag>; 50 0 : using CouplingResult = typename dt_variables_tag::type; 51 : 52 0 : using return_tags = 53 : tmpl::list<evolution::dg::Tags::MortarDataHistory<dim, CouplingResult>>; 54 0 : using argument_tags = 55 : tmpl::list<::Tags::TimeStepper<LtsTimeStepper>, Tags::MortarInfo<dim>>; 56 : 57 0 : static void apply( 58 : gsl::not_null<DirectionalIdMap< 59 : dim, TimeSteppers::BoundaryHistory<::evolution::dg::MortarData<dim>, 60 : ::evolution::dg::MortarData<dim>, 61 : CouplingResult>>*> 62 : history, 63 : const LtsTimeStepper& time_stepper, 64 : const DirectionalIdMap<dim, MortarInfo<dim>>& mortar_info); 65 : }; 66 : } // namespace evolution::dg