SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DiscontinuousGalerkin - InboxBoundaryData.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 44.4 % 9 4
Test Date: 2026-10-22 17:29:42
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 2.0-1