SpECTRE Documentation Coverage Report
Current view: top level - ParallelAlgorithms/Interpolation - InterpolationTarget.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 9.1 % 11 1
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              : 
       8              : #include "DataStructures/DataBox/DataBox.hpp"
       9              : #include "Parallel/Algorithms/AlgorithmSingleton.hpp"
      10              : #include "Parallel/GlobalCache.hpp"
      11              : #include "Parallel/Local.hpp"
      12              : #include "Parallel/ParallelComponentHelpers.hpp"
      13              : #include "Parallel/Phase.hpp"
      14              : #include "Parallel/PhaseDependentActionList.hpp"
      15              : #include "ParallelAlgorithms/Actions/TerminatePhase.hpp"
      16              : #include "ParallelAlgorithms/Interpolation/Actions/InterpolationTargetSendPoints.hpp"
      17              : #include "ParallelAlgorithms/Interpolation/Protocols/InterpolationTargetTag.hpp"
      18              : #include "Utilities/PrettyType.hpp"
      19              : #include "Utilities/ProtocolHelpers.hpp"
      20              : #include "Utilities/TMPL.hpp"
      21              : #include "Utilities/TypeTraits.hpp"
      22              : 
      23              : /// \cond
      24              : namespace intrp::Actions {
      25              : template <typename Metavariables, typename InterpolationTargetTag>
      26              : struct InitializeInterpolationTarget;
      27              : }  // namespace intrp::Actions
      28              : /// \endcond
      29              : 
      30              : namespace intrp {
      31              : 
      32              : /// \brief ParallelComponent representing a set of points to be interpolated
      33              : /// to and a function to call upon interpolation to those points.
      34              : ///
      35              : /// `InterpolationTargetTag` must conform to the
      36              : /// intrp::protocols::InterpolationTargetTag protocol.
      37              : ///
      38              : /// The metavariables must contain the following type alias:
      39              : /// - interpolation_target_tags:
      40              : ///      A `tmpl::list` of all `InterpolationTargetTag`s.
      41              : ///
      42              : /// `Metavariables` must contain the following static constexpr members:
      43              : /// - size_t volume_dim:
      44              : ///      The dimension of the Domain.
      45              : template <class Metavariables, typename InterpolationTargetTag>
      46            1 : struct InterpolationTarget {
      47            0 :   using interpolation_target_tag = InterpolationTargetTag;
      48              :   static_assert(
      49              :       tt::assert_conforms_to_v<interpolation_target_tag,
      50              :                                intrp::protocols::InterpolationTargetTag>);
      51            0 :   static std::string name() {
      52              :     return pretty_type::name<InterpolationTargetTag>();
      53              :   }
      54            0 :   using chare_type = ::Parallel::Algorithms::Singleton;
      55            0 :   static constexpr bool checkpoint_data = true;
      56            0 :   using const_global_cache_tags =
      57              :       Parallel::get_const_global_cache_tags_from_actions<
      58              :           tmpl::flatten<tmpl::list<
      59              :               typename InterpolationTargetTag::compute_target_points,
      60              :               typename InterpolationTargetTag::post_interpolation_callbacks>>>;
      61            0 :   using metavariables = Metavariables;
      62            0 :   using phase_dependent_action_list = tmpl::list<
      63              :       Parallel::PhaseActions<
      64              :           Parallel::Phase::Initialization,
      65              :           tmpl::list<intrp::Actions::InitializeInterpolationTarget<
      66              :                          Metavariables, InterpolationTargetTag>,
      67              :                      Parallel::Actions::TerminatePhase>>,
      68              :       Parallel::PhaseActions<
      69              :           Parallel::Phase::Register,
      70              :           tmpl::list<Actions::InterpolationTargetSendTimeIndepPointsToElements<
      71              :                          InterpolationTargetTag>,
      72              :                      Parallel::Actions::TerminatePhase>>,
      73              :       Parallel::PhaseActions<
      74              :           Parallel::Phase::Restart,
      75              :           tmpl::list<
      76              :               tmpl::conditional_t<
      77              :                   InterpolationTargetTag::compute_target_points::is_sequential::
      78              :                       value,
      79              :                   tmpl::list<>,
      80              :                   tmpl::list<
      81              :                       Actions::InterpolationTargetSendTimeIndepPointsToElements<
      82              :                           InterpolationTargetTag>>>,
      83              :               Parallel::Actions::TerminatePhase>>>;
      84              : 
      85            0 :   using simple_tags_from_options = Parallel::get_simple_tags_from_options<
      86              :       Parallel::get_initialization_actions_list<phase_dependent_action_list>>;
      87              : 
      88            0 :   static void execute_next_phase(
      89              :       Parallel::Phase next_phase,
      90              :       Parallel::CProxy_GlobalCache<metavariables>& global_cache) {
      91              :     auto& local_cache = *Parallel::local_branch(global_cache);
      92              :     Parallel::get_parallel_component<
      93              :         InterpolationTarget<metavariables, InterpolationTargetTag>>(local_cache)
      94              :         .start_phase(next_phase);
      95              :   };
      96              : };
      97              : }  // namespace intrp
        

Generated by: LCOV version 2.0-1