Branch data Line data Source code
1 : : // Controller for the library 2 : : 3 : : #include "NoWarning/m2mtransfer.decl.h" 4 : : 5 : : #include "collidecharm.h" 6 : : #include "Fields.hpp" 7 : : 8 : : namespace exam2m { 9 : : 10 : : void addMesh(CkArrayID p, int elem, CkCallback cb); 11 : : void setSourceTets(CkArrayID p, int index, std::vector< std::size_t >* inpoel, tk::UnsMesh::Coords* coords, const tk::Fields& u); 12 : : void setDestPoints(CkArrayID p, int index, tk::UnsMesh::Coords* coords, tk::Fields& u, CkCallback cb); 13 : : 14 : : class LibMain : public CBase_LibMain { 15 : : public: 16 : : LibMain(CkArgMsg* msg); 17 : : }; 18 : : 19 : : class MeshData { 20 : : public: 21 : : CProxy_TransferDetails m_proxy; 22 : : int m_firstchunk; 23 : : int m_nchare; 24 : 22 : void pup(PUP::er& p) { 25 : 22 : p | m_proxy; 26 : 22 : p | m_firstchunk; 27 : 22 : p | m_nchare; 28 : 22 : } 29 : : }; 30 : : 31 : : class M2MTransfer : public CBase_M2MTransfer { 32 : : private: 33 : : std::unordered_map<CmiUInt8, MeshData> proxyMap; 34 : : int current_chunk; 35 : : CmiUInt8 m_sourcemesh, m_destmesh; 36 : : 37 : : public: 38 : : M2MTransfer(); 39 : : #if defined(__clang__) 40 : : #pragma clang diagnostic push 41 : : #pragma clang diagnostic ignored "-Wundefined-func-template" 42 : : #endif 43 : 5 : explicit M2MTransfer( CkMigrateMessage* m ) : CBase_M2MTransfer( m ) {} 44 : : #if defined(__clang__) 45 : : #pragma clang diagnostic pop 46 : : #endif 47 : : void addMesh(CkArrayID p, int elem, CkCallback cb); 48 : : void setMesh(CkArrayID p, MeshData d); 49 : : void setSourceTets(CkArrayID p, int index, std::vector< std::size_t >* inpoel, 50 : : tk::UnsMesh::Coords* coords, const tk::Fields& u); 51 : : void setDestPoints(CkArrayID p, int index, tk::UnsMesh::Coords* coords, 52 : : tk::Fields& u, CkCallback cb); 53 : : void distributeCollisions(int nColl, Collision* colls); 54 : : }; 55 : : 56 : : }