SpECTRE Documentation Coverage Report
Current view: top level - ParallelAlgorithms/ApparentHorizonFinder - Initialization.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 <optional>
       7              : 
       8              : #include "DataStructures/LinkedMessageId.hpp"
       9              : #include "IO/Logging/Verbosity.hpp"
      10              : #include "Parallel/GlobalCache.hpp"
      11              : #include "Parallel/ParallelComponentHelpers.hpp"
      12              : #include "ParallelAlgorithms/ApparentHorizonFinder/FastFlow.hpp"
      13              : #include "ParallelAlgorithms/ApparentHorizonFinder/OptionTags.hpp"
      14              : #include "ParallelAlgorithms/ApparentHorizonFinder/Tags.hpp"
      15              : #include "Utilities/Gsl.hpp"
      16              : #include "Utilities/TMPL.hpp"
      17              : 
      18              : namespace ah {
      19              : /*!
      20              :  * \brief Initialize items related to the horizon finder
      21              :  *
      22              :  * GlobalCache:
      23              :  * - Uses:
      24              :  *   - `ah::Tags::ApparentHorizonOptions`
      25              :  *   - `ah::Tags::BlocksForHorizonFind`
      26              :  *   - `ah::Tags::LMax`
      27              :  *
      28              :  * DataBox:
      29              :  * - Uses: Nothing
      30              :  * - Adds:
      31              :  *   - `ah::Tags::Verbosity`
      32              :  *   - `ah::Tags::FastFlow`
      33              :  *   - `ah::Tags::CurrentTime`
      34              :  *   - `ah::Tags::PendingTimes`
      35              :  *   - `ah::Tags::CompletedTimes`
      36              :  *   - `ah::Tags::Storage`
      37              :  *   - `ah::Tags::PreviousSurfaces`
      38              :  *   - `ah::Tags::Strahlkorper`
      39              :  *   - `ah::Tags::TimeDerivStrahlkorper`
      40              :  *   - `ah::Tags::Dependency`
      41              :  *   - `::Tags::Variables<ah::vars_to_interpolate_to_target>`
      42              :  *   - `ah::Tags::CurrentResolutionL`
      43              :  * - Modifies:
      44              :  *   - `ah::Tags::Verbosity`
      45              :  *   - `ah::Tags::FastFlow`
      46              :  *   - `ah::Tags::CurrentTime`
      47              :  */
      48              : template <typename HorizonMetavars>
      49            1 : struct Initialize {
      50            0 :   using Fr = typename HorizonMetavars::frame;
      51              : 
      52            0 :   using simple_tags_from_options = tmpl::list<>;
      53              : 
      54            0 :   using simple_tags = tmpl::append<
      55              :       tmpl::list<Tags::CurrentResolutionL, Tags::Verbosity, Tags::FastFlow,
      56              :                  Tags::CurrentTime, Tags::PendingTimes, Tags::CompletedTimes,
      57              :                  Tags::Storage<Fr>, Tags::BlockSearchOrder,
      58              :                  Tags::PreviousSurfaces<Fr>, ylm::Tags::Strahlkorper<Fr>,
      59              :                  ylm::Tags::TimeDerivStrahlkorper<Fr>, ah::Tags::Dependency,
      60              :                  ::Tags::Variables<ah::vars_to_interpolate_to_target<3, Fr>>>,
      61              :       tmpl::conditional_t<
      62              :           std::is_same_v<Fr, Frame::Inertial>, tmpl::list<>,
      63              :           tmpl::list<ylm::Tags::CartesianCoords<Frame::Inertial>>>>;
      64              : 
      65            0 :   using const_global_cache_tags =
      66              :       tmpl::remove_duplicates<tmpl::flatten<tmpl::append<
      67              :           tmpl::list<Tags::ApparentHorizonOptions<HorizonMetavars>,
      68              :                      Tags::BlocksForHorizonFind, Tags::LMax>,
      69              :           Parallel::get_const_global_cache_tags_from_actions<tmpl::flatten<
      70              :               tmpl::list<typename HorizonMetavars::horizon_find_callbacks,
      71              :                          typename HorizonMetavars::
      72              :                              horizon_find_failure_callbacks>>>>>>;
      73              : 
      74            0 :   using mutable_global_cache_tags =
      75              :       tmpl::list<Tags::PreviousSurface<HorizonMetavars>>;
      76              : 
      77            0 :   using compute_tags = ah::compute_items_on_target<3, Fr>;
      78              : 
      79            0 :   using return_tags = tmpl::list<Tags::CurrentResolutionL, Tags::Verbosity,
      80              :                                  Tags::FastFlow, Tags::CurrentTime>;
      81              : 
      82            0 :   using argument_tags =
      83              :       tmpl::list<Tags::ApparentHorizonOptions<HorizonMetavars>>;
      84              : 
      85            0 :   static void apply(
      86              :       const gsl::not_null<std::optional<size_t>*> current_resolution_l,
      87              :       const gsl::not_null<::Verbosity*> verbosity,
      88              :       const gsl::not_null<::FastFlow*> fast_flow,
      89              :       const gsl::not_null<std::optional<LinkedMessageId<double>>*> current_time,
      90              :       const HorizonOptions<Fr>& options) {
      91              :     (*verbosity) = options.verbosity;
      92              :     (*fast_flow) = options.fast_flow;
      93              :     current_time->reset();
      94              :     current_resolution_l->reset();
      95              :   }
      96              : };
      97              : }  // namespace ah
        

Generated by: LCOV version 2.0-1