#include <idxl_comm.h>
Public Member Functions | |
IDXL_Side (void) | |
void | pup (PUP::er &p) |
~IDXL_Side () | |
int | total () const |
Return total number of entries in all our lists. | |
int | size (void) const |
Return the number of different chunks we communicate with. | |
const IDXL_List & | getLocalList (int idx) const |
Return the i'th (local) chunk we communicate with. | |
IDXL_List & | setLocalList (int idx) |
int | findLocalList (int chunk) const |
Return the local chunk number for this global chunk number. | |
const IDXL_List & | getList (int chunk) const |
Return the IDXL_List associated with this global chunk number. | |
IDXL_List & | addList (int chunk) |
Return the IDXL_List for this global chunk, adding if needed. | |
IDXL_List * | getIdxlListN (int chunk) |
const IDXL_Rec * | getRec (int entity) const |
Look up an entity's IDXL_Rec by the entity's local number. | |
void | flushMap (void) |
The communication lists just changed-- flush any cached information. | |
void | add (int myChunk, int myLocalNo, int hisChunk, int hisLocalNo, IDXL_Side &hisList) |
Used in creating comm. | |
void | clear () |
Method to clear remove all the IDXL Lists stored in this IDXL_Side Memory leak ? | |
bool | lockIdxl (int sharedWithChk) |
void | unlockIdxl (int sharedWithChk) |
bool | isLocked (int sharedWithChk) |
int | addNode (int localNo, int sharedWithChk) |
This local entity number is shared with the given local chunk. | |
int | removeNode (int localNo, int sharedWithChk) |
bool | setNode (int localNo, int sharedWithChk, int sharedIdx) |
bool | unsetNode (int sharedWithChk, int sharedIdx) |
int | existsNode (int localNo, int sharedWithChk) |
int | getNode (int sharedWithChk, int sharedIdx) |
void | print (const IDXL_Print_Map *idxmap=NULL) const |
void | sort2d (double *coord) |
void | sort3d (double *coord) |
Private Member Functions | |
IDXL_Map & | getMap (void) |
IDXL_List * | getListN (int chunk) |
Private Attributes | |
CkPupPtrVec< IDXL_List, CkPupAlwaysAllocatePtr < IDXL_List > > | comm |
Communication lists indexed by (local) chunk number. | |
IDXL_Map * | cached_map |
Communication lists indexed by local entity number. |
It provides both chunk->entities shared with it (comm) and the more rarely used entity->chunks that share it (map)
Definition at line 124 of file idxl_comm.h.
IDXL_Side::IDXL_Side | ( | void | ) |
Definition at line 239 of file idxl_comm.C.
IDXL_Side::~IDXL_Side | ( | ) |
Definition at line 241 of file idxl_comm.C.
References flushMap().
IDXL_Map & IDXL_Side::getMap | ( | void | ) | [private] |
Definition at line 262 of file idxl_comm.C.
References IDXL_Map::add(), c, cached_map, comm, and CkVec< T >::size().
Referenced by getRec().
Definition at line 135 of file idxl_comm.h.
References comm, and CkVec< T >::size().
Referenced by add(), addList(), and getIdxlListN().
void IDXL_Side::pup | ( | PUP::er & | p | ) |
Definition at line 250 of file idxl_comm.C.
References comm, and CkPupPtrVec< T, PUP_PTR >::pup().
Referenced by IDXL::pup(), FEM_Node::pup(), and FEM_Entity::pup().
int IDXL_Side::total | ( | void | ) | const |
int IDXL_Side::size | ( | void | ) | const [inline] |
Return the number of different chunks we communicate with.
Definition at line 149 of file idxl_comm.h.
References comm, and CkVec< T >::size().
Referenced by FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_readMesh(), FEM_MUtil::IdxlListTest(), makeGhosts(), ParFUM_generateGlobalNodeNumbers(), IDXL_Comm::post(), print(), and total().
Return the i'th (local) chunk we communicate with.
Definition at line 151 of file idxl_comm.h.
References comm.
Referenced by FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_readMesh(), FEM_MUtil::IdxlListTest(), makeGhosts(), ParFUM_generateGlobalNodeNumbers(), IDXL_Comm::post(), print(), sharedWith(), and IDXL_Comm::wait().
Return the local chunk number for this global chunk number.
Definition at line 155 of file idxl_comm.h.
References comm, and CkVec< T >::size().
Referenced by FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), removeNode(), and sharedWith().
Return the IDXL_List associated with this global chunk number.
Definition at line 163 of file idxl_comm.h.
Referenced by chunk::fixNode(), replyAdjacencyRequests(), edge::split(), and edge::translateSharedNodeIDs().
Return the IDXL_List for this global chunk, adding if needed.
Definition at line 169 of file idxl_comm.h.
References comm, getListN(), and CkVec< T >::push_back().
Referenced by FEM_MUtil::addElemRemote(), FEM_MUtil::addGhostElementRemote(), addIDXLists(), addNode(), FEM_MUtil::exists_in_IDXL(), existsNode(), FEM_remove_element(), FEM_MUtil::getChunksSharingGhostNodeRemote(), getNode(), FEM_MUtil::lookup_in_IDXL(), BulkAdapt::make_node_shared(), makeGhost(), ParFUM_recreateSharedNodes(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeNodeRemote(), setNode(), FEM_MUtil::splitEntityAll(), FEM_MUtil::splitEntityRemote(), unsetNode(), and FEM_MUtil::verifyIdxlListRemote().
Definition at line 178 of file idxl_comm.h.
References getListN().
Referenced by BulkAdapt::get_idxl_for_node(), BulkAdapt::get_node_from_idxl(), BulkAdapt::is_node_in_idxl(), ParFUMShadowArray::lockSharedIdxls(), and ParFUMShadowArray::unlockSharedIdxls().
const IDXL_Rec * IDXL_Side::getRec | ( | int | entity | ) | const |
Look up an entity's IDXL_Rec by the entity's local number.
Definition at line 279 of file idxl_comm.C.
References IDXL_Map::get(), and getMap().
Referenced by FEM_MUtil::addToSharedList(), edge::buildLockingCloud(), commState(), CreateAdaptAdjacencies(), chunk::deriveEdges(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_add_element(), FEM_Modify_LockAll(), FEM_Modify_LockUpdate(), FEM_remove_element(), FEM_remove_node_local(), FEM_MUtil::findGhostSend(), edge::flipPrevent(), FEM_MUtil::getChunkNos(), FEM_MUtil::getChunksSharingGhostNodeRemote(), femMeshModify::getIdxGhostSend(), FEM_MUtil::getLockOwner(), FEM_MUtil::isShared(), chunk::joinCommLists(), FEM_MUtil::knowsAbtNode(), ParFUMShadowArray::lockRegion(), makeAdjacencyRequests(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeGhostNodeRemote(), FEM_MUtil::removeNodeAll(), element::split(), FEM_MUtil::splitEntityAll(), FEM_MUtil::StructureTest(), element::translateNodeIDs(), edge::updateCloud(), FEM_MUtil::UpdateGhostSend(), femMeshModify::verifyghostsend(), and FEM_lockN::verifyLock().
void IDXL_Side::flushMap | ( | void | ) |
The communication lists just changed-- flush any cached information.
Definition at line 272 of file idxl_comm.C.
References cached_map.
Referenced by add(), addNode(), clear(), BulkAdapt::make_node_shared(), removeNode(), setNode(), sort2d(), sort3d(), unsetNode(), and ~IDXL_Side().
void IDXL_Side::add | ( | int | myChunk, | |
int | myLocalNo, | |||
int | hisChunk, | |||
int | hisLocalNo, | |||
IDXL_Side & | hisList | |||
) |
Used in creating comm.
lists: myLocalNo on (global chunk number) myChunk should be sent to hisLocalNo on (global chunk number) hisChunk.
Definition at line 286 of file idxl_comm.C.
References comm, flushMap(), getListN(), IDXL_List::push_back(), and CkVec< T >::push_back().
Referenced by splitter::addGhostInner(), and splitter::buildCommLists().
void IDXL_Side::clear | ( | ) |
Method to clear remove all the IDXL Lists stored in this IDXL_Side Memory leak ?
Definition at line 245 of file idxl_comm.C.
References comm, flushMap(), and CkVec< T >::free().
Referenced by FEM_Entity::clearGhost().
void IDXL_Side::unlockIdxl | ( | int | sharedWithChk | ) |
This local entity number is shared with the given local chunk.
Definition at line 307 of file idxl_comm.C.
References addList(), flushMap(), and IDXL_List::push_back().
Referenced by FEM_MUtil::addGhostElementRemote(), femMeshModify::addghostsendl(), femMeshModify::addghostsendl1(), femMeshModify::addghostsendr(), femMeshModify::addghostsendr1(), femMeshModify::addNodeRemote(), FEM_MUtil::addToSharedList(), femMeshModify::addTransIDXLRemote(), FEM_add_element(), FEM_add_node(), FEM_remove_element(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::splitEntityAll(), FEM_MUtil::splitEntityRemote(), FEM_MUtil::splitEntitySharing(), and femMeshModify::updateIdxlList().
Definition at line 313 of file idxl_comm.C.
References comm, findLocalList(), flushMap(), and CkVec< T >::size().
Referenced by FEM_MUtil::addToSharedList(), FEM_add_element(), FEM_remove_element(), FEM_remove_node_local(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeGhostNodeRemote(), femMeshModify::removeIDXLRemote(), FEM_MUtil::removeNodeAll(), FEM_MUtil::removeNodeRemote(), and FEM_MUtil::UpdateGhostSend().
Definition at line 331 of file idxl_comm.C.
References addList(), CpuTopoDetails::done, flushMap(), and IDXL_List::set().
Definition at line 337 of file idxl_comm.C.
References addList(), CpuTopoDetails::done, flushMap(), and IDXL_List::unset().
Definition at line 343 of file idxl_comm.C.
References addList(), and IDXL_List::exists().
Definition at line 347 of file idxl_comm.C.
References addList(), and IDXL_List::get().
void IDXL_Side::print | ( | const IDXL_Print_Map * | idxmap = NULL |
) | const |
Definition at line 357 of file idxl_comm.C.
References IDXL_List::getDest(), getLocalList(), PUP::l, p, IDXL_List::size(), size(), and total().
Referenced by addIDXLists(), FORTRAN_AS_C_RETURN(), and makeGhost().
void IDXL_Side::sort2d | ( | double * | coord | ) |
Definition at line 371 of file idxl_comm.C.
References comm, flushMap(), PUP::l, CkVec< T >::size(), and IDXL_List::sort2d().
Referenced by IDXL::sort2d().
void IDXL_Side::sort3d | ( | double * | coord | ) |
Definition at line 379 of file idxl_comm.C.
References comm, flushMap(), PUP::l, CkVec< T >::size(), and IDXL_List::sort3d().
Referenced by IDXL::sort3d().
CkPupPtrVec<IDXL_List, CkPupAlwaysAllocatePtr<IDXL_List> > IDXL_Side::comm [private] |
Communication lists indexed by (local) chunk number.
Definition at line 126 of file idxl_comm.h.
Referenced by add(), addList(), clear(), findLocalList(), getListN(), getLocalList(), getMap(), pup(), removeNode(), setLocalList(), size(), sort2d(), sort3d(), and total().
IDXL_Map* IDXL_Side::cached_map [private] |
Communication lists indexed by local entity number.
Because this is just another form for the data in comm, this pointer is normally NULL until somebody needs it.
Definition at line 131 of file idxl_comm.h.
Referenced by flushMap(), and getMap().