Line data Source code
1 : // *****************************************************************************
2 : /*!
3 : \file src/Inciter/transporter.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 Transporter
10 : \details Charm++ module interface file for Transporter
11 : */
12 : // *****************************************************************************
13 :
14 : module transporter {
15 :
16 : include "Types.hpp";
17 :
18 : extern module meshwriter;
19 :
20 : namespace inciter {
21 :
22 : chare [migratable] Transporter {
23 : entry Transporter();
24 : entry [reductiontarget] void load( std::size_t meshid,
25 : std::size_t nelem );
26 : entry [reductiontarget] void partitioned();
27 : entry [reductiontarget] void distributed( std::size_t meshid );
28 : entry [reductiontarget] void refinserted( std::size_t meshid,
29 : std::size_t error );
30 : entry [reductiontarget] void discinserted( std::size_t meshid );
31 : entry [reductiontarget] void disccreated( std::size_t summeshid,
32 : std::size_t npoin );
33 : entry [reductiontarget] void workinserted( std::size_t meshid );
34 : entry [reductiontarget] void queriedRef( std::size_t meshid );
35 : entry [reductiontarget] void respondedRef( std::size_t meshid );
36 : entry [reductiontarget] void compatibility( std::size_t meshid );
37 : entry [reductiontarget] void matched( std::size_t summeshid,
38 : std::size_t nextra,
39 : std::size_t nref,
40 : std::size_t nderef,
41 : std::size_t initial );
42 : entry [reductiontarget] void bndint( tk::real sx,
43 : tk::real sy,
44 : tk::real sz,
45 : tk::real cb,
46 : tk::real summeshid );
47 : entry [reductiontarget] void refined( std::size_t meshid,
48 : std::size_t nelem,
49 : std::size_t npoin );
50 : entry [reductiontarget] void resized( std::size_t meshid );
51 : entry [reductiontarget] void queried( std::size_t meshid );
52 : entry [reductiontarget] void responded( std::size_t meshid );
53 : entry [reductiontarget] void queriedPart( std::size_t meshid );
54 : entry [reductiontarget] void respondedPart( std::size_t meshid );
55 : entry [reductiontarget] void totalvol( tk::real v,
56 : tk::real initial,
57 : tk::real summeshid );
58 : entry [reductiontarget] void minstat( tk::real d0, tk::real d1,
59 : tk::real d2, tk::real d3, tk::real d4, tk::real d5, tk::real rmeshid );
60 : entry [reductiontarget] void maxstat( tk::real d0, tk::real d1,
61 : tk::real d2, tk::real d3, tk::real d4, tk::real d5, tk::real rmeshid );
62 : entry [reductiontarget] void sumstat( tk::real d0, tk::real d1,
63 : tk::real d2, tk::real d3, tk::real d4, tk::real d5, tk::real d6,
64 : tk::real d7, tk::real d8, tk::real summeshid );
65 : entry [reductiontarget] void pdfstat( CkReductionMsg* msg );
66 : entry [reductiontarget] void transfer_dt( tk::real dt );
67 : entry [reductiontarget] void boxvol( tk::real v, tk::real summeshid );
68 : entry [reductiontarget] void rhodiagnostics( CkReductionMsg* msg );
69 : entry [reductiontarget] void prediagnostics( CkReductionMsg* msg );
70 : entry [reductiontarget] void acdiagnostics( CkReductionMsg* msg );
71 255 : entry [reductiontarget] void integrals( CkReductionMsg* msg );
72 : entry void resume();
73 : entry [reductiontarget] void checkpoint( std::size_t finished,
74 : std::size_t meshid );
75 : entry [reductiontarget] void finish( std::size_t meshid );
76 :
77 0 : entry void pepartitioned();
78 : entry void pedistributed();
79 : entry void chcomm();
80 : entry void chmask();
81 : entry void chreordered();
82 : entry void chcreated();
83 :
84 : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/
85 : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger".
86 :
87 : entry void wait4stat() {
88 : forall [meshid] ( 0 : m_nelem.size(), 1 ) {
89 : when minstat_complete[meshid]( std::size_t _meshid ),
90 : maxstat_complete[meshid]( std::size_t _meshid ),
91 : sumstat_complete[meshid]( std::size_t _meshid ),
92 : pdfstat_complete[meshid]( std::size_t _meshid )
93 : serial "stat" { stat(); }
94 : }
95 : };
96 :
97 : entry void wait4part() {
98 : forall [meshid] ( 0 : m_nelem.size(), 1 ) {
99 : when part_complete[meshid]( std::size_t _meshid )
100 : serial "part" { partitioned(); }
101 : }
102 : };
103 :
104 : entry void minstat_complete( std::size_t _meshid );
105 : entry void maxstat_complete( std::size_t _meshid );
106 : entry void sumstat_complete( std::size_t _meshid );
107 : entry void pdfstat_complete( std::size_t _meshid );
108 : entry void part_complete( std::size_t _meshid );
109 : }
110 :
111 : } // inciter::
112 :
113 : }
|