SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DiscontinuousGalerkin - MortarTags.hpp Hit Total Coverage
Commit: 361cb8d8406bb752684a5f31c27320ec444a50e3 Lines: 6 13 46.2 %
Date: 2025-11-09 02:02:04
Legend: Lines: hit not hit

          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 <memory>
       8             : 
       9             : #include "DataStructures/DataBox/Tag.hpp"
      10             : 
      11             : /// \cond
      12             : template <size_t Dim, typename T>
      13             : class DirectionalIdMap;
      14             : template <size_t Dim>
      15             : class Mesh;
      16             : namespace evolution::dg {
      17             : template <size_t Dim>
      18             : class BoundaryMessage;
      19             : template <size_t Dim>
      20             : class MortarData;
      21             : template <size_t Dim>
      22             : class MortarDataHolder;
      23             : template <size_t Dim>
      24             : class MortarInfo;
      25             : }  // namespace evolution::dg
      26             : class TimeStepId;
      27             : namespace TimeSteppers {
      28             : template <typename LocalData, typename RemoteData, typename CouplingResult>
      29             : class BoundaryHistory;
      30             : }  // namespace TimeSteppers
      31             : /// \endcond
      32             : 
      33             : /// %Tags used for DG evolution scheme.
      34             : namespace evolution::dg::Tags {
      35             : /// Data on mortars, indexed by (Direction, ElementId) pairs
      36             : ///
      37             : /// The `Dim` is the volume dimension, not the face dimension.
      38             : template <size_t Dim>
      39           1 : struct MortarData : db::SimpleTag {
      40           0 :   using type = DirectionalIdMap<Dim, evolution::dg::MortarDataHolder<Dim>>;
      41             : };
      42             : 
      43             : /// History of the data on mortars, indexed by (Direction, ElementId) pairs, and
      44             : /// used by the linear multistep local time stepping code.
      45             : ///
      46             : /// The `Dim` is the volume dimension, not the face dimension.
      47             : ///
      48             : /// `CouplingResult` is the result of calling a functor of type `Coupling` used
      49             : /// in `TimeSteppers::BoundaryHistory`. It is also the result of
      50             : /// `LtsTimeStepper::compute_boundary_delta()`, which again has a `Coupling`
      51             : /// template parameter.
      52             : template <size_t Dim, typename CouplingResult>
      53           1 : struct MortarDataHistory : db::SimpleTag {
      54           0 :   using type = DirectionalIdMap<
      55             :       Dim, TimeSteppers::BoundaryHistory<::evolution::dg::MortarData<Dim>,
      56             :                                          ::evolution::dg::MortarData<Dim>,
      57             :                                          CouplingResult>>;
      58             : };
      59             : 
      60             : /// Mesh on the mortars, indexed by (Direction, ElementId) pairs
      61             : ///
      62             : /// The `Dim` is the volume dimension, not the face dimension.
      63             : template <size_t Dim>
      64           1 : struct MortarMesh : db::SimpleTag {
      65           0 :   using type = DirectionalIdMap<Dim, Mesh<Dim - 1>>;
      66             : };
      67             : 
      68             : /// The ::evolution::dg::MortarInfo for each mortar
      69             : ///
      70             : /// The `Dim` is the volume dimension, not the face dimension.
      71             : template <size_t Dim>
      72           1 : struct MortarInfo : db::SimpleTag {
      73           0 :   using type = DirectionalIdMap<Dim, ::evolution::dg::MortarInfo<Dim>>;
      74             : };
      75             : 
      76             : /// The next temporal id at which to receive data on the specified mortar.
      77             : ///
      78             : /// The `Dim` is the volume dimension, not the face dimension.
      79             : template <size_t Dim>
      80           1 : struct MortarNextTemporalId : db::SimpleTag {
      81           0 :   using type = DirectionalIdMap<Dim, TimeStepId>;
      82             : };
      83             : 
      84             : /// \brief The BoundaryMessage received from the inbox
      85             : ///
      86             : /// We must store the `std::unique_ptr` in the DataBox so the memory persists in
      87             : /// case data was sent from another node
      88             : /// \tparam Dim The volume dimension, not the face dimension
      89             : template <size_t Dim>
      90           1 : struct BoundaryMessageFromInbox : db::SimpleTag {
      91           0 :   using type = DirectionalIdMap<Dim, std::unique_ptr<BoundaryMessage<Dim>>>;
      92             : };
      93             : }  // namespace evolution::dg::Tags

Generated by: LCOV version 1.14