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
|