Line data Source code
1 : // *****************************************************************************
2 : /*!
3 : \file src/Inciter/discretization.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 common stuff to discretizations
10 : \details Charm++ module interface file for common stuff to discretizations.
11 : \see Discretization.h and Discretization.C for more info.
12 : */
13 : // *****************************************************************************
14 :
15 : module discretization {
16 :
17 : extern module transporter;
18 : extern module meshwriter;
19 :
20 : include "UnsMesh.hpp";
21 :
22 : namespace inciter {
23 :
24 : array [1D] Discretization {
25 : entry Discretization(
26 : std::size_t meshid,
27 : const std::vector< CProxy_Discretization >& disc,
28 2576 : const CProxy_Transporter& transporter,
29 : const tk::CProxy_MeshWriter& meshwriter,
30 : const tk::UnsMesh::CoordMap& coordmap,
31 : const tk::UnsMesh::Chunk& el,
32 : const std::map< int, std::unordered_set< std::size_t > >& nodeCommMap,
33 : int nchare );
34 : initnode void registerReducers();
35 : entry void transfer_initialized();
36 : entry void transfer_from();
37 : entry [reductiontarget] void aggregateHoles( CkReductionMsg* msg );
38 : entry void holeComplete();
39 : entry void vol();
40 : entry void comvol( int c,
41 : const std::vector< std::size_t >& gid,
42 : const std::vector< tk::real >& nodevol );
43 : entry void stat( tk::real mesh_volume );
44 : entry void npoin( std::size_t n );
45 :
46 : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/
47 : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger".
48 :
49 : entry void wait4vol() {
50 : when ownvol_complete(), comvol_complete() serial "vol" { totalvol(); } }
51 :
52 : entry void ownvol_complete();
53 : entry void comvol_complete();
54 : }
55 :
56 : } // inciter::
57 :
58 : }
|