Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/Inciter/ghosts.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 for generating Ghost data structures 9 : : \details Charm++ module interface file for asynchronous generation of 10 : : Ghost data structures. 11 : : \see Ghosts.[ch]pp for more info. 12 : : */ 13 : : // ***************************************************************************** 14 : : 15 : : module ghosts { 16 : : 17 : : extern module discretization; 18 : : 19 : : include "FaceData.hpp"; 20 : : 21 : : namespace inciter { 22 : : 23 : : array [1D] Ghosts { 24 : 1104 : entry Ghosts( const CProxy_Discretization& disc, 25 : : const std::map< int, std::vector< std::size_t > >& bface, 26 : : const std::vector< std::size_t >& triinpoel, 27 : 1104 : std::size_t nunk, 28 : : CkCallback cbDone ); 29 : : 30 : 1143 : entry void startCommSetup(); 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 : : 42 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 43 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 44 : : 45 : : entry void wait4fac() { 46 : : when ownfac_complete(), comfac_complete() serial "bndfaces" 47 : : { bndFaces(); } } 48 : : 49 : : entry void wait4ghost() { 50 : : when ownghost_complete(), reqghost_complete() serial "ghost" 51 : : { sendGhost(); } } 52 : : 53 : : entry void wait4esup() { 54 : : when ownesup_complete(), comesup_complete() serial "esup" 55 : : { adj(); } } 56 : : 57 : : entry void ownfac_complete(); 58 : : entry void comfac_complete(); 59 : : entry void ownghost_complete(); 60 : : entry void reqghost_complete(); 61 : : entry void ownesup_complete(); 62 : : entry void comesup_complete(); 63 : : 64 : : }; 65 : : 66 : : } // inciter:: 67 : : 68 : : }