SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/Cce/InterfaceManagers - GhInterfaceManager.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 20.0 % 10 2
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              : #pragma once
       5              : 
       6              : #include <memory>
       7              : #include <optional>
       8              : #include <tuple>
       9              : 
      10              : #include "DataStructures/Tensor/Tensor.hpp"
      11              : #include "DataStructures/Tensor/TypeAliases.hpp"
      12              : #include "DataStructures/Variables.hpp"
      13              : #include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp"
      14              : #include "Options/String.hpp"
      15              : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
      16              : #include "Time/TimeStepId.hpp"
      17              : #include "Utilities/Serialization/CharmPupable.hpp"
      18              : 
      19              : namespace Cce {
      20              : /// \brief Code for interfacing between the characteristic and Cachy systems.
      21            1 : namespace InterfaceManagers {
      22              : 
      23              : /// \cond
      24              : class GhLocalTimeStepping;
      25              : class GhLockstep;
      26              : /// \endcond
      27              : 
      28              : /*!
      29              :  * \brief Abstract base class for storage and retrieval of generalized harmonic
      30              :  * quantities communicated from a Cauchy simulation to the Cce system.
      31              :  *
      32              :  * \details The functions that are required to be overriden in the derived
      33              :  * classes are:
      34              :  * - `GhInterfaceManager::get_clone()`: should return a
      35              :  * `std::unique_ptr<GhInterfaceManager>` with cloned state.
      36              :  * - `GhInterfaceManager::insert_gh_data()`: should store the portions
      37              :  * of the provided generalized harmonic data that are required to provide useful
      38              :  * boundary values for the CCE evolution at requested timesteps.
      39              :  * - `GhInterfaceManager::request_gh_data()`: should register requests
      40              :  * from the CCE evolution for boundary data.
      41              :  * - `GhInterfaceManager::retrieve_and_remove_first_ready_gh_data()`:
      42              :  * should return a `std::optional<std::tuple<TimeStepId,
      43              :  * tnsr::aa<DataVector, 3>, tnsr::iaa<DataVector, 3>, tnsr::aa<DataVector, 3>>>`
      44              :  * containing the boundary data associated with the oldest requested timestep if
      45              :  * enough data has been supplied via `insert_gh_data()` to determine the
      46              :  * boundary data. Otherwise, return a `std::nullopt` to indicate that the CCE
      47              :  * system must continue waiting for generalized harmonic input.
      48              :  * - `GhInterfaceManager::number_of_pending_requests()`: should return
      49              :  * the number of requests that have been registered to the class that do not yet
      50              :  * been retrieved via `retrieve_and_remove_first_ready_gh_data()`.
      51              :  * - `GhInterfaceManager::number_of_gh_times()`: should return the
      52              :  * number of time steps sent to `insert_gh_data()` that have not yet been
      53              :  * retrieved via `retrieve_and_remove_first_ready_gh_data()`.
      54              :  */
      55            1 : class GhInterfaceManager : public PUP::able {
      56              :  public:
      57            0 :   using gh_variables = Variables<
      58              :       tmpl::list<gr::Tags::SpacetimeMetric<DataVector, 3>,
      59              :                  gh::Tags::Pi<DataVector, 3>, gh::Tags::Phi<DataVector, 3>>>;
      60              : 
      61            0 :   WRAPPED_PUPable_abstract(GhInterfaceManager);  // NOLINT
      62              : 
      63            0 :   virtual std::unique_ptr<GhInterfaceManager> get_clone() const = 0;
      64              : 
      65            0 :   virtual void request_gh_data(const TimeStepId&) = 0;
      66              : 
      67            0 :   virtual auto retrieve_and_remove_first_ready_gh_data()
      68              :       -> std::optional<std::tuple<TimeStepId, gh_variables>> = 0;
      69              : 
      70            0 :   virtual size_t number_of_pending_requests() const = 0;
      71              : 
      72            0 :   virtual size_t number_of_gh_times() const = 0;
      73              : };
      74              : 
      75              : }  // namespace InterfaceManagers
      76              : }  // namespace Cce
        

Generated by: LCOV version 2.0-1