SpECTRE Documentation Coverage Report
Current view: top level - IO/Observer - ObserverComponent.hpp Hit Total Coverage
Commit: 1f2210958b4f38fdc0400907ee7c6d5af5111418 Lines: 2 16 12.5 %
Date: 2025-12-05 05:03: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 "IO/Observer/Initialize.hpp"
       7             : #include "IO/Observer/Tags.hpp"
       8             : #include "Parallel/Algorithms/AlgorithmGroup.hpp"
       9             : #include "Parallel/Algorithms/AlgorithmNodegroup.hpp"
      10             : #include "Parallel/ArrayComponentId.hpp"
      11             : #include "Parallel/GlobalCache.hpp"
      12             : #include "Parallel/ParallelComponentHelpers.hpp"
      13             : #include "Parallel/Phase.hpp"
      14             : #include "Parallel/PhaseDependentActionList.hpp"
      15             : #include "Parallel/Tags/InputSource.hpp"
      16             : #include "ParallelAlgorithms/Actions/TerminatePhase.hpp"
      17             : #include "Utilities/TMPL.hpp"
      18             : 
      19             : namespace observers {
      20             : /*!
      21             :  * \ingroup ObserversGroup
      22             :  * \brief The group parallel component that is responsible for reducing data
      23             :  * to be observed.
      24             :  *
      25             :  * Once the data from all elements on the processing element (usually a core)
      26             :  * has been collected, it is copied (not sent over the network) to the local
      27             :  * nodegroup parallel component, `ObserverWriter`, for writing to disk.
      28             :  */
      29             : template <class Metavariables>
      30           1 : struct Observer {
      31           0 :   using chare_type = Parallel::Algorithms::Group;
      32           0 :   static constexpr bool checkpoint_data = false;
      33           0 :   using metavariables = Metavariables;
      34           0 :   using phase_dependent_action_list = tmpl::list<
      35             :       Parallel::PhaseActions<Parallel::Phase::Initialization,
      36             :                              tmpl::list<Actions::Initialize<Metavariables>,
      37             :                                         Parallel::Actions::TerminatePhase>>>;
      38           0 :   using simple_tags_from_options = Parallel::get_simple_tags_from_options<
      39             :       Parallel::get_initialization_actions_list<phase_dependent_action_list>>;
      40             : 
      41           0 :   static void execute_next_phase(
      42             :       const Parallel::Phase /*next_phase*/,
      43             :       Parallel::CProxy_GlobalCache<Metavariables>& /*global_cache*/) {}
      44             : };
      45             : 
      46             : /*!
      47             :  * \ingroup ObserversGroup
      48             :  * \brief The nodegroup parallel component that is responsible for writing data
      49             :  * to disk.
      50             :  */
      51             : template <class Metavariables>
      52           1 : struct ObserverWriter {
      53           0 :   using chare_type = Parallel::Algorithms::Nodegroup;
      54           0 :   static constexpr bool checkpoint_data = false;
      55           0 :   using const_global_cache_tags =
      56             :       tmpl::list<Tags::ReductionFileName, Tags::VolumeFileName,
      57             :                  ::Parallel::Tags::InputSource>;
      58           0 :   using metavariables = Metavariables;
      59           0 :   using phase_dependent_action_list = tmpl::list<Parallel::PhaseActions<
      60             :       Parallel::Phase::Initialization,
      61             :       tmpl::list<Actions::InitializeWriter<Metavariables>,
      62             :                  Parallel::Actions::TerminatePhase>>>;
      63           0 :   using simple_tags_from_options = Parallel::get_simple_tags_from_options<
      64             :       Parallel::get_initialization_actions_list<phase_dependent_action_list>>;
      65             : 
      66           0 :   static void execute_next_phase(
      67             :       const Parallel::Phase /*next_phase*/,
      68             :       Parallel::CProxy_GlobalCache<Metavariables>& /*global_cache*/) {}
      69             : };
      70             : }  // namespace observers

Generated by: LCOV version 1.14