SpECTRE Documentation Coverage Report
Current view: top level - ParallelAlgorithms/Interpolation - PointInfoTag.hpp Hit Total Coverage
Commit: 8a30970c95b504394e26ac2f71f8d3dacf8a8e8f Lines: 3 6 50.0 %
Date: 2024-04-19 21:29:46
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 <optional>
       7             : #include <vector>
       8             : 
       9             : #include "DataStructures/DataBox/PrefixHelpers.hpp"
      10             : #include "DataStructures/IdPair.hpp"
      11             : #include "DataStructures/Tensor/TypeAliases.hpp"
      12             : #include "Domain/Structure/BlockId.hpp"
      13             : #include "Utilities/TaggedTuple.hpp"
      14             : 
      15             : namespace intrp {
      16             : namespace Vars {
      17             : /// PointInfoTag holds the points to be interpolated onto,
      18             : /// in whatever frame those points are to be held constant.
      19             : /// PointInfoTag is used only for interpolation points that are
      20             : /// time-independent in some frame, so that there is no `Interpolator`
      21             : /// ParallelComponent.
      22             : template <typename InterpolationTargetTag, size_t VolumeDim>
      23           1 : struct PointInfoTag {
      24           0 :   using type =
      25             :       tnsr::I<DataVector, VolumeDim,
      26             :               typename InterpolationTargetTag::compute_target_points::frame>;
      27             : };
      28             : }  // namespace Vars
      29             : 
      30             : namespace Tags {
      31             : 
      32             : namespace point_info_detail {
      33             : template <typename InterpolationTargetTag, typename Metavariables>
      34             : using WrappedPointInfoTag =
      35             :     Vars::PointInfoTag<InterpolationTargetTag, Metavariables::volume_dim>;
      36             : }  // namespace point_info_detail
      37             : 
      38             : /// Base tag for `InterpPointInfo` so we don't have to have the metavariables in
      39             : /// order to retrieve the tag
      40           1 : struct InterpPointInfoBase : db::BaseTag {};
      41             : 
      42             : /// The following tag is for the case in which interpolation
      43             : /// bypasses the `Interpolator` ParallelComponent.  In that case,
      44             : /// the `Element` must hold interpolation information in its `DataBox`.
      45             : ///
      46             : /// A particular `Vars::PointInfo` can be retrieved from this
      47             : /// `TaggedTuple` via a `Vars::PointInfoTag`.
      48             : template <typename Metavariables>
      49           1 : struct InterpPointInfo : db::SimpleTag, InterpPointInfoBase {
      50           0 :   using type = tuples::tagged_tuple_from_typelist<db::wrap_tags_in<
      51             :       point_info_detail::WrappedPointInfoTag,
      52             :       typename Metavariables::interpolation_target_tags, Metavariables>>;
      53             : };
      54             : 
      55             : }  // namespace Tags
      56             : }  // namespace intrp

Generated by: LCOV version 1.14