SpECTRE Documentation Coverage Report
Current view: top level - Parallel/PhaseControl - InitializePhaseChangeDecisionData.hpp Hit Total Coverage
Commit: d0fc80462417e83e5cddfa1b9901bb4a9b6af4d6 Lines: 1 2 50.0 %
Date: 2024-03-29 00:33:31
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 "Parallel/GlobalCache.hpp"
       7             : #include "Parallel/ParallelComponentHelpers.hpp"
       8             : #include "Parallel/PhaseControl/PhaseControlTags.hpp"
       9             : #include "Utilities/Gsl.hpp"
      10             : #include "Utilities/TaggedTuple.hpp"
      11             : 
      12             : namespace PhaseControl {
      13             : /*!
      14             :  * \brief Initialize the Main chare's `phase_change_decision_data` for the
      15             :  * option-selected `PhaseChange`s.
      16             :  */
      17             : template <typename... DecisionTags, typename Metavariables>
      18           1 : void initialize_phase_change_decision_data(
      19             :     const gsl::not_null<tuples::TaggedTuple<DecisionTags...>*>
      20             :         phase_change_decision_data,
      21             :     const Parallel::GlobalCache<Metavariables>& cache) {
      22             :   tuples::get<TagsAndCombines::UsePhaseChangeArbitration>(
      23             :       *phase_change_decision_data) = false;
      24             :   if constexpr (Parallel::is_in_global_cache<Metavariables,
      25             :                                              Tags::PhaseChangeAndTriggers>) {
      26             :     const auto& phase_change_and_triggers =
      27             :         Parallel::get<Tags::PhaseChangeAndTriggers>(cache);
      28             :     for (const auto& trigger_and_phase_changes : phase_change_and_triggers) {
      29             :       for (const auto& phase_change : trigger_and_phase_changes.phase_changes) {
      30             :         phase_change->template initialize_phase_data<Metavariables>(
      31             :             phase_change_decision_data);
      32             :       }
      33             :     }
      34             :   }
      35             : }
      36             : }  // namespace PhaseControl

Generated by: LCOV version 1.14