ExaFMM 1
Fast-multipole Method for exascale systems
Public Member Functions | Private Member Functions | Private Attributes
ParallelFMM< equation > Class Template Reference

Handles all the communication of local essential trees. More...

#include <parallelfmm.h>

Inheritance diagram for ParallelFMM< equation >:
Inheritance graph
[legend]
Collaboration diagram for ParallelFMM< equation >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ParallelFMM ()
 Constructor.
 ~ParallelFMM ()
 Destructor.
void setCommBodies (Cells &cells)
 Set bodies to communicate.
void updateBodies (bool comm=true)
 Update bodies using the previous send count.
void commBodies (Cells &cells)
 Communicate bodies in the local essential tree.
void bodies2cells (Bodies &bodies, Cells &cells)
 Convert recvBodies to cells.
void commCells (Bodies &bodies, Cells &cells)
 Communicate cells in the local essential tree.
void eraseLocalTree (Cells &cells)
 Remove cells that belong to current process.

Private Member Functions

void gatherBounds ()
 < Hypercube communicators
void getSendRank (Cells &cells)
 Get neighbor ranks to send to.
void getSendCount (bool comm=true)
 Get size of data to send.
void commBodiesAlltoall ()
 Communicate cells by one-to-one MPI_Alltoallv.
void getOtherDomain (vect &xmin, vect &xmax, int l)
 Get boundries of domains on other processes.
real getDistance (C_iter C, vect xmin, vect xmax)
 Get disatnce to other domain.
void getLET (C_iter C0, C_iter C, vect xmin, vect xmax)
 Determine which cells to send.
void commCellsAlltoall (int l)
 Communicate cells by one-to-one MPI_Alltoallv.
void commCellsScatter (int l)
 Communicate cells by scattering from leftover processes.
void rbodies2twigs (Bodies &bodies, Cells &twigs)
 Turn recv bodies to twigs.
void cells2twigs (Cells &cells, Cells &twigs, bool last)
 Turn cells to twigs.
void send2twigs (Bodies &bodies, Cells &twigs, int offTwigs)
 Turn send buffer to twigs.
void recv2twigs (Bodies &bodies, Cells &twigs)
 Turn recv buffer to twigs.
void zipTwigs (Cells &twigs, Cells &cells, Cells &sticks, bool last)
 Zip two groups of twigs that overlap.
void reindexBodies (Bodies &bodies, Cells &twigs, Cells &cells, Cells &sticks)
 Re-index bodies.
void sticks2send (Cells &sticks, int &offTwigs)
 Turn sticks to send buffer.
void checkNumCells (int l)
 Validate number of send cells.
void checkSumMass (Cells &cells)
 Check total charge.

Private Attributes

std::vector< int > sendBodyCnt
 Vector of body send counts.
std::vector< int > sendBodyDsp
 Vector of body send displacements.
std::vector< int > recvBodyCnt
 Vector of body recv counts.
std::vector< int > recvBodyDsp
 Vector of body recv displacements.
std::vector< int > sendBodyRanks
 Vector of ranks to send bodies to.
std::vector< int > sendBodyCellCnt
 Vector of send counts for cells of bodies.
std::vector< C_itersendBodyCells
 Vector of cell iterators for cells of bodies to send.
std::vector< int > sendCellCnt
 Vector of cell send counts.
std::vector< int > sendCellDsp
 Vector of cell send displacements.
std::vector< int > recvCellCnt
 Vector of cell recv counts.
std::vector< int > recvCellDsp
 Vector of cell recv displacements.
std::vector< vectxminAll
 Buffer for gathering XMIN.
std::vector< vectxmaxAll
 Buffer for gathering XMAX.
JBodies sendBodies
 Send buffer for bodies.
JBodies recvBodies
 Recv buffer for bodies.
JCells sendCells
 Send buffer for cells.
JCells recvCells
 Recv buffer for cells.

Detailed Description

template<Equation equation>
class ParallelFMM< equation >

Handles all the communication of local essential trees.

Definition at line 28 of file parallelfmm.h.


Constructor & Destructor Documentation

template<Equation equation>
ParallelFMM< equation >::ParallelFMM ( ) [inline]

Constructor.

Definition at line 562 of file parallelfmm.h.

template<Equation equation>
ParallelFMM< equation >::~ParallelFMM ( ) [inline]

Destructor.

Definition at line 564 of file parallelfmm.h.


Member Function Documentation

template<Equation equation>
void ParallelFMM< equation >::bodies2cells ( Bodies bodies,
Cells cells 
) [inline]

Convert recvBodies to cells.

Definition at line 612 of file parallelfmm.h.

Here is the call graph for this function:

template<Equation equation>
void ParallelFMM< equation >::cells2twigs ( Cells cells,
Cells twigs,
bool  last 
) [inline, private]

Turn cells to twigs.

Definition at line 401 of file parallelfmm.h.

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::checkNumCells ( int  l) [inline, private]

Validate number of send cells.

Definition at line 525 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::checkSumMass ( Cells cells) [inline, private]

Check total charge.

Definition at line 544 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::commBodies ( Cells cells) [inline]

Communicate bodies in the local essential tree.

Definition at line 606 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::commBodiesAlltoall ( ) [inline, private]

Communicate cells by one-to-one MPI_Alltoallv.

Definition at line 173 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::commCells ( Bodies bodies,
Cells cells 
) [inline]

Communicate cells in the local essential tree.

Definition at line 619 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::commCellsAlltoall ( int  l) [inline, private]

Communicate cells by one-to-one MPI_Alltoallv.

Definition at line 333 of file parallelfmm.h.

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::commCellsScatter ( int  l) [inline, private]

Communicate cells by scattering from leftover processes.

Definition at line 349 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::eraseLocalTree ( Cells cells) [inline]

Remove cells that belong to current process.

Definition at line 740 of file parallelfmm.h.

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::gatherBounds ( ) [inline, private]

< Hypercube communicators

Gather bounds of other domain

Definition at line 74 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
real ParallelFMM< equation >::getDistance ( C_iter  C,
vect  xmin,
vect  xmax 
) [inline, private]

Get disatnce to other domain.

Definition at line 277 of file parallelfmm.h.

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::getLET ( C_iter  C0,
C_iter  C,
vect  xmin,
vect  xmax 
) [inline, private]

Determine which cells to send.

Definition at line 290 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::getOtherDomain ( vect xmin,
vect xmax,
int  l 
) [inline, private]

Get boundries of domains on other processes.

Definition at line 242 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::getSendCount ( bool  comm = true) [inline, private]

Get size of data to send.

Definition at line 141 of file parallelfmm.h.

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::getSendRank ( Cells cells) [inline, private]

Get neighbor ranks to send to.

Definition at line 93 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::rbodies2twigs ( Bodies bodies,
Cells twigs 
) [inline, private]

Turn recv bodies to twigs.

Definition at line 382 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::recv2twigs ( Bodies bodies,
Cells twigs 
) [inline, private]

Turn recv buffer to twigs.

Definition at line 428 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::reindexBodies ( Bodies bodies,
Cells twigs,
Cells cells,
Cells sticks 
) [inline, private]

Re-index bodies.

Definition at line 476 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::send2twigs ( Bodies bodies,
Cells twigs,
int  offTwigs 
) [inline, private]

Turn send buffer to twigs.

Definition at line 414 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::setCommBodies ( Cells cells) [inline]

Set bodies to communicate.

Definition at line 567 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::sticks2send ( Cells sticks,
int &  offTwigs 
) [inline, private]

Turn sticks to send buffer.

Definition at line 513 of file parallelfmm.h.

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::updateBodies ( bool  comm = true) [inline]

Update bodies using the previous send count.

Definition at line 577 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:

template<Equation equation>
void ParallelFMM< equation >::zipTwigs ( Cells twigs,
Cells cells,
Cells sticks,
bool  last 
) [inline, private]

Zip two groups of twigs that overlap.

Definition at line 441 of file parallelfmm.h.

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

template<Equation equation>
JBodies ParallelFMM< equation >::recvBodies [private]

Recv buffer for bodies.

Definition at line 45 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::recvBodyCnt [private]

Vector of body recv counts.

Definition at line 32 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::recvBodyDsp [private]

Vector of body recv displacements.

Definition at line 33 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::recvCellCnt [private]

Vector of cell recv counts.

Definition at line 39 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::recvCellDsp [private]

Vector of cell recv displacements.

Definition at line 40 of file parallelfmm.h.

template<Equation equation>
JCells ParallelFMM< equation >::recvCells [private]

Recv buffer for cells.

Definition at line 47 of file parallelfmm.h.

template<Equation equation>
JBodies ParallelFMM< equation >::sendBodies [private]

Send buffer for bodies.

Definition at line 44 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::sendBodyCellCnt [private]

Vector of send counts for cells of bodies.

Definition at line 35 of file parallelfmm.h.

template<Equation equation>
std::vector<C_iter> ParallelFMM< equation >::sendBodyCells [private]

Vector of cell iterators for cells of bodies to send.

Definition at line 36 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::sendBodyCnt [private]

Vector of body send counts.

Definition at line 30 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::sendBodyDsp [private]

Vector of body send displacements.

Definition at line 31 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::sendBodyRanks [private]

Vector of ranks to send bodies to.

Definition at line 34 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::sendCellCnt [private]

Vector of cell send counts.

Definition at line 37 of file parallelfmm.h.

template<Equation equation>
std::vector<int> ParallelFMM< equation >::sendCellDsp [private]

Vector of cell send displacements.

Definition at line 38 of file parallelfmm.h.

template<Equation equation>
JCells ParallelFMM< equation >::sendCells [private]

Send buffer for cells.

Definition at line 46 of file parallelfmm.h.

template<Equation equation>
std::vector<vect> ParallelFMM< equation >::xmaxAll [private]

Buffer for gathering XMAX.

Definition at line 42 of file parallelfmm.h.

template<Equation equation>
std::vector<vect> ParallelFMM< equation >::xminAll [private]

Buffer for gathering XMIN.

Definition at line 41 of file parallelfmm.h.


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines