SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DiscontinuousGalerkin - InboxBoundaryData.hpp Hit Total Coverage
Commit: c428a3e2e0ca78fe0364ec1b0e0493c627d428d4 Lines: 4 9 44.4 %
Date: 2026-04-26 20:20:36
Legend: Lines: hit not hit

          Line data    Source code
       1           0 : // Distributed under the MIT License.
       2             : // See LICENSE.txt for details.
       3             : 
       4             : // This file is tested in Test_InboxTags.cpp
       5             : 
       6             : #pragma once
       7             : 
       8             : #include <boost/container/small_vector.hpp>
       9             : #include <cstddef>
      10             : #include <map>
      11             : #include <utility>
      12             : 
      13             : #include "Domain/Structure/DirectionalId.hpp"
      14             : #include "Domain/Structure/MaxNumberOfNeighbors.hpp"
      15             : #include "Evolution/DiscontinuousGalerkin/BoundaryData.hpp"
      16             : #include "Time/TimeStepId.hpp"
      17             : 
      18             : /// \cond
      19             : namespace PUP {
      20             : class er;
      21             : }  // namespace PUP
      22             : /// \endcond
      23             : 
      24             : namespace evolution::dg {
      25             : /// Class wrapping a map and mirroring the AtomicInboxBoundaryData
      26             : /// interface so that code accessing the inbox doesn't need to care
      27             : /// which implementation is in use.
      28             : template <size_t Dim>
      29           1 : struct InboxBoundaryData {
      30           0 :   using mapped_type = boost::container::small_vector<
      31             :       std::pair<DirectionalId<Dim>, evolution::dg::BoundaryData<Dim>>,
      32             :       maximum_number_of_neighbors(Dim)>;
      33             : 
      34           0 :   std::map<TimeStepId, mapped_type> messages;
      35             : 
      36             :   /// Number of messages needed to restart the algorithm.  This should
      37             :   /// be decremented whenever a new message is added to the inbox.
      38           1 :   int missing_messages = 0;
      39             : 
      40           0 :   bool empty() const;
      41             : 
      42             :   /// In AtomicInboxBoundaryData, this moves elements from the
      43             :   /// threadsafe structure to the `messages` field.  This class stores
      44             :   /// messages in the `messages` field directly, so this method just
      45             :   /// zeros the missing message count.
      46           1 :   void collect_messages();
      47             : 
      48             :   /// Set a lower bound on the number of messages required for the
      49             :   /// algorithm to make progress since the most recent call to
      50             :   /// `collect_messages`.  After that number of new messages have been
      51             :   /// received, `BoundaryCorrectionAndGhostCellsInbox` will restart
      52             :   /// the algorithm.
      53             :   ///
      54             :   /// \return whether enough messages have been received.
      55           1 :   bool set_missing_messages(size_t count);
      56             : 
      57           0 :   void pup(PUP::er& p);
      58             : };
      59             : }  // namespace evolution::dg

Generated by: LCOV version 1.14