SpECTRE Documentation Coverage Report
Current view: top level - ParallelAlgorithms/Interpolation - Tags.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 38.1 % 21 8
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 <cstddef>
       7              : #include <deque>
       8              : #include <optional>
       9              : #include <string>
      10              : #include <type_traits>
      11              : #include <unordered_map>
      12              : #include <unordered_set>
      13              : 
      14              : #include "DataStructures/DataBox/PrefixHelpers.hpp"
      15              : #include "DataStructures/DataBox/Tag.hpp"
      16              : #include "DataStructures/TaggedTuple.hpp"
      17              : #include "DataStructures/Variables.hpp"
      18              : #include "IO/Logging/Tags.hpp"
      19              : #include "IO/Logging/Verbosity.hpp"
      20              : #include "NumericalAlgorithms/Spectral/Mesh.hpp"
      21              : #include "Options/String.hpp"
      22              : 
      23              : /// \cond
      24              : template <size_t VolumeDim>
      25              : class ElementId;
      26              : /// \endcond
      27              : 
      28              : namespace intrp {
      29              : 
      30            0 : namespace OptionTags {
      31              : /*!
      32              :  * \ingroup OptionGroupsGroup
      33              :  * \brief Groups option tags for InterpolationTargets.
      34              :  */
      35            1 : struct InterpolationTargets {
      36            0 :   static constexpr Options::String help{"Options for interpolation targets"};
      37              : };
      38              : 
      39              : /*!
      40              :  * \ingroup OptionGroupsGroup
      41              :  * \brief Groups option tags for the Interpolator.
      42              :  */
      43            1 : struct Interpolator {
      44            0 :   static constexpr Options::String help{
      45              :       "Options related to the Interpolator parallel component"};
      46              : };
      47              : }  // namespace OptionTags
      48              : 
      49              : /// Tags for items held in the `DataBox` of `InterpolationTarget` or
      50              : /// `Interpolator`.
      51              : namespace Tags {
      52              : /// Tag that determines the verbosity of output from the interpolation target
      53            1 : struct Verbosity : db::SimpleTag {
      54            0 :   using type = ::Verbosity;
      55              : 
      56            0 :   using option_tags =
      57              :       tmpl::list<logging::OptionTags::Verbosity<OptionTags::Interpolator>>;
      58            0 :   static constexpr bool pass_metavariables = false;
      59            0 :   static ::Verbosity create_from_options(const ::Verbosity& verbosity) {
      60              :     return verbosity;
      61              :   }
      62              : };
      63              : 
      64              : /// Keeps track of which points have been filled with interpolated data.
      65              : template <typename TemporalId>
      66            1 : struct IndicesOfFilledInterpPoints : db::SimpleTag {
      67            0 :   using type = std::unordered_map<TemporalId, std::unordered_set<size_t>>;
      68              : };
      69              : 
      70              : /// Keeps track of points that cannot be filled with interpolated data.
      71              : ///
      72              : /// The InterpolationTarget can decide what to do with these points.
      73              : /// In most cases the correct action is to throw an error, but in other
      74              : /// cases one might wish to fill these points with a default value or
      75              : /// take some other action.
      76              : template <typename TemporalId>
      77            1 : struct IndicesOfInvalidInterpPoints : db::SimpleTag {
      78            0 :   using type = std::unordered_map<TemporalId, std::unordered_set<size_t>>;
      79              : };
      80              : 
      81              : /// `temporal_id`s on which to interpolate.
      82              : ///
      83              : /// \note This tag is only used in non-sequential targets
      84              : template <typename TemporalId>
      85            1 : struct TemporalIds : db::SimpleTag {
      86            0 :   using type = std::unordered_set<TemporalId>;
      87              : };
      88              : 
      89              : /// `temporal_id`s that we have already interpolated onto.
      90              : ///  This is used to prevent problems with multiple late calls.
      91              : template <typename TemporalId>
      92            1 : struct CompletedTemporalIds : db::SimpleTag {
      93            0 :   using type = std::deque<TemporalId>;
      94              : };
      95              : 
      96              : /// Holds interpolated variables on an InterpolationTarget.
      97              : template <typename InterpolationTargetTag, typename TemporalId>
      98            1 : struct InterpolatedVars : db::SimpleTag {
      99            0 :   using type = std::unordered_map<
     100              :       TemporalId,
     101              :       Variables<
     102              :           typename InterpolationTargetTag::vars_to_interpolate_to_target>>;
     103              : };
     104              : }  // namespace Tags
     105              : }  // namespace intrp
        

Generated by: LCOV version 2.0-1