SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DiscontinuousGalerkin - MortarTags.hpp Hit Total Coverage
Commit: 1e29a35ad8559408f21493dc5db8a49a237bb2f0 Lines: 6 13 46.2 %
Date: 2026-03-31 22:27:51
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             : class DataVector;
      13             : template <size_t Dim, typename T>
      14             : class DirectionalIdMap;
      15             : template <size_t Dim>
      16             : class Mesh;
      17             : namespace evolution::dg {
      18             : template <size_t Dim>
      19             : class BoundaryMessage;
      20             : template <size_t Dim>
      21             : class MortarData;
      22             : template <size_t Dim>
      23             : class MortarDataHolder;
      24             : template <size_t Dim>
      25             : class MortarInfo;
      26             : }  // namespace evolution::dg
      27             : class TimeStepId;
      28             : namespace TimeSteppers {
      29             : template <typename LocalData, typename RemoteData,
      30             :           typename UntypedCouplingResult>
      31             : class BoundaryHistory;
      32             : }  // namespace TimeSteppers
      33             : /// \endcond
      34             : 
      35             : /// %Tags used for DG evolution scheme.
      36             : namespace evolution::dg::Tags {
      37             : /// Data on mortars, indexed by (Direction, ElementId) pairs
      38             : ///
      39             : /// The `Dim` is the volume dimension, not the face dimension.
      40             : template <size_t Dim>
      41           1 : struct MortarData : db::SimpleTag {
      42           0 :   using type = DirectionalIdMap<Dim, evolution::dg::MortarDataHolder<Dim>>;
      43             : };
      44             : 
      45             : /// History of the data on mortars, indexed by (Direction, ElementId) pairs, and
      46             : /// used by the linear multistep local time stepping code.
      47             : ///
      48             : /// The `Dim` is the volume dimension, not the face dimension.
      49             : template <size_t Dim>
      50           1 : struct MortarDataHistory : db::SimpleTag {
      51           0 :   using type =
      52             :       DirectionalIdMap<Dim, TimeSteppers::BoundaryHistory<
      53             :                                 ::evolution::dg::MortarData<Dim>,
      54             :                                 ::evolution::dg::MortarData<Dim>, DataVector>>;
      55             : };
      56             : 
      57             : /// Mesh on the mortars, indexed by (Direction, ElementId) pairs
      58             : ///
      59             : /// The `Dim` is the volume dimension, not the face dimension.
      60             : template <size_t Dim>
      61           1 : struct MortarMesh : db::SimpleTag {
      62           0 :   using type = DirectionalIdMap<Dim, Mesh<Dim - 1>>;
      63             : };
      64             : 
      65             : /// The ::evolution::dg::MortarInfo for each mortar
      66             : ///
      67             : /// The `Dim` is the volume dimension, not the face dimension.
      68             : template <size_t Dim>
      69           1 : struct MortarInfo : db::SimpleTag {
      70           0 :   using type = DirectionalIdMap<Dim, ::evolution::dg::MortarInfo<Dim>>;
      71             : };
      72             : 
      73             : /// The next temporal id at which to receive data on the specified mortar.
      74             : ///
      75             : /// The `Dim` is the volume dimension, not the face dimension.
      76             : template <size_t Dim>
      77           1 : struct MortarNextTemporalId : db::SimpleTag {
      78           0 :   using type = DirectionalIdMap<Dim, TimeStepId>;
      79             : };
      80             : 
      81             : /// \brief The BoundaryMessage received from the inbox
      82             : ///
      83             : /// We must store the `std::unique_ptr` in the DataBox so the memory persists in
      84             : /// case data was sent from another node
      85             : /// \tparam Dim The volume dimension, not the face dimension
      86             : template <size_t Dim>
      87           1 : struct BoundaryMessageFromInbox : db::SimpleTag {
      88           0 :   using type = DirectionalIdMap<Dim, std::unique_ptr<BoundaryMessage<Dim>>>;
      89             : };
      90             : }  // namespace evolution::dg::Tags

Generated by: LCOV version 1.14