PPL Logo

FEM_Node Class Reference
[ParFUM Unstructured Mesh Framework]

FEM_Node is a type of FEM_Entity, which refers to nodes. More...

#include <fem_mesh.h>

Inheritance diagram for FEM_Node:

Inheritance graph
[legend]
Collaboration diagram for FEM_Node:

Collaboration graph
[legend]

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

Detailed Description

FEM_Node is a type of FEM_Entity, which refers to nodes.

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.


Member Typedef Documentation

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.


Constructor & Destructor Documentation

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


Member Function Documentation

void FEM_Node::allocatePrimary ( void   )  [private]

Definition at line 1559 of file fem_mesh.C.

References primary.

Referenced by create().

Here is the caller graph for this function:

void FEM_Node::allocateElemAdjacency (  )  [private]

Referenced by create().

Here is the caller graph for this function:

void FEM_Node::allocateNodeAdjacency (  )  [private]

Definition at line 99 of file fem_mesh_adjacency.C.

References CmiMemoryCheck(), and nodeAdjacency.

Referenced by create().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

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.

Here is the call graph for this function:

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.

bool FEM_Node::getPrimary ( int  nodeNo  )  const [inline]

Definition at line 889 of file fem_mesh.h.

Referenced by FEMchunk::getPrimary(), and print().

Here is the caller graph for this function:

void FEM_Node::setPrimary ( int  nodeNo,
bool  isPrimary 
) [inline]

Definition at line 893 of file fem_mesh.h.

Referenced by addIDXLists(), and splitter::createMesh().

Here is the caller graph for this function:

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

Here is the call graph for this function:

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

Here is the call graph for this function:

void FEM_Node::fillNodeAdjacencyForElement ( int  node,
int  nodesPerElem,
const int conn,
FEM_VarIndexAttribute *  adjacencyAttr 
)

bool FEM_Node::hasConn ( unsigned int  idx  )  [virtual]

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]

Return the human-readable name of this entity type, like "node".

Implements FEM_Entity.

bool FEM_Node::getPrimary ( int  nodeNo  )  const [inline]

Definition at line 1022 of file ParFUM_internals.h.

void FEM_Node::setPrimary ( int  nodeNo,
bool  isPrimary 
) [inline]

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 
)

bool FEM_Node::hasConn ( int  idx  )  [virtual]

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.


Field Documentation

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]

Definition at line 874 of file fem_mesh.h.

Referenced by hasConn(), and setElemAdjacency().

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

IDXL interface to shared nodes.

Definition at line 881 of file fem_mesh.h.

Referenced by pup().

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]

stores the node to element adjacency vector

Definition at line 1005 of file ParFUM_internals.h.

FEM_VarIndexAttribute* FEM_Node::nodeAdjacency [private]

stores the node to node adjacency vector

Definition at line 1007 of file ParFUM_internals.h.


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

Generated on Mon Sep 21 08:24:48 2020 for Charm++ by  doxygen 1.5.5