Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/Inciter/sorter.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 mesh sorter 9 : : \details Charm++ module interface file for mesh sorter. 10 : : \see Sorter.h and Sorter.C for more info. 11 : : */ 12 : : // ***************************************************************************** 13 : : 14 : : module sorter { 15 : : 16 : : include "Callback.hpp"; 17 : : include "CommMap.hpp"; 18 : : 19 : : extern module meshwriter; 20 : : 21 : : namespace inciter { 22 : : 23 : : array [1D] Sorter { 24 : : entry Sorter( std::size_t meshid, 25 : : const CProxy_Transporter& transporter, 26 : : const tk::CProxy_MeshWriter& meshwriter, 27 : : const tk::SorterCallback& cbs, 28 : : const std::vector< Scheme >& scheme, 29 : : CkCallback reorderRefiner, 30 : : const std::vector< std::size_t >& ginpoel, 31 : : const tk::UnsMesh::CoordMap& coordmap, 32 : : const tk::UnsMesh::Chunk& el, 33 : : const std::map< int, std::vector< std::size_t > >& bface, 34 : : const std::vector< std::size_t >& triinpoel, 35 : : const std::map< int, std::vector< std::size_t > >& bnode, 36 : 6 : const std::unordered_map< std::size_t, std::set< std::size_t > >& 37 : : elemblockid, 38 : : int nchare ); 39 : : entry void setup( std::size_t npoin ); 40 : : entry void query( int fromch, const tk::AllCommMaps& bnd ); 41 : : entry void recvquery(); 42 : : entry void response(); 43 : : entry void bnd( int fromch, tk::CommMaps& msum ); 44 : : entry void recvbnd(); 45 : : entry void start(); 46 : : entry void offset( int c, std::size_t u ); 47 : : entry void request( int c, const std::unordered_set< std::size_t >& nd ); 48 : : entry void neworder( const std::unordered_map< std::size_t, 49 : : std::tuple< std::size_t, tk::UnsMesh::Coord > >& nodes ); 50 : : entry void createWorkers(); 51 : : 52 : : // SDAG code follows. See http://charm.cs.illinois.edu/manuals/html/ 53 : : // charm++/manual.html, Sec. "Structured Control Flow: Structured Dagger". 54 : : 55 : : entry void wait4prep() { 56 : : when reorderowned_complete(), nodes_requested_complete() 57 : : serial "prepare" { prepare(); } 58 : : }; 59 : : 60 : : entry void reorderowned_complete(); 61 : : entry void nodes_requested_complete(); 62 : : }; 63 : : 64 : : } // inciter:: 65 : : 66 : : }