Public Member Functions | |
parallelTransfer_c (collide_t voxels_, MPI_Comm mpi_comm_, int valsPerTet_, int valsPerPt_, const xfer_t *srcTet_, const xfer_t *srcPt_, const TetMesh &srcMesh_, xfer_t *destTet_, xfer_t *destPt_, const TetMesh &destMesh_) | |
~parallelTransfer_c () | |
void | transfer (progress_t &progress) |
Perform a parallel data transfer from srcVals to destVals. | |
Private Member Functions | |
bool | isDest (int n) |
Return true if this is the collision-box number of a destination tet. | |
bool | isLocal (const int *coll) |
Return true if this collision record describes a local intersection. | |
void | accumulateCellValues (const xfer_t *sCellVals, int dest, double sharedVolume) |
A source cell, with values sVals, overlaps with this dest cell with this much shared volume. | |
void | transferNodeValues (const ConcreteElementNodeData &srcElement, int dest) |
This source element, with values sPt, overlaps with this dest element. | |
Private Attributes | |
collide_t | voxels |
int | firstDest |
MPI_Comm | mpi_comm |
int | myRank |
int | commSize |
int | valsPerTet |
int | valsPerPt |
const TetMesh & | srcMesh |
const xfer_t * | srcTet |
const xfer_t * | srcPt |
const TetMesh & | destMesh |
xfer_t * | destTet |
xfer_t * | destPt |
double * | destVolumes |
ConcreteLocalElement | theLocalElement |
Definition at line 48 of file paralleltransfer.C.
parallelTransfer_c::parallelTransfer_c | ( | collide_t | voxels_, | |
MPI_Comm | mpi_comm_, | |||
int | valsPerTet_, | |||
int | valsPerPt_, | |||
const xfer_t * | srcTet_, | |||
const xfer_t * | srcPt_, | |||
const TetMesh & | srcMesh_, | |||
xfer_t * | destTet_, | |||
xfer_t * | destPt_, | |||
const TetMesh & | destMesh_ | |||
) | [inline] |
Definition at line 96 of file paralleltransfer.C.
References commSize, PUP::d, destMesh, destTet, destVolumes, TetMesh::getTets(), mpi_comm, MPI_Comm_rank, myRank, and valsPerTet.
parallelTransfer_c::~parallelTransfer_c | ( | ) | [inline] |
Return true if this is the collision-box number of a destination tet.
Only works for local numbers.
Definition at line 53 of file paralleltransfer.C.
References firstDest.
Referenced by transfer().
Return true if this collision record describes a local intersection.
Definition at line 58 of file paralleltransfer.C.
References myRank.
Referenced by transfer().
void parallelTransfer_c::accumulateCellValues | ( | const xfer_t * | sCellVals, | |
int | dest, | |||
double | sharedVolume | |||
) | [inline, private] |
A source cell, with values sVals, overlaps with this dest cell with this much shared volume.
Transfer cell-centered values.
Definition at line 73 of file paralleltransfer.C.
References destTet, destVolumes, and valsPerTet.
Referenced by transfer().
void parallelTransfer_c::transferNodeValues | ( | const ConcreteElementNodeData & | srcElement, | |
int | dest | |||
) | [inline, private] |
This source element, with values sPt, overlaps with this dest element.
Transfer any possible node-centered values.
Definition at line 82 of file paralleltransfer.C.
References destMesh, destPt, GenericElement::element_contains_point(), TetMesh::getPoint(), TetMesh::getTet(), GenericElement::interpolate_natural(), and valsPerPt.
Referenced by transfer().
void parallelTransfer_c::transfer | ( | progress_t & | progress | ) |
Perform a parallel data transfer from srcVals to destVals.
Definition at line 445 of file paralleltransfer.C.
References accumulateCellValues(), boxes, c, CmiAbort(), COLLIDE_Boxes_prio(), COLLIDE_Count(), COLLIDE_List(), commSize, tetReceiver::count(), tetSender::countTet(), PUP::d, dest, destMesh, destTet, destVolumes, firstDest, getBox(), getSharedVolumeTets(), tetReceiver::getTet(), TetMesh::getTets(), TetMesh::getTetVolume(), isDest(), isLocal(), mpi_comm, myRank, progress_t::p(), p, tetSender::putTet(), PUP::s, ConcreteLocalElement::set(), src, srcMesh, srcPt, srcTet, theLocalElement, transferNodeValues(), valsPerPt, valsPerTet, and voxels.
Referenced by ParallelTransfer().
collide_t parallelTransfer_c::voxels [private] |
int parallelTransfer_c::firstDest [private] |
MPI_Comm parallelTransfer_c::mpi_comm [private] |
Definition at line 55 of file paralleltransfer.C.
Referenced by parallelTransfer_c(), and transfer().
int parallelTransfer_c::myRank [private] |
Definition at line 56 of file paralleltransfer.C.
Referenced by isLocal(), parallelTransfer_c(), VerboseProgress_t::printLast(), transfer(), and VerboseProgress_t::VerboseProgress_t().
int parallelTransfer_c::commSize [private] |
Definition at line 56 of file paralleltransfer.C.
Referenced by parallelTransfer_c(), and transfer().
int parallelTransfer_c::valsPerTet [private] |
Definition at line 60 of file paralleltransfer.C.
Referenced by accumulateCellValues(), parallelTransfer_c(), and transfer().
int parallelTransfer_c::valsPerPt [private] |
Definition at line 60 of file paralleltransfer.C.
Referenced by transfer(), and transferNodeValues().
const TetMesh& parallelTransfer_c::srcMesh [private] |
const xfer_t* parallelTransfer_c::srcTet [private] |
const xfer_t* parallelTransfer_c::srcPt [private] |
const TetMesh& parallelTransfer_c::destMesh [private] |
Definition at line 64 of file paralleltransfer.C.
Referenced by parallelTransfer_c(), transfer(), and transferNodeValues().
xfer_t* parallelTransfer_c::destTet [private] |
Definition at line 65 of file paralleltransfer.C.
Referenced by accumulateCellValues(), parallelTransfer_c(), and transfer().
xfer_t* parallelTransfer_c::destPt [private] |
double* parallelTransfer_c::destVolumes [private] |
Definition at line 67 of file paralleltransfer.C.
Referenced by accumulateCellValues(), parallelTransfer_c(), transfer(), and ~parallelTransfer_c().