SpECTRE Documentation Coverage Report
Current view: top level - ParallelAlgorithms/Interpolation/Protocols - ComputeTargetPoints.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 25.0 % 8 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 <type_traits>
       7              : 
       8              : #include "DataStructures/DataBox/DataBox.hpp"
       9              : #include "DataStructures/Tensor/TypeAliases.hpp"
      10              : #include "Utilities/TMPL.hpp"
      11              : 
      12              : /// \cond
      13              : struct DataVector;
      14              : /// \endcond
      15              : 
      16            1 : namespace intrp::protocols {
      17              : /*!
      18              :  * \brief A protocol for the type alias `compute_target_points` found in an
      19              :  * InterpolationTargetTag.
      20              :  *
      21              :  * \details A struct conforming to the `ComputeTargetPoints` protocol must have
      22              :  *
      23              :  * - a type alias `is_sequential` that is either `std::true_type` or
      24              :  *   `std::false_type` which indicates if interpolations depend on previous
      25              :  *   interpolations' results. It is assumed in the interpolation framework that
      26              :  *   only horizon finds are sequential (e.y. anything that uses the
      27              :  *   `intrp::Interpolator` component is a sequential horizon find).
      28              :  *
      29              :  * - a type alias `frame` that denotes the frame the target points are computed
      30              :  *   in
      31              :  *
      32              :  * - a function `points` with signature matching the one in the example that
      33              :  *   will compute the points in the given `frame` (with or without the `const &`
      34              :  *   on the box argument).
      35              :  *
      36              :  * A struct that conforms to this protocol can optionally have any of these
      37              :  * members as well:
      38              :  *
      39              :  * - a type alias `simple_tags` that list simple tags to be added to the DataBox
      40              :  *   of the InterpolationTarget
      41              :  *
      42              :  * - a type alias `compute_tags` that list compute tags to be added to the
      43              :  *   DataBox of the InterpolationTarget
      44              :  *
      45              :  * - a type alias `const_global_cache_tags` with tags to be put in the
      46              :  *   GlobalCache
      47              :  *
      48              :  * - a function `initialize` with signature matching the one in the example that
      49              :  *   is run during the Initialization phase of the InterpolationTarget and can
      50              :  *   initialize any of the `simple_tags` added.
      51              :  *
      52              :  * Here is an example of a class that conforms to this protocols:
      53              :  *
      54              :  * \snippet Helpers/ParallelAlgorithms/Interpolation/Examples.hpp ComputeTargetPoints
      55              :  */
      56            1 : struct ComputeTargetPoints {
      57              :   template <typename ConformingType>
      58            0 :   struct test {
      59              :     struct DummyMetavariables;
      60            0 :     struct DummyTag : db::SimpleTag {
      61            0 :       using type = int;
      62              :     };
      63              : 
      64            0 :     using is_sequential = typename ConformingType::is_sequential;
      65              :     static_assert(std::is_same_v<is_sequential, std::true_type> or
      66              :                   std::is_same_v<is_sequential, std::false_type>);
      67              : 
      68            0 :     using frame = typename ConformingType::frame;
      69              :     // We don't check the initialize() function because it is optional
      70              :   };
      71              : };
      72              : }  // namespace intrp::protocols
        

Generated by: LCOV version 2.0-1