Branch data 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 : : All rights reserved. See the LICENSE file for details. 8 : : \brief Charm++ module interface file for Transporter 9 : : \details Charm++ module interface file for Transporter 10 : : */ 11 : : // ***************************************************************************** 12 : : 13 : : module transporter { 14 : : 15 : : include "Types.hpp"; 16 : : 17 : : extern module meshwriter; 18 : : 19 : : namespace inciter { 20 : : 21 : : chare [migratable] Transporter { 22 : : entry Transporter(); 23 : : entry [reductiontarget] void load( std::size_t meshid, 24 : : std::size_t nelem ); 25 : : entry [reductiontarget] void partitioned( std::size_t meshid ); 26 : : entry [reductiontarget] void distributed( std::size_t meshid ); 27 : : entry [reductiontarget] void refinserted( std::size_t meshid, 28 : : std::size_t error ); 29 : : entry [reductiontarget] void discinserted( std::size_t meshid ); 30 : : entry [reductiontarget] void disccreated( std::size_t summeshid, 31 : : std::size_t npoin ); 32 : : entry [reductiontarget] void workinserted( std::size_t meshid ); 33 : : entry [reductiontarget] void queriedRef( std::size_t meshid ); 34 : : entry [reductiontarget] void respondedRef( std::size_t meshid ); 35 : : entry [reductiontarget] void compatibility( std::size_t meshid ); 36 : : entry [reductiontarget] void matched( std::size_t summeshid, 37 : : std::size_t nextra, 38 : : std::size_t nref, 39 : : std::size_t nderef, 40 : : std::size_t initial ); 41 : : entry [reductiontarget] void bndint( tk::real sx, 42 : : tk::real sy, 43 : : tk::real sz, 44 : : tk::real cb, 45 : : tk::real summeshid ); 46 : : entry [reductiontarget] void refined( std::size_t meshid, 47 : : std::size_t nelem, 48 : : std::size_t npoin ); 49 : : entry [reductiontarget] void resized( std::size_t meshid ); 50 : : entry [reductiontarget] void startEsup( 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 doneInsertingGhosts(std::size_t meshid); 54 : : entry [reductiontarget] void comfinal( std::size_t initial, 55 : : std::size_t summeshid ); 56 : : entry [reductiontarget] void totalvol( tk::real v, 57 : : tk::real initial, 58 : : tk::real summeshid ); 59 : : entry [reductiontarget] void minstat( tk::real d0, tk::real d1, 60 : : tk::real d2, tk::real rmeshid ); 61 : : entry [reductiontarget] void maxstat( tk::real d0, tk::real d1, 62 : : tk::real d2, tk::real rmeshid ); 63 : : entry [reductiontarget] void sumstat( tk::real d0, tk::real d1, 64 : : tk::real d2, tk::real d3, 65 : : tk::real d4, tk::real d5, 66 : : tk::real summeshid ); 67 : : entry [reductiontarget] void pdfstat( CkReductionMsg* msg ); 68 : : entry [reductiontarget] void boxvol( tk::real meshdata[n], int n ); 69 : : entry [reductiontarget] void solutionTransferred(); 70 : : entry [reductiontarget] void minDtAcrossMeshes( tk::real redndata[n], int n ); 71 : : entry [reductiontarget] void diagnostics( 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 : 189 : entry void pepartitioned(); 78 : : entry void pedistributed(); 79 : : entry void chbnd(); 80 : : entry void chcomm(); 81 : : entry void chmask(); 82 : : entry void chreordered(); 83 : : 84 : : entry void chcreated(); 85 : : entry void chbndface(); 86 : : entry void chcomfac(); 87 : : entry void chghost(); 88 : : entry void chadj(); 89 : : 90 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 91 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 92 : : 93 : : entry void wait4stat() { 94 : : forall [meshid] ( 0 : m_nelem.size(), 1 ) { 95 : : when minstat_complete[meshid]( std::size_t _meshid ), 96 : : maxstat_complete[meshid]( std::size_t _meshid ), 97 : : sumstat_complete[meshid]( std::size_t _meshid ), 98 : : pdfstat_complete[meshid]( std::size_t _meshid ) 99 : : serial "stat" { stat(); } 100 : : } 101 : : }; 102 : : 103 : : entry void minstat_complete( std::size_t _meshid ); 104 : : entry void maxstat_complete( std::size_t _meshid ); 105 : : entry void sumstat_complete( std::size_t _meshid ); 106 : : entry void pdfstat_complete( std::size_t _meshid ); 107 : : } 108 : : 109 : : } // inciter:: 110 : : 111 : : }