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/ArrayCollection/StartPhaseOnNodegroup.hpp"
7 : #include "Parallel/Phase.hpp"
8 : #include "Parallel/PhaseDependentActionList.hpp"
9 : #include "Utilities/TMPL.hpp"
10 :
11 : namespace Parallel {
12 : namespace detail {
13 : template <typename OnePhaseActions>
14 : struct TransformPdalForNodegroup {
15 : using type = tmpl::conditional_t<
16 : OnePhaseActions::phase == Parallel::Phase::Initialization, tmpl::list<>,
17 : Parallel::PhaseActions<OnePhaseActions::phase,
18 : tmpl::list<Actions::StartPhaseOnNodegroup>>>;
19 : };
20 : } // namespace detail
21 :
22 : /// \brief Transforms the `PhaseDepActionList` (phase dependent action
23 : /// list/PDAL) from one used for a `evolution::DgElementArray` to that for
24 : /// `Parallel::DgElementCollection`
25 : template <typename PhaseDepActionList>
26 1 : using TransformPhaseDependentActionListForNodegroup =
27 : tmpl::flatten<tmpl::transform<PhaseDepActionList,
28 : detail::TransformPdalForNodegroup<tmpl::_1>>>;
29 : } // namespace Parallel
|