SpECTRE Documentation Coverage Report
Current view: top level - Parallel/ArrayCollection - DgElementCollection.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 83.3 % 12 10
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 <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 2.0-1