IDXL_Side Class Reference

IDXL_Side describes all the shared entities for a given communication direction. More...

#include <idxl_comm.h>

Inheritance diagram for IDXL_Side:

Inheritance graph
[legend]
Collaboration diagram for IDXL_Side:

Collaboration graph
[legend]

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_ListgetLocalList (int idx) const
 Return the i'th (local) chunk we communicate with.
IDXL_ListsetLocalList (int idx)
int findLocalList (int chunk) const
 Return the local chunk number for this global chunk number.
const IDXL_ListgetList (int chunk) const
 Return the IDXL_List associated with this global chunk number.
IDXL_ListaddList (int chunk)
 Return the IDXL_List for this global chunk, adding if needed.
IDXL_ListgetIdxlListN (int chunk)
const IDXL_RecgetRec (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_MapgetMap (void)
IDXL_ListgetListN (int chunk)

Private Attributes

CkPupPtrVec< IDXL_List, CkPupAlwaysAllocatePtr<
IDXL_List > > 
comm
 Communication lists indexed by (local) chunk number.
IDXL_Mapcached_map
 Communication lists indexed by local entity number.

Detailed Description

IDXL_Side describes all the shared entities for a given communication direction.

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.


Constructor & Destructor Documentation

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().


Member Function Documentation

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().

IDXL_List* IDXL_Side::getListN ( int  chunk  )  [inline, private]

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, p, and CkPupPtrVec< T, PUP_PTR >::pup().

Referenced by IDXL::pup(), FEM_Node::pup(), and FEM_Entity::pup().

int IDXL_Side::total (  )  const

Return total number of entries in all our lists.

Definition at line 256 of file idxl_comm.C.

References comm, s, and size().

Referenced by print().

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 combineSide(), FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_Get_comm_partners(), FEM_readMesh(), FORTRAN_AS_C(), FEM_MUtil::IdxlListTest(), makeGhosts(), ParFUM_generateGlobalNodeNumbers(), print(), and total().

const IDXL_List& IDXL_Side::getLocalList ( int  idx  )  const [inline]

Return the i'th (local) chunk we communicate with.

Definition at line 151 of file idxl_comm.h.

References comm.

Referenced by combineSide(), FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_Get_comm_count(), FEM_Get_comm_nodes(), FEM_Get_comm_partner(), FEM_readMesh(), FTN_NAME(), FEM_MUtil::IdxlListTest(), makeGhosts(), ParFUM_generateGlobalNodeNumbers(), print(), and sharedWith().

IDXL_List& IDXL_Side::setLocalList ( int  idx  )  [inline]

Definition at line 152 of file idxl_comm.h.

References comm.

int IDXL_Side::findLocalList ( int  chunk  )  const [inline]

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().

const IDXL_List& IDXL_Side::getList ( int  chunk  )  const [inline]

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().

IDXL_List& IDXL_Side::addList ( int  chunk  )  [inline]

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(), ParFUM_recreateSharedNodes(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeNodeRemote(), setNode(), FEM_MUtil::splitEntityRemote(), unsetNode(), and FEM_MUtil::verifyIdxlListRemote().

IDXL_List* IDXL_Side::getIdxlListN ( int  chunk  )  [inline]

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 entity, IDXL_Map::get(), and getMap().

Referenced by FEM_MUtil::addToSharedList(), edge::buildLockingCloud(), CreateAdaptAdjacencies(), chunk::deriveEdges(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), 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(), FEM_MUtil::knowsAbtNode(), ParFUMShadowArray::lockRegion(), makeAdjacencyRequests(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeGhostNodeRemote(), element::split(), 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().

bool IDXL_Side::lockIdxl ( int  sharedWithChk  ) 

void IDXL_Side::unlockIdxl ( int  sharedWithChk  ) 

bool IDXL_Side::isLocked ( int  sharedWithChk  ) 

int IDXL_Side::addNode ( int  localNo,
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_MUtil::removeGhostElementRemote(), FEM_MUtil::splitEntityRemote(), FEM_MUtil::splitEntitySharing(), and femMeshModify::updateIdxlList().

int IDXL_Side::removeNode ( int  localNo,
int  sharedWithChk 
)

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().

bool IDXL_Side::setNode ( int  localNo,
int  sharedWithChk,
int  sharedIdx 
)

Definition at line 331 of file idxl_comm.C.

References addList(), flushMap(), and IDXL_List::set().

bool IDXL_Side::unsetNode ( int  sharedWithChk,
int  sharedIdx 
)

Definition at line 337 of file idxl_comm.C.

References addList(), flushMap(), and IDXL_List::unset().

int IDXL_Side::existsNode ( int  localNo,
int  sharedWithChk 
)

Definition at line 343 of file idxl_comm.C.

References addList(), and IDXL_List::exists().

int IDXL_Side::getNode ( int  sharedWithChk,
int  sharedIdx 
)

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 getLocalList(), n, p, size(), and total().

Referenced by addIDXLists(), and IDXL_Print().

void IDXL_Side::sort2d ( double *  coord  ) 

Definition at line 371 of file idxl_comm.C.

References comm, flushMap(), and CkVec< T >::size().

Referenced by IDXL::sort2d().

void IDXL_Side::sort3d ( double *  coord  ) 

Definition at line 379 of file idxl_comm.C.

References comm, flushMap(), and CkVec< T >::size().

Referenced by IDXL::sort3d().


Field Documentation

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().


The documentation for this class was generated from the following files:
Generated on Sun Jun 29 13:33:41 2008 for Charm++ by  doxygen 1.5.1