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 : : 20 : : include "UnsMesh.hpp"; 21 : : include "PUPUtil.hpp"; 22 : : include "FaceData.hpp"; 23 : : 24 : : namespace inciter { 25 : : 26 : : array [1D] DG { 27 : : entry DG( const CProxy_Discretization& disc, 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 : : entry void resizeComm(); 32 : : entry void comfac( int fromch, const tk::UnsMesh::FaceSet& infaces ); 33 : : entry void comGhost( int fromch, const GhostData& ghost ); 34 : : entry void reqGhost(); 35 : : entry void nodeNeighSetup(); 36 : : entry void comEsup( int fromch, 37 : : const std::unordered_map< std::size_t, std::vector< std::size_t > >& 38 : : bndEsup, 39 : : const std::unordered_map< std::size_t, std::vector< tk::real > >& 40 : : nodeBoundaryCells ); 41 : : initnode void registerReducers(); 42 : : entry void setup(); 43 : : entry void box( tk::real v ); 44 : : entry void comlim( int fromch, 45 : : const std::vector< std::size_t >& tetid, 46 : : const std::vector< std::vector< tk::real > >& u, 47 : : const std::vector< std::vector< tk::real > >& prim, 48 : : const std::vector< std::size_t >& ndof ); 49 : : entry void comnodeout( const std::vector< std::size_t >& gid, 50 : : const std::vector< std::size_t >& nesup, 51 : : const std::vector< std::vector< tk::real > >& L ); 52 : : entry void comreco( int fromch, 53 : : const std::vector< std::size_t >& tetid, 54 : : const std::vector< std::vector< tk::real > >& u, 55 : : const std::vector< std::vector< tk::real > >& prim, 56 : : const std::vector< std::size_t >& ndof ); 57 : : entry void comsol( int fromch, 58 : 983 : std::size_t fromstage, 59 : : const std::vector< std::size_t >& tetid, 60 : : const std::vector< std::vector< tk::real > >& u, 61 : 983 : const std::vector< std::vector< tk::real > >& prim, 62 : : const std::vector< std::size_t >& ndof ); 63 : : entry void refine( const std::vector< tk::real >& l2ref ); 64 : 1026 : entry [reductiontarget] void solve( tk::real newdt ); 65 : : entry void resized(); 66 : 74580 : entry void lhs(); 67 : : entry void comnodalExtrema( const std::vector< std::size_t >& gid, 68 : : const std::vector< std::vector< tk::real > >& G1, 69 : 74580 : const std::vector< std::vector< tk::real > >& G2 ); 70 : : entry void step(); 71 : : entry void start(); 72 : 74580 : entry void next(); 73 : : entry void evalLB( int nrestart ); 74 : 74580 : 75 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 76 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 77 [ + - ]: 2764 : 78 : : entry void wait4fac() { 79 : : when ownfac_complete(), comfac_complete() serial "bndfaces" 80 : : { bndFaces(); } } 81 : : 82 : : entry void wait4ghost() { 83 : : when ownghost_complete(), reqghost_complete() serial "ghost" 84 : : { sendGhost(); } } 85 : : 86 : : entry void wait4esup() { 87 : : when ownesup_complete(), comesup_complete() serial "esup" 88 : : { adj(); } } 89 : : 90 : : entry void wait4sol() { 91 : : when ownsol_complete(), comsol_complete() serial "sol" { reco(); } } 92 : : 93 : : entry void wait4reco() { 94 : : when ownreco_complete(), comreco_complete() serial "reco" 95 : : { nodalExtrema(); } } 96 : : 97 : : entry void wait4nodalExtrema() { 98 : : when ownnodalExtrema_complete(), comnodalExtrema_complete() 99 : : serial "nodalExtrema" { lim(); } } 100 : : 101 : : entry void wait4lim() { 102 : : when ownlim_complete(), comlim_complete() serial "lim" { dt(); } } 103 : : 104 : : entry void wait4nod() { 105 : : when ownnod_complete( CkCallback c ), comnodeout_complete() 106 : : serial "nod" { writeFields( c ); } } 107 : : 108 : : entry void ownfac_complete(); 109 : : entry void comfac_complete(); 110 : : entry void ownghost_complete(); 111 : : entry void reqghost_complete(); 112 : : entry void ownesup_complete(); 113 : : entry void comesup_complete(); 114 : : entry void ownsol_complete(); 115 : : entry void comsol_complete(); 116 : : entry void ownreco_complete(); 117 : : entry void comreco_complete(); 118 : : entry void ownnodalExtrema_complete(); 119 : : entry void comnodalExtrema_complete(); 120 : : entry void ownlim_complete(); 121 : : entry void comlim_complete(); 122 : : entry void ownnod_complete( CkCallback c ); 123 : : entry void comnodeout_complete(); 124 : : } 125 : : 126 : : } // inciter:: 127 : : 128 : : }