SpECTRE Documentation Coverage Report
Current view: top level - Parallel/ArrayCollection - DgElementCollection.hpp Hit Total Coverage
Commit: 1f2210958b4f38fdc0400907ee7c6d5af5111418 Lines: 10 12 83.3 %
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 <cstddef>
       7             : #include <memory>
       8             : 
       9             : #include "Parallel/Algorithms/AlgorithmNodegroupDeclarations.hpp"
      10             : #include "Parallel/ArrayCollection/CreateElementCollection.hpp"
      11             : #include "Parallel/ArrayCollection/DgElementArrayMember.hpp"
      12             : #include "Parallel/ArrayCollection/DgElementArrayMemberBase.hpp"
      13             : #include "Parallel/ArrayCollection/Tags/ElementCollection.hpp"
      14             : #include "Parallel/ArrayCollection/TransformPdalForNodegroup.hpp"
      15             : #include "Parallel/GlobalCache.hpp"
      16             : #include "Parallel/Local.hpp"
      17             : #include "Parallel/ParallelComponentHelpers.hpp"
      18             : #include "Parallel/Printf/Printf.hpp"
      19             : #include "ParallelAlgorithms/Actions/TerminatePhase.hpp"
      20             : #include "Utilities/Gsl.hpp"
      21             : #include "Utilities/TMPL.hpp"
      22             : 
      23             : namespace Parallel {
      24             : /*!
      25             :  * \brief A collection of DG elements on a node.
      26             :  *
      27             :  * The `PhaseDepActionList` is the PDAL that was used for the array
      28             :  * approach. Some actions will require updating to support nodegroups if they
      29             :  * haven't already been.
      30             :  */
      31             : template <size_t Dim, class Metavariables, class PhaseDepActionList>
      32           1 : struct DgElementCollection {
      33             :   /// \brief The `DgElementCollection` is currently a nodegroup.
      34             :   ///
      35             :   /// It should be possible to generalize this to work as a group too.
      36           1 :   using chare_type = Parallel::Algorithms::Nodegroup;
      37           0 :   static constexpr bool checkpoint_data = true;
      38             :   /// \brief The metavariables
      39           1 :   using metavariables = Metavariables;
      40             :   /// \brief The simple tags necessary from option parsing.
      41           1 :   using simple_tags_from_options = Parallel::get_simple_tags_from_options<
      42             :       Parallel::get_initialization_actions_list<PhaseDepActionList>>;
      43             :   /// \brief The type of the `Parallel::DgElementArrayMember` with all
      44             :   /// template parameters.
      45           1 :   using dg_element_array_member =
      46             :       Parallel::DgElementArrayMember<Dim, Metavariables, PhaseDepActionList,
      47             :                                      simple_tags_from_options>;
      48             :   /// \brief The tag `Parallel::Tags::ElementCollection` of this
      49             :   /// `DgElementCollection`
      50           1 :   using element_collection_tag =
      51             :       Parallel::Tags::ElementCollection<Dim, Metavariables, PhaseDepActionList,
      52             :                                         simple_tags_from_options>;
      53             : 
      54             :   /// \brief The phase dependent action lists.
      55             :   ///
      56             :   /// These are computed using
      57             :   /// `Parallel::TransformPhaseDependentActionListForNodegroup` from the
      58             :   /// `PhaseDepActionList` template parameter.
      59           1 :   using phase_dependent_action_list = tmpl::append<
      60             :       tmpl::list<Parallel::PhaseActions<
      61             :           Parallel::Phase::Initialization,
      62             :           tmpl::list<Actions::CreateElementCollection<Dim, Metavariables,
      63             :                                                       PhaseDepActionList,
      64             :                                                       simple_tags_from_options>,
      65             :                      Parallel::Actions::TerminatePhase>>>,
      66             :       TransformPhaseDependentActionListForNodegroup<PhaseDepActionList>>;
      67             : 
      68             :   /// @{
      69             :   /// \brief The tags for the global cache.
      70             :   ///
      71             :   /// These are computed from the `PhaseDepActionList` template parameter.
      72           1 :   using const_global_cache_tags = tmpl::remove_duplicates<
      73             :       typename Parallel::detail::get_const_global_cache_tags_from_pdal<
      74             :           PhaseDepActionList>::type>;
      75           1 :   using mutable_global_cache_tags =
      76             :       typename Parallel::detail::get_mutable_global_cache_tags_from_pdal<
      77             :           PhaseDepActionList>::type;
      78             :   /// @}
      79             : 
      80             :   /// \brief Starts the next phase of execution.
      81           1 :   static void execute_next_phase(
      82             :       const Parallel::Phase next_phase,
      83             :       Parallel::CProxy_GlobalCache<Metavariables>& global_cache) {
      84             :     Parallel::printf("%s\n", next_phase);
      85             :     auto& local_cache = *Parallel::local_branch(global_cache);
      86             :     Parallel::get_parallel_component<DgElementCollection>(local_cache)
      87             :         .start_phase(next_phase);
      88             :   }
      89             : };
      90             : }  // namespace Parallel

Generated by: LCOV version 1.14