PPL Logo

splitter Class Reference
[ParFUM Unstructured Mesh Framework]

Splitter is a big utility class used to separate an FEM_Mesh into pieces. More...

Collaboration diagram for splitter:

Collaboration graph
[legend]

Public Member Functions

 splitter (FEM_Mesh *mesh_, const int *elem2chunk_, int nChunks_)
 ~splitter ()
void buildCommLists (void)
void addGhosts (const FEM_Partition &partition)
void separateSparse (bool forGhost)
void aboutToCreate (void)
FEM_MeshcreateMesh (int c)
void consistencyCheck (void)
 splitter (FEM_Mesh *mesh_, const int *elem2chunk_, int nChunks_)
 ~splitter ()
void buildCommLists (void)
void addGhosts (const FEM_Partition &partition)
void separateSparse (bool forGhost)
void aboutToCreate (void)
FEM_MeshcreateMesh (int c)
void consistencyCheck (void)

Private Member Functions

void renumberNodesLocal (int row, BasicTable2d< int > &table, int chunk, FEM_Symmetries_t sym)
 Renumber the global node numbers in this row of this table to be local to this chunk, with these symmetries.
void copySparse (const FEM_Sparse &src, int s, int chunk, FEM_Symmetries_t sym)
 Copy the global sparse record src[s] into this chunk with these symmetries:.
void copySparseChunks (const FEM_Sparse &src, int s, bool forGhost)
 Copy the global sparse record src[s] into all the chunks it belongs in.
void addStencil (const FEM_Ghost_Stencil &s, const FEM_Partition &partition)
 Add a ghost stencil: an explicit list of needed ghosts.
void addLayer (const FEM_Ghost_Layer &g, const FEM_Partition &partition)
 Add an entire layer of ghost elements.
bool hasGhostNodes (const int *conn, int nodesPer)
 Return true if any of these global nodes are ghost nodes.
bool addTuple (int *dest, FEM_Symmetries_t *destSym, const int *elem2tuple, int nodesPerTuple, const int *conn) const
 Return an elemList entry if this tuple should be a ghost:.
void addSymmetryGhost (const elemList &a)
 Add this ghost, which arrises because of a mirror symmetry condition.
void addGlobalGhost (int srcType, int srcNum, int destType, int destNum, bool addNodes)
 Add the real element (srcType,srcNum) as a ghost for use by (destType,destNum).
void addGhostPair (const elemList &src, const elemList &dest, bool addNodes)
 Check if src should be added as a ghost on dest's chunk.
int addGhostElement (int t, int gNo, int srcChunk, int destChunk, FEM_Symmetries_t sym)
 Add this global element as a ghost between src and dest, or return -1.
int addGhostNode (int gnNo, int srcChunk, int destChunk, FEM_Symmetries_t sym)
 Add this global node as a ghost between src and dest, or return -1.
int addGhostInner (const FEM_Entity &gEnt, int gNo, chunkList &gDest, int srcChunk, FEM_Entity &srcEnt, int destChunk, FEM_Entity &destEnt, FEM_Symmetries_t sym, int isNode, int t)
 Utility used by addGhostNode and addGhostElement.
void addElemElems (const FEM_Partition &partition)
 isaac's element to element adjacency creation
void buildElemElemData (const FEM_ElemAdj_Layer &g, const FEM_Partition &partition)
void bad (const char *why)
void equal (int is, int should, const char *what)
void range (int value, int lo, int hi, const char *what)
void nonnegative (int value, const char *what)
void renumberNodesLocal (int row, BasicTable2d< int > &table, int chunk, FEM_Symmetries_t sym)
 Renumber the global node numbers in this row of this table to be local to this chunk, with these symmetries.
void copySparse (const FEM_Sparse &src, int s, int chunk, FEM_Symmetries_t sym)
 Copy the global sparse record src[s] into this chunk with these symmetries:.
void copySparseChunks (const FEM_Sparse &src, int s, bool forGhost)
 Copy the global sparse record src[s] into all the chunks it belongs in.
void addStencil (const FEM_Ghost_Stencil &s, const FEM_Partition &partition)
 Add a ghost stencil: an explicit list of needed ghosts.
void addLayer (const FEM_Ghost_Layer &g, const FEM_Partition &partition)
 Add an entire layer of ghost elements.
bool hasGhostNodes (const int *conn, int nodesPer)
 Return true if any of these global nodes are ghost nodes.
bool addTuple (int *dest, FEM_Symmetries_t *destSym, const int *elem2tuple, int nodesPerTuple, const int *conn) const
 Return an elemList entry if this tuple should be a ghost:.
void addSymmetryGhost (const elemList &a)
 Add this ghost, which arrises because of a mirror symmetry condition.
void addGlobalGhost (int srcType, int srcNum, int destType, int destNum, bool addNodes)
 Add the real element (srcType,srcNum) as a ghost for use by (destType,destNum).
void addGhostPair (const elemList &src, const elemList &dest, bool addNodes)
 Check if src should be added as a ghost on dest's chunk.
int addGhostElement (int t, int gNo, int srcChunk, int destChunk, FEM_Symmetries_t sym)
 Add this global element as a ghost between src and dest, or return -1.
int addGhostNode (int gnNo, int srcChunk, int destChunk, FEM_Symmetries_t sym)
 Add this global node as a ghost between src and dest, or return -1.
int addGhostInner (const FEM_Entity &gEnt, int gNo, chunkList &gDest, int srcChunk, FEM_Entity &srcEnt, int destChunk, FEM_Entity &destEnt, FEM_Symmetries_t sym, int isNode, int t)
 Utility used by addGhostNode and addGhostElement.
void addElemElems (const FEM_Partition &partition)
 isaac's element to element adjacency creation
void buildElemElemData (const FEM_ElemAdj_Layer &g, const FEM_Partition &partition)
void bad (const char *why)
void equal (int is, int should, const char *what)
void range (int value, int lo, int hi, const char *what)
void nonnegative (int value, const char *what)

Private Attributes

FEM_Meshmesh
const intelem2chunk
int nChunks
FEM_Mesh ** chunks
chunkListgNode
CkVec< chunkList * > gElem
dynChunkdyn
FEM_Sparse ** sparseDest
unsigned char * ghostNode
const intcanon
const FEM_Symmetries_tsym
int curGhostLayerNo
int totGhostElem
int totGhostNode
FEM_Meshmesh
const intelem2chunk
FEM_Mesh ** chunks
chunkListgNode
CkVec< chunkList * > gElem
dynChunkdyn
FEM_Sparse ** sparseDest
unsigned char * ghostNode
const intcanon
const FEM_Symmetries_tsym

Detailed Description

Splitter is a big utility class used to separate an FEM_Mesh into pieces.

It build communication lists, ghosts, etc. and copies mesh data.

Definition at line 138 of file map.C.


Constructor & Destructor Documentation

splitter::splitter ( FEM_Mesh mesh_,
const int elem2chunk_,
int  nChunks_ 
)

splitter::~splitter (  ) 


Member Function Documentation

void splitter::renumberNodesLocal ( int  row,
BasicTable2d< int > &  table,
int  chunk,
FEM_Symmetries_t  sym 
) [inline, private]

Renumber the global node numbers in this row of this table to be local to this chunk, with these symmetries.

Definition at line 155 of file map.C.

References BasicTable2d< T >::getRow(), and BasicTable2d< T >::width().

Referenced by createMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::copySparse ( const FEM_Sparse &  src,
int  s,
int  chunk,
FEM_Symmetries_t  sym 
) [inline, private]

Copy the global sparse record src[s] into this chunk with these symmetries:.

Definition at line 168 of file map.C.

References PUP::d, and dest.

Referenced by copySparseChunks().

Here is the caller graph for this function:

bool splitter::hasGhostNodes ( const int conn,
int  nodesPer 
) [inline, private]

Return true if any of these global nodes are ghost nodes.

Definition at line 198 of file map.C.

Referenced by addLayer().

Here is the caller graph for this function:

void splitter::addElemElems ( const FEM_Partition partition  )  [private]

isaac's element to element adjacency creation

void splitter::buildElemElemData ( const FEM_ElemAdj_Layer g,
const FEM_Partition partition 
) [private]

void splitter::bad ( const char *  why  )  [inline, private]

Definition at line 237 of file map.C.

void splitter::equal ( int  is,
int  should,
const char *  what 
) [inline, private]

Definition at line 240 of file map.C.

References bad().

Referenced by consistencyCheck().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::range ( int  value,
int  lo,
int  hi,
const char *  what 
) [inline, private]

Definition at line 247 of file map.C.

References bad().

Referenced by consistencyCheck().

Here is the call graph for this function:

Here is the caller graph for this function:

void splitter::nonnegative ( int  value,
const char *  what 
) [inline, private]

Definition at line 253 of file map.C.

References bad().

Here is the call graph for this function:

void splitter::renumberNodesLocal ( int  row,
BasicTable2d< int > &  table,
int  chunk,
FEM_Symmetries_t  sym 
) [inline, private]

Renumber the global node numbers in this row of this table to be local to this chunk, with these symmetries.

Definition at line 162 of file map.C.

References BasicTable2d< T >::getRow(), and BasicTable2d< T >::width().

Here is the call graph for this function:

void splitter::copySparse ( const FEM_Sparse &  src,
int  s,
int  chunk,
FEM_Symmetries_t  sym 
) [inline, private]

Copy the global sparse record src[s] into this chunk with these symmetries:.

Definition at line 175 of file map.C.

References PUP::d, and dest.

void splitter::copySparseChunks ( const FEM_Sparse &  src,
int  s,
bool  forGhost 
) [private]

Copy the global sparse record src[s] into all the chunks it belongs in.

void splitter::addStencil ( const FEM_Ghost_Stencil s,
const FEM_Partition partition 
) [private]

Add a ghost stencil: an explicit list of needed ghosts.

void splitter::addLayer ( const FEM_Ghost_Layer g,
const FEM_Partition partition 
) [private]

Add an entire layer of ghost elements.

bool splitter::hasGhostNodes ( const int conn,
int  nodesPer 
) [inline, private]

Return true if any of these global nodes are ghost nodes.

Definition at line 205 of file map.C.

bool splitter::addTuple ( int dest,
FEM_Symmetries_t destSym,
const int elem2tuple,
int  nodesPerTuple,
const int conn 
) const [private]

Return an elemList entry if this tuple should be a ghost:.

void splitter::addSymmetryGhost ( const elemList a  )  [private]

Add this ghost, which arrises because of a mirror symmetry condition.

void splitter::addGlobalGhost ( int  srcType,
int  srcNum,
int  destType,
int  destNum,
bool  addNodes 
) [private]

Add the real element (srcType,srcNum) as a ghost for use by (destType,destNum).

void splitter::addGhostPair ( const elemList src,
const elemList dest,
bool  addNodes 
) [private]

Check if src should be added as a ghost on dest's chunk.

Calls addGhostElement and addGhostNode.

int splitter::addGhostElement ( int  t,
int  gNo,
int  srcChunk,
int  destChunk,
FEM_Symmetries_t  sym 
) [private]

Add this global element as a ghost between src and dest, or return -1.

int splitter::addGhostNode ( int  gnNo,
int  srcChunk,
int  destChunk,
FEM_Symmetries_t  sym 
) [private]

Add this global node as a ghost between src and dest, or return -1.

int splitter::addGhostInner ( const FEM_Entity gEnt,
int  gNo,
chunkList gDest,
int  srcChunk,
FEM_Entity srcEnt,
int  destChunk,
FEM_Entity destEnt,
FEM_Symmetries_t  sym,
int  isNode,
int  t 
) [private]

Utility used by addGhostNode and addGhostElement.

void splitter::addElemElems ( const FEM_Partition partition  )  [private]

isaac's element to element adjacency creation

void splitter::buildElemElemData ( const FEM_ElemAdj_Layer g,
const FEM_Partition partition 
) [private]

void splitter::bad ( const char *  why  )  [inline, private]

Definition at line 244 of file map.C.

void splitter::equal ( int  is,
int  should,
const char *  what 
) [inline, private]

Definition at line 247 of file map.C.

References bad().

Here is the call graph for this function:

void splitter::range ( int  value,
int  lo,
int  hi,
const char *  what 
) [inline, private]

Definition at line 254 of file map.C.

References bad().

Here is the call graph for this function:

void splitter::nonnegative ( int  value,
const char *  what 
) [inline, private]

Definition at line 260 of file map.C.

References bad().

Here is the call graph for this function:

void splitter::buildCommLists ( void   ) 

void splitter::addGhosts ( const FEM_Partition partition  ) 

void splitter::separateSparse ( bool  forGhost  ) 

void splitter::aboutToCreate ( void   ) 

FEM_Mesh* splitter::createMesh ( int  c  ) 

void splitter::consistencyCheck ( void   ) 


Field Documentation

const int* splitter::elem2chunk [private]

Definition at line 141 of file map.C.

Referenced by buildCommLists(), copySparseChunks(), and FEM_Mesh_split().

Definition at line 142 of file map.C.

Referenced by consistencyCheck(), separateSparse(), splitter(), and ~splitter().

dynChunk* splitter::dyn [private]

Definition at line 149 of file map.C.

Referenced by addGhostPair(), buildCommLists(), consistencyCheck(), createMesh(), splitter(), and ~splitter().

FEM_Sparse** splitter::sparseDest [private]

Definition at line 165 of file map.C.

Referenced by separateSparse(), splitter(), and ~splitter().

unsigned char* splitter::ghostNode [private]

Definition at line 185 of file map.C.

Referenced by addGhostPair(), addGhosts(), addTuple(), and splitter().

const int* splitter::canon [private]

Definition at line 186 of file map.C.

Referenced by addGhostPair(), addGhosts(), addTuple(), and splitter().

const FEM_Symmetries_t* splitter::sym [private]

Definition at line 187 of file map.C.

Referenced by addGhosts(), addTuple(), consistencyCheck(), and copySparseChunks().

Definition at line 188 of file map.C.

Referenced by addGhostInner(), addGhosts(), and addGlobalGhost().

Definition at line 189 of file map.C.

Referenced by addGhostElement(), and addGhosts().

Definition at line 189 of file map.C.

Referenced by addGhostNode(), and addGhosts().

Definition at line 147 of file map.C.

const int* splitter::elem2chunk [private]

Definition at line 148 of file map.C.

Definition at line 151 of file map.C.

Definition at line 154 of file map.C.

Definition at line 155 of file map.C.

dynChunk* splitter::dyn [private]

Definition at line 156 of file map.C.

FEM_Sparse** splitter::sparseDest [private]

Definition at line 172 of file map.C.

unsigned char* splitter::ghostNode [private]

Definition at line 192 of file map.C.

const int* splitter::canon [private]

Definition at line 193 of file map.C.

const FEM_Symmetries_t* splitter::sym [private]

Definition at line 194 of file map.C.


The documentation for this class was generated from the following files:

Generated on Mon Sep 21 08:30:03 2020 for Charm++ by  doxygen 1.5.5