Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <optional>
7 :
8 : #include "Parallel/AlgorithmExecution.hpp"
9 :
10 : /// \cond
11 : namespace tuples {
12 : template <typename... InboxTags>
13 : struct TaggedTuple;
14 : } // namespace tuples
15 : namespace Parallel {
16 : template <typename Metavariables>
17 : class GlobalCache;
18 : } // namespace Parallel
19 : /// \endcond
20 :
21 : namespace Parallel {
22 : namespace Actions {
23 :
24 : /*!
25 : * \ingroup ActionsGroup
26 : * \brief Terminate the algorithm to proceed to the next phase.
27 : */
28 1 : struct TerminatePhase {
29 : template <typename DataBox, typename... InboxTags, typename Metavariables,
30 : typename ArrayIndex, typename ActionList,
31 : typename ParallelComponent>
32 0 : static Parallel::iterable_action_return_t apply(
33 : DataBox& /*box*/, const tuples::TaggedTuple<InboxTags...>& /*inboxes*/,
34 : const Parallel::GlobalCache<Metavariables>& /*cache*/,
35 : const ArrayIndex& /*array_index*/,
36 : // NOLINTNEXTLINE(readability-avoid-const-params-in-decls)
37 : const ActionList /*meta*/,
38 : // NOLINTNEXTLINE(readability-avoid-const-params-in-decls)
39 : const ParallelComponent* const /*meta*/) {
40 : return {Parallel::AlgorithmExecution::Pause, std::nullopt};
41 : }
42 : };
43 :
44 : } // namespace Actions
45 : } // namespace Parallel
|