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/ArrayIndex.hpp" 7 : 8 : #include "Parallel/Algorithms/AlgorithmNodegroup.decl.h" 9 : 10 : namespace Parallel { 11 : namespace Algorithms { 12 : 13 : /*! 14 : * \ingroup ParallelGroup 15 : * \brief A struct that stores the charm++ types relevant for a particular 16 : * nodegroup component 17 : * 18 : * \details The type traits are: 19 : * - `cproxy`: the charm++ proxy. 20 : * See https://charm.readthedocs.io/en/latest/faq/manual.html#what-is-a-proxy 21 : * - `cbase`: the charm++ base class. See 22 : * https://charm.readthedocs.io/en/latest/charm++/manual.html#chare-objects 23 : * - `algorithm_type`: the chare type (`AlgorithmNodegroup`) for the nodegroup 24 : * component. 25 : * - `ckindex`: A charm++ chare index object. Useful for obtaining entry 26 : * method indices that are needed for creating callbacks. See 27 : * https://charm.readthedocs.io/en/latest/charm++/manual.html#creating-a-ckcallback-object 28 : * - `cproxy_section`: The charm++ section proxy class. See 29 : * https://charm.readthedocs.io/en/latest/charm++/manual.html?#sections-subsets-of-a-chare-array-group 30 : * - component_type: this object. Serves to allow checking the component type in 31 : * both source code and the testing framework. 32 : */ 33 1 : struct Nodegroup { 34 : template <typename ParallelComponent, 35 : typename SpectreArrayIndex> 36 0 : using cproxy = CProxy_AlgorithmNodegroup<ParallelComponent, 37 : SpectreArrayIndex>; 38 : 39 : template <typename ParallelComponent, 40 : typename SpectreArrayIndex> 41 0 : using cbase = CBase_AlgorithmNodegroup<ParallelComponent, 42 : SpectreArrayIndex>; 43 : 44 : template <typename ParallelComponent, 45 : typename SpectreArrayIndex> 46 0 : using algorithm_type = AlgorithmNodegroup<ParallelComponent, 47 : SpectreArrayIndex>; 48 : 49 : template <typename ParallelComponent, 50 : typename SpectreArrayIndex> 51 0 : using ckindex = CkIndex_AlgorithmNodegroup<ParallelComponent, 52 : SpectreArrayIndex>; 53 : 54 : template <typename ParallelComponent, typename SpectreArrayIndex> 55 0 : using cproxy_section = 56 : CProxySection_AlgorithmNodegroup<ParallelComponent, SpectreArrayIndex>; 57 : 58 0 : using component_type = Nodegroup; 59 : }; 60 : } // namespace Algorithms 61 : } // namespace Parallel