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 [ - + ][ - - ]: 46 : 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 : : }
|