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