Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/Inciter/sorter.ci
4 : : \copyright 2012-2015 J. Bakosi,
5 : : 2016-2018 Los Alamos National Security, LLC.,
6 : : 2019-2021 Triad National Security, LLC.,
7 : : 2022-2024 J. Bakosi
8 : : All rights reserved. See the LICENSE file for details.
9 : : \brief Charm++ module interface file for mesh sorter
10 : : \details Charm++ module interface file for mesh sorter.
11 : : \see Sorter.h and Sorter.C for more info.
12 : : */
13 : : // *****************************************************************************
14 : :
15 : : module sorter {
16 : :
17 : : include "Callback.hpp";
18 : :
19 : : extern module riecg;
20 : : extern module laxcg;
21 : : extern module zalcg;
22 : : extern module kozcg;
23 : : extern module chocg;
24 : : extern module lohcg;
25 : : extern module meshwriter;
26 : : extern module conjugategradients;
27 : :
28 : : namespace inciter {
29 : :
30 : : array [1D] Sorter {
31 : : entry Sorter( std::size_t meshid,
32 : : const CProxy_Transporter& transporter,
33 : : const tk::CProxy_MeshWriter& meshwriter,
34 : : const tk::SorterCallback& cbs,
35 : : const CProxy_Discretization& discretization,
36 : : const CProxy_RieCG& riecg,
37 : : const CProxy_LaxCG& laxcg,
38 : : const CProxy_ZalCG& zalcg,
39 : : const CProxy_KozCG& kozcg,
40 : : const CProxy_ChoCG& chocg,
41 : : const CProxy_LohCG& lohcg,
42 : : const tk::CProxy_ConjugateGradients& cgpre,
43 : : const tk::CProxy_ConjugateGradients& cgmom,
44 : : CkCallback reorderRefiner,
45 : : const std::vector< std::size_t >& ginpoel,
46 : : const tk::UnsMesh::CoordMap& coordmap,
47 : : const tk::UnsMesh::Chunk& el,
48 : : const std::map< int, std::vector< std::size_t > >& bface,
49 : : const std::vector< std::size_t >& triinpoel,
50 : : const std::map< int, std::vector< std::size_t > >& bnode,
51 : 20 : int nchare );
52 : : entry void setup( std::size_t npoin );
53 : : entry void query( int fromch,
54 : : const std::unordered_set< std::size_t >& bnd );
55 : : entry void recvquery();
56 : : entry void response();
57 : : entry void bnd( int fromch,
58 : : const std::map< int, std::unordered_set< std::size_t > >&
59 : : nodeCommMap );
60 : : entry void recvbnd();
61 : : entry void start();
62 : : entry void offset( int c, std::size_t u );
63 : : entry void request( int c, const std::unordered_set< std::size_t >& nd );
64 : : entry void neworder( const std::unordered_map< std::size_t,
65 : : std::tuple< std::size_t, tk::UnsMesh::Coord > >& nodes );
66 : : entry void createWorkers();
67 : :
68 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/
69 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger".
70 : :
71 : : entry void wait4prep() {
72 : : when reorderowned_complete(), nodes_requested_complete()
73 : : serial "prepare" { prepare(); }
74 : : };
75 : :
76 : : entry void reorderowned_complete();
77 : : entry void nodes_requested_complete();
78 : : };
79 : :
80 : : } // inciter::
81 : :
82 : : }
|