SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DiscontinuousGalerkin - InterpolatedBoundaryData.hpp Hit Total Coverage
Commit: 923cd4a8ea30f5a5589baa60b0a93e358ca9f8e8 Lines: 1 22 4.5 %
Date: 2025-11-07 19:37:56
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 <iosfwd>
       8             : #include <vector>
       9             : 
      10             : #include "DataStructures/DataVector.hpp"
      11             : #include "NumericalAlgorithms/Spectral/Mesh.hpp"
      12             : 
      13             : /// \cond
      14             : namespace PUP {
      15             : class er;
      16             : }  // namespace PUP
      17             : /// \endcond
      18             : 
      19             : namespace evolution::dg {
      20             : /// \brief Information sent by a non-conforming Element that interpolates its
      21             : /// boundary data to a subset of the points of the Element receiving this
      22             : ///
      23             : /// \details The following information is sent:
      24             : /// - the interpolated data (as a DataVector representing a type-erased
      25             : ///   Variables)
      26             : /// - the Mesh that was used to compute the target points of the boundary face
      27             : ///   of the receiving Element.  This is sent so that the receiving Element can
      28             : ///   check if the data was interpolated to the correct points.
      29             : /// - the offsets of the interpolated data with respect to the target Mesh
      30             : template <size_t VolumeDim>
      31           1 : class InterpolatedBoundaryData {
      32           0 :   struct Info {
      33           0 :     DataVector data{};
      34           0 :     Mesh<VolumeDim - 1> target_mesh{};
      35           0 :     std::vector<size_t> offsets{};
      36             :     // NOLINTNEXTLINE(google-runtime-references)
      37           0 :     void pup(PUP::er& p);
      38             :   };
      39             : 
      40             :  public:
      41           0 :   InterpolatedBoundaryData() = default;
      42           0 :   InterpolatedBoundaryData(const InterpolatedBoundaryData&) = default;
      43           0 :   InterpolatedBoundaryData(InterpolatedBoundaryData&&) = default;
      44           0 :   InterpolatedBoundaryData& operator=(const InterpolatedBoundaryData&) =
      45             :       default;
      46           0 :   InterpolatedBoundaryData& operator=(InterpolatedBoundaryData&&) = default;
      47           0 :   ~InterpolatedBoundaryData() = default;
      48             : 
      49           0 :   explicit InterpolatedBoundaryData(InterpolatedBoundaryData::Info info);
      50             : 
      51           0 :   const DataVector& boundary_data() const { return info_.data; }
      52           0 :   const Mesh<VolumeDim - 1>& target_mesh() const { return info_.target_mesh; }
      53           0 :   const std::vector<size_t>& offsets() const { return info_.offsets; }
      54             : 
      55             :   // NOLINTNEXTLINE(google-runtime-references)
      56           0 :   void pup(PUP::er& p);
      57             : 
      58             :  private:
      59           0 :   Info info_;
      60             : };
      61             : 
      62             : template <size_t VolumeDim>
      63           0 : bool operator==(const InterpolatedBoundaryData<VolumeDim>& lhs,
      64             :                 const InterpolatedBoundaryData<VolumeDim>& rhs);
      65             : 
      66             : template <size_t VolumeDim>
      67           0 : bool operator!=(const InterpolatedBoundaryData<VolumeDim>& lhs,
      68             :                 const InterpolatedBoundaryData<VolumeDim>& rhs);
      69             : 
      70             : template <size_t VolumeDim>
      71           0 : std::ostream& operator<<(std::ostream& os,
      72             :                          const InterpolatedBoundaryData<VolumeDim>& value);
      73             : }  // namespace evolution::dg

Generated by: LCOV version 1.14