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/AlgorithmArray.decl.h" 9 : 10 : namespace Parallel { 11 0 : namespace Algorithms { 12 : 13 : /*! 14 : * \ingroup ParallelGroup 15 : * \brief A struct that stores the charm++ types relevant for a particular array 16 : * 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 (`AlgorithmArray`) for the array 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 Array { 34 : template <typename ParallelComponent, 35 : typename SpectreArrayIndex> 36 0 : using cproxy = CProxy_AlgorithmArray<ParallelComponent, 37 : SpectreArrayIndex>; 38 : 39 : template <typename ParallelComponent, 40 : typename SpectreArrayIndex> 41 0 : using cbase = CBase_AlgorithmArray<ParallelComponent, 42 : SpectreArrayIndex>; 43 : 44 : template <typename ParallelComponent, 45 : typename SpectreArrayIndex> 46 0 : using algorithm_type = AlgorithmArray<ParallelComponent, 47 : SpectreArrayIndex>; 48 : 49 : template <typename ParallelComponent, 50 : typename SpectreArrayIndex> 51 0 : using ckindex = CkIndex_AlgorithmArray<ParallelComponent, 52 : SpectreArrayIndex>; 53 : 54 : template <typename ParallelComponent, typename SpectreArrayIndex> 55 0 : using cproxy_section = 56 : CProxySection_AlgorithmArray<ParallelComponent, SpectreArrayIndex>; 57 : 58 0 : using component_type = Array; 59 : }; 60 : } // namespace Algorithms 61 : } // namespace Parallel