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-2025 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 std::vector< 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 : }
|