Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/Inciter/dg.ci
4 : : \copyright 2012-2015 J. Bakosi,
5 : : 2016-2018 Los Alamos National Security, LLC.,
6 : : 2019-2021 Triad National Security, LLC.
7 : : All rights reserved. See the LICENSE file for details.
8 : : \brief Charm++ module interface file for the discontinuous Galerkin scheme
9 : : \details Charm++ module interface file for the discontinuous Galerking
10 : : scheme.
11 : : \see DG.h and DG.C for more info.
12 : : */
13 : : // *****************************************************************************
14 : :
15 : : module dg {
16 : :
17 : : extern module transporter;
18 : : extern module discretization;
19 : : extern module ghosts;
20 : :
21 : : include "UnsMesh.hpp";
22 : : include "PUPUtil.hpp";
23 : : include "FaceData.hpp";
24 : :
25 : : namespace inciter {
26 : :
27 : : array [1D] DG {
28 : : entry DG( const CProxy_Discretization& disc,
29 : : const CProxy_Ghosts& ghostsproxy,
30 : : const std::map< int, std::vector< std::size_t > >& bface,
31 : : const std::map< int, std::vector< std::size_t > >& /* bnode */,
32 : : const std::vector< std::size_t >& triinpoel );
33 : : initnode void registerReducers();
34 : : entry void resizeSolVectors();
35 : : entry void setup();
36 : : entry void box( tk::real v, const std::vector< tk::real >& blkvol );
37 : : entry void comlim( int fromch,
38 : : const std::vector< std::size_t >& tetid,
39 : : const std::vector< std::vector< tk::real > >& u,
40 : : const std::vector< std::vector< tk::real > >& prim );
41 : : entry void comnodeout( const std::vector< std::size_t >& gid,
42 : : const std::vector< std::size_t >& nesup,
43 : : const std::vector< std::vector< tk::real > >& Lu,
44 : : const std::vector< std::vector< tk::real > >& Lp );
45 : : entry void comrefine( int fromch,
46 : : const std::vector< std::size_t >& tetid,
47 : : const std::vector< std::size_t >& ndof );
48 : : entry void comsmooth( int fromch,
49 : : const std::vector< std::size_t >& tetid,
50 : : const std::vector< std::size_t >& ndof );
51 : : entry void comreco( int fromch,
52 : : const std::vector< std::size_t >& tetid,
53 : : const std::vector< std::vector< tk::real > >& u,
54 : : const std::vector< std::vector< tk::real > >& prim );
55 : : entry void comsol( int fromch,
56 : : std::size_t fromstage,
57 : : const std::vector< std::size_t >& tetid,
58 : 65205 : const std::vector< std::vector< tk::real > >& u,
59 : : const std::vector< std::vector< tk::real > >& prim,
60 : : const std::vector< std::size_t >& interface,
61 : 65205 : const std::vector< std::size_t >& ndof );
62 : : entry void refine( const std::vector< tk::real >& l2ref );
63 : : entry [reductiontarget] void solve( tk::real newdt );
64 : 65205 : entry void resized();
65 : : entry void transferSol();
66 : : entry void advance( tk::real newdt, tk::real );
67 : : entry void lhs();
68 : 65205 : entry void comnodalExtrema( const std::vector< std::size_t >& gid,
69 : : const std::vector< std::vector< tk::real > >& G1,
70 : : const std::vector< std::vector< tk::real > >& G2 );
71 : 65205 : entry void step();
72 : : entry void start();
73 : 65205 : entry void next();
74 : : entry void evalLB( int nrestart );
75 : :
76 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/
77 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger".
78 [ + - ][ - + ]: 2022 :
79 : : entry void wait4sol() {
80 : : when ownsol_complete(), comsol_complete() serial "sol" { refine(); }
81 : : }
82 : :
83 : : entry void wait4refine() {
84 : : when ownrefine_complete(), comrefine_complete() serial "refine" { smooth(); }
85 : : }
86 : :
87 : : entry void wait4smooth() {
88 : : when ownsmooth_complete(), comsmooth_complete() serial "smooth" { reco(); }
89 : : }
90 : :
91 : : entry void wait4reco() {
92 : : when ownreco_complete(), comreco_complete() serial "reco"
93 : : { nodalExtrema(); } }
94 : :
95 : : entry void wait4nodalExtrema() {
96 : : when ownnodalExtrema_complete(), comnodalExtrema_complete()
97 : : serial "nodalExtrema" { lim(); } }
98 : :
99 : : entry void wait4lim() {
100 : : when ownlim_complete(), comlim_complete() serial "lim" { dt(); } }
101 : :
102 : : entry void wait4nod() {
103 : : when ownnod_complete( CkCallback c,
104 : : const std::unordered_map< std::size_t, std::size_t >& addedTets ),
105 : : comnodeout_complete()
106 : : serial "nod" { writeFields( c, addedTets ); } }
107 : :
108 : : entry void ownsol_complete();
109 : : entry void comsol_complete();
110 : : entry void ownrefine_complete();
111 : : entry void comrefine_complete();
112 : : entry void ownsmooth_complete();
113 : : entry void comsmooth_complete();
114 : : entry void ownreco_complete();
115 : : entry void comreco_complete();
116 : : entry void ownnodalExtrema_complete();
117 : : entry void comnodalExtrema_complete();
118 : : entry void ownlim_complete();
119 : : entry void comlim_complete();
120 : : entry void ownnod_complete( CkCallback c, const std::unordered_map< std::size_t, std::size_t >& addedTets );
121 : : entry void comnodeout_complete();
122 : : }
123 : :
124 : : } // inciter::
125 : :
126 : : }
|