Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/Inciter/chocg.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 for ChoCG
10 : : */
11 : : // *****************************************************************************
12 : :
13 : : module chocg {
14 : :
15 : : extern module transporter;
16 : : extern module discretization;
17 : : extern module conjugategradients;
18 : :
19 : : include "UnsMesh.hpp";
20 : : include "PUPUtil.hpp";
21 : :
22 : : namespace inciter {
23 : :
24 : : array [1D] ChoCG {
25 : : entry ChoCG( const CProxy_Discretization& disc,
26 : : const tk::CProxy_ConjugateGradients& cgpre,
27 : : const tk::CProxy_ConjugateGradients& cgmom,
28 : : const std::map< int, std::vector< std::size_t > >& bface,
29 : : const std::map< int, std::vector< std::size_t > >& bnode,
30 : : const std::vector< std::size_t >& triinpoel );
31 : : initnode void registerReducers();
32 : : entry void setup( tk::real v );
33 : : entry void start();
34 : : entry void evalres( const std::vector< tk::real >& l2ref );
35 : : entry [reductiontarget] void advance( tk::real newdt );
36 : : entry [reductiontarget] void rhs();
37 : : entry void comnorm( const std::unordered_map< int,
38 : : std::unordered_map< std::size_t, std::array< tk::real, 4 > > >& inbnd );
39 : : entry void comvgrad( const std::unordered_map< std::size_t,
40 : : std::vector< tk::real > >& ingrad );
41 : : entry void comflux( const std::unordered_map< std::size_t,
42 : : std::vector< tk::real > >& influx );
43 : : entry void comsgrad( const std::unordered_map< std::size_t,
44 : : std::vector< tk::real > >& ingrad );
45 : : entry void compgrad( const std::unordered_map< std::size_t,
46 : : std::vector< tk::real > >& ingrad );
47 : 417 : entry void comrhs( const std::unordered_map< std::size_t,
48 : : std::vector< tk::real > >& inrhs );
49 : 5472 : entry void comdiv( const std::unordered_map< std::size_t,
50 : : tk::real >& indiv );
51 : : entry void pinit();
52 [ + + ]: 3705 : entry void psolve();
53 : : entry void psolved();
54 : : entry void msolve();
55 : : entry void msolved();
56 : 385 : entry void feop();
57 : : entry void step();
58 : 5087 : entry void sgrad();
59 : : entry void diag();
60 : 5055 : entry void integrals();
61 : : entry void evalLB( int nrestart );
62 : 6930 :
63 : : entry void wait4int() {
64 : 4702 : when ownnorm_complete(), comnorm_complete() serial { merge(); } }
65 : :
66 : : entry void wait4div() {
67 : : when owndiv_complete(), comdiv_complete() serial { pinit(); } }
68 : :
69 : : entry void wait4vgrad() {
70 : : when ownvgrad_complete(), comvgrad_complete() serial {
71 : : if (Disc()->Initial()) flux(); else corr();
72 : : }
73 : : }
74 : :
75 : : entry void wait4flux() {
76 : : when ownflux_complete(), comflux_complete() serial { div( m_flux ); } }
77 : :
78 : : entry void wait4sgrad() {
79 : : when ownsgrad_complete(), comsgrad_complete() serial { psolved(); } }
80 : :
81 : : entry void wait4pgrad() {
82 : : when ownpgrad_complete(), compgrad_complete() serial { finpgrad(); } }
83 : :
84 : : entry void wait4rhs() {
85 : : when ownrhs_complete(), comrhs_complete() serial { solve(); } }
86 : :
87 : : entry void wait4step() {
88 : : when feop_complete(), resize_complete() serial { out(); } }
89 : :
90 : : entry void ownnorm_complete();
91 : : entry void comnorm_complete();
92 : : entry void owndiv_complete();
93 : : entry void comdiv_complete();
94 : : entry void ownsgrad_complete();
95 : : entry void comsgrad_complete();
96 : : entry void ownpgrad_complete();
97 : : entry void compgrad_complete();
98 : : entry void ownvgrad_complete();
99 : : entry void comvgrad_complete();
100 : : entry void ownflux_complete();
101 : : entry void comflux_complete();
102 : : entry void ownrhs_complete();
103 : : entry void comrhs_complete();
104 : : entry void feop_complete();
105 : : entry void resize_complete();
106 : : }
107 : :
108 : : } // inciter::
109 : :
110 : : }
|