#include <fem_mesh.h>
Public Member Functions | |
FEM_Node (FEM_Node *ghost_) | |
void | pup (PUP::er &p) |
~FEM_Node () | |
virtual const char * | getName (void) const |
Return the human-readable name of this entity type, like "node". | |
bool | getPrimary (int nodeNo) const |
void | setPrimary (int nodeNo, bool isPrimary) |
void | fillElemAdjacencyTable (int type, const FEM_Elem &elem) |
void | setElemAdjacency (int type, const FEM_Elem &elem) |
void | fillNodeAdjacency (const FEM_Elem &elem) |
void | setNodeAdjacency (const FEM_Elem &elem) |
void | fillNodeAdjacencyForElement (int node, int nodesPerElem, const int *conn, FEM_VarIndexAttribute *adjacencyAttr) |
bool | hasConn (unsigned int idx) |
void | print (const char *type, const IDXL_Print_Map &map) |
FEM_Node (FEM_Node *ghost_) | |
void | pup (PUP::er &p) |
~FEM_Node () | |
virtual const char * | getName (void) const |
Return the human-readable name of this entity type, like "node". | |
bool | getPrimary (int nodeNo) const |
void | setPrimary (int nodeNo, bool isPrimary) |
void | fillElemAdjacencyTable (int type, const FEM_Elem &elem) |
void | setElemAdjacency (int type, const FEM_Elem &elem) |
void | fillNodeAdjacency (const FEM_Elem &elem) |
void | setNodeAdjacency (const FEM_Elem &elem) |
void | fillNodeAdjacencyForElement (int node, int nodesPerElem, const int *conn, FEM_VarIndexAttribute *adjacencyAttr) |
bool | hasConn (int idx) |
void | print (const char *type, const IDXL_Print_Map &map) |
Data Fields | |
FEM_Comm | shared |
Shared nodes. | |
FEM_Comm_Holder | sharedIDXL |
IDXL interface to shared nodes. | |
Protected Member Functions | |
virtual void | create (int attr, const char *caller) |
lookup of this attribute code has failed: check if it needs to be demand-created. | |
virtual void | create (int attr, const char *caller) |
lookup of this attribute code has failed: check if it needs to be demand-created. | |
Private Types | |
typedef FEM_Entity | super |
typedef FEM_VarIndexAttribute::ID | var_id |
typedef FEM_Entity | super |
typedef ElemID | var_id |
Private Member Functions | |
void | allocatePrimary (void) |
void | allocateElemAdjacency () |
void | allocateNodeAdjacency () |
void | allocatePrimary (void) |
void | allocateElemAdjacency () |
void | allocateNodeAdjacency () |
Private Attributes | |
FEM_DataAttribute * | primary |
primary flag, from FEM_NODE_PRIMARY, indicates this chunk "owns" this node. | |
FEM_VarIndexAttribute * | elemAdjacency |
FEM_VarIndexAttribute * | nodeAdjacency |
FEM_DataAttribute * | primary |
primary flag, from FEM_NODE_PRIMARY, indicates this chunk "owns" this node. | |
FEM_VarIndexAttribute * | elemAdjacency |
stores the node to element adjacency vector | |
FEM_VarIndexAttribute * | nodeAdjacency |
stores the node to node adjacency vector |
Describes a set of FEM Nodes--the FEM_NODE entity type. Unlike elements, nodes have no connectivity; but they do have special shared-nodes communications and a "primary" flag.
Definition at line 860 of file fem_mesh.h.
typedef FEM_Entity FEM_Node::super [private] |
Definition at line 861 of file fem_mesh.h.
typedef FEM_VarIndexAttribute::ID FEM_Node::var_id [private] |
Definition at line 876 of file fem_mesh.h.
typedef FEM_Entity FEM_Node::super [private] |
Definition at line 992 of file ParFUM_internals.h.
typedef ElemID FEM_Node::var_id [private] |
Definition at line 1009 of file ParFUM_internals.h.
FEM_Node::FEM_Node | ( | FEM_Node * | ghost_ | ) |
Definition at line 1554 of file fem_mesh.C.
FEM_Node::~FEM_Node | ( | ) |
Definition at line 1581 of file fem_mesh.C.
FEM_Node::FEM_Node | ( | FEM_Node * | ghost_ | ) |
FEM_Node::~FEM_Node | ( | ) |
void FEM_Node::allocatePrimary | ( | void | ) | [private] |
Definition at line 1559 of file fem_mesh.C.
References primary.
Referenced by create().
void FEM_Node::allocateElemAdjacency | ( | ) | [private] |
void FEM_Node::allocateNodeAdjacency | ( | ) | [private] |
Definition at line 99 of file fem_mesh_adjacency.C.
References CmiMemoryCheck(), and nodeAdjacency.
Referenced by create().
void FEM_Node::create | ( | int | attr, | |
const char * | caller | |||
) | [protected, virtual] |
lookup of this attribute code has failed: check if it needs to be demand-created.
Create a new attribute from an FEM_ATTR code.
Subclasses should override this method to recognize a request for, and add their own attributes; otherwise call the default implementation.
Every call to create must result in either a call to add() or a call to the superclass; but not both.
Any entity with optional fields, that are created on demand, will have to override this method. Entities with fixed fields that are known beforehand should just call add() from their constructor.
The default implementation handles FEM_DATA tags; entity-specific attributes (like FEM_CONN) need to be overridden and created by subclasses.
The default implementation handles FEM_DATA tags; entity-specific attributes (like FEM_CONN) need to be overridden and created by subclasses.
Reimplemented from FEM_Entity.
Definition at line 1587 of file fem_mesh.C.
References allocateElemAdjacency(), allocateNodeAdjacency(), allocatePrimary(), and FEM_Entity::create().
void FEM_Node::pup | ( | PUP::er & | p | ) |
Reimplemented from FEM_Entity.
Definition at line 1573 of file fem_mesh.C.
References PUP::er::comment(), FEM_Comm_Holder::pup(), IDXL_Side::pup(), PUP::pup(), shared, and sharedIDXL.
const char * FEM_Node::getName | ( | void | ) | const [virtual] |
Return the human-readable name of this entity type, like "node".
Implements FEM_Entity.
Definition at line 1585 of file fem_mesh.C.
Definition at line 889 of file fem_mesh.h.
Referenced by FEMchunk::getPrimary(), and print().
Definition at line 893 of file fem_mesh.h.
Referenced by addIDXLists(), and splitter::createMesh().
void FEM_Node::fillElemAdjacencyTable | ( | int | type, | |
const FEM_Elem & | elem | |||
) |
void FEM_Node::setElemAdjacency | ( | int | type, | |
const FEM_Elem & | elem | |||
) |
Definition at line 112 of file fem_mesh_adjacency.C.
References conn, elemAdjacency, FEM_Entity::getGhost(), idx, CkVec< T >::push_back(), and FEM_Entity::size().
void FEM_Node::fillNodeAdjacency | ( | const FEM_Elem & | elem | ) |
void FEM_Node::setNodeAdjacency | ( | const FEM_Elem & | elem | ) |
Definition at line 174 of file fem_mesh_adjacency.C.
References CmiMemoryCheck(), conn, FEM_Entity::getGhost(), idx, nodeAdjacency, nodeID, CkVec< T >::push_back(), and FEM_Entity::size().
void FEM_Node::fillNodeAdjacencyForElement | ( | int | node, | |
int | nodesPerElem, | |||
const int * | conn, | |||
FEM_VarIndexAttribute * | adjacencyAttr | |||
) |
Implements FEM_Entity.
Definition at line 1567 of file fem_mesh.C.
References elemAdjacency, and nodeAdjacency.
void FEM_Node::allocatePrimary | ( | void | ) | [private] |
void FEM_Node::allocateElemAdjacency | ( | ) | [private] |
void FEM_Node::allocateNodeAdjacency | ( | ) | [private] |
virtual void FEM_Node::create | ( | int | attr, | |
const char * | caller | |||
) | [protected, virtual] |
lookup of this attribute code has failed: check if it needs to be demand-created.
Create a new attribute from an FEM_ATTR code.
Subclasses should override this method to recognize a request for, and add their own attributes; otherwise call the default implementation.
Every call to create must result in either a call to add() or a call to the superclass; but not both.
Any entity with optional fields, that are created on demand, will have to override this method. Entities with fixed fields that are known beforehand should just call add() from their constructor.
The default implementation handles FEM_DATA tags; entity-specific attributes (like FEM_CONN) need to be overridden and created by subclasses.
The default implementation handles FEM_DATA tags; entity-specific attributes (like FEM_CONN) need to be overridden and created by subclasses.
Reimplemented from FEM_Entity.
void FEM_Node::pup | ( | PUP::er & | p | ) |
Reimplemented from FEM_Entity.
virtual const char* FEM_Node::getName | ( | void | ) | const [virtual] |
Definition at line 1022 of file ParFUM_internals.h.
Definition at line 1026 of file ParFUM_internals.h.
void FEM_Node::fillElemAdjacencyTable | ( | int | type, | |
const FEM_Elem & | elem | |||
) |
void FEM_Node::setElemAdjacency | ( | int | type, | |
const FEM_Elem & | elem | |||
) |
void FEM_Node::fillNodeAdjacency | ( | const FEM_Elem & | elem | ) |
void FEM_Node::setNodeAdjacency | ( | const FEM_Elem & | elem | ) |
void FEM_Node::fillNodeAdjacencyForElement | ( | int | node, | |
int | nodesPerElem, | |||
const int * | conn, | |||
FEM_VarIndexAttribute * | adjacencyAttr | |||
) |
Implements FEM_Entity.
Definition at line 1804 of file mesh.C.
References elemAdjacency, and nodeAdjacency.
void FEM_Node::print | ( | const char * | type, | |
const IDXL_Print_Map & | map | |||
) |
Reimplemented from FEM_Entity.
FEM_DataAttribute* FEM_Node::primary [private] |
primary flag, from FEM_NODE_PRIMARY, indicates this chunk "owns" this node.
Datatype is always FEM_BYTE (we need an FEM_BIT!), width is always 1, since there's only one such flag per node.
Definition at line 868 of file fem_mesh.h.
Referenced by allocatePrimary().
FEM_VarIndexAttribute* FEM_Node::elemAdjacency [private] |
FEM_VarIndexAttribute* FEM_Node::nodeAdjacency [private] |
Definition at line 875 of file fem_mesh.h.
Referenced by allocateNodeAdjacency(), hasConn(), and setNodeAdjacency().
Shared nodes.
Definition at line 880 of file fem_mesh.h.
Referenced by FEM_MUtil::addElemRemote(), FEM_MUtil::addGhostElementRemote(), addIDXLists(), FEM_MUtil::addToSharedList(), splitter::buildCommLists(), edge::buildLockingCloud(), CreateAdaptAdjacencies(), chunk::deriveEdges(), FEM_Adapt::edge_bisect_help(), FEM_AdaptL::edge_contraction_help(), FEM_Adapt::edge_flip_help(), FEM_MUtil::exists_in_IDXL(), FEM_add_element(), FEM_Make_node_globalno(), FEM_Modify_IDXL(), FEM_Modify_LockAll(), FEM_Modify_LockUpdate(), FEM_readMesh(), FEM_remove_element(), FEM_MUtil::findGhostSend(), ParFUMShadowArray::FindIdxlSide(), chunk::fixNode(), edge::flipPrevent(), BulkAdapt::get_idxl_for_node(), BulkAdapt::get_node_from_idxl(), FEM_MUtil::getChunkNos(), FEM_MUtil::getChunksSharingGhostNodeRemote(), FEMchunk::getComm(), FEM_MUtil::getLockOwner(), FEM_MUtil::IdxlListTest(), BulkAdapt::is_node_in_idxl(), FEM_MUtil::isShared(), chunk::joinCommLists(), FEM_MUtil::knowsAbtNode(), ParFUMShadowArray::lockRegion(), ParFUMShadowArray::lockSharedIdxls(), FEM_MUtil::lookup_in_IDXL(), BulkAdapt::make_node_shared(), makeAdjacencyRequests(), makeGhosts(), ParFUM_generateGlobalNodeNumbers(), ParFUM_recreateSharedNodes(), pup(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeNodeAll(), FEM_MUtil::removeNodeRemote(), replyAdjacencyRequests(), sharedWith(), edge::split(), element::split(), FEM_MUtil::splitEntityAll(), FEM_MUtil::splitEntityRemote(), FEM_MUtil::splitEntitySharing(), element::translateNodeIDs(), edge::translateSharedNodeIDs(), ParFUMShadowArray::unlockLocalNodes(), ParFUMShadowArray::unlockSharedIdxls(), edge::updateCloud(), femMeshModify::verifyghostsend(), FEM_MUtil::verifyIdxlListRemote(), and FEM_lockN::verifyLock().
FEM_DataAttribute* FEM_Node::primary [private] |
primary flag, from FEM_NODE_PRIMARY, indicates this chunk "owns" this node.
Datatype is always FEM_BYTE (we need an FEM_BIT!), width is always 1, since there's only one such flag per node.
Definition at line 999 of file ParFUM_internals.h.
FEM_VarIndexAttribute* FEM_Node::elemAdjacency [private] |
FEM_VarIndexAttribute* FEM_Node::nodeAdjacency [private] |