FEI Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
NodeDescriptor Class Reference

#include <fei_NodeDescriptor.hpp>

Public Member Functions

 NodeDescriptor ()
 
 NodeDescriptor (const NodeDescriptor &src)
 
virtual ~NodeDescriptor ()
 
GlobalID getGlobalNodeID () const
 
void setGlobalNodeID (GlobalID node)
 
int getNodeNumber () const
 
void setNodeNumber (int nn)
 
int getBlkEqnNumber () const
 
void setBlkEqnNumber (int blkEqn)
 
int getNumNodalDOF () const
 
void setNumNodalDOF (int dof)
 
void addField (int fieldID)
 
void setFieldEqnNumber (int fieldID, int eqn)
 
int getNumFields () const
 
const int * getFieldIDList () const
 
const int * getFieldEqnNumbers () const
 
bool getFieldEqnNumber (int fieldID, int &eqnNumber) const
 
void getFieldID (int eqnNumber, int &fieldID, int &offset_into_field) const
 
bool operator== (const NodeDescriptor &nd) const
 
bool operator!= (const NodeDescriptor &nd) const
 
bool operator< (const NodeDescriptor &nd) const
 
bool operator> (const NodeDescriptor &nd) const
 
int getOwnerProc () const
 
void setOwnerProc (int proc)
 
void addBlockIndex (unsigned blk_idx)
 
size_t getNumBlocks () const
 
const std::vector< unsigned > & getBlockIndexList () const
 
bool hasBlockIndex (unsigned blk_idx) const
 

Private Member Functions

NodeDescriptoroperator= (const NodeDescriptor &src)
 
void allocFieldLists ()
 
void allocBlockList ()
 

Private Attributes

GlobalID nodeID_
 
int nodeNumber_
 
int numNodalDOF_
 
int * fieldIDList_
 
int * fieldEqnNumbers_
 
int numFields_
 
int blkEqnNumber_
 
int ownerProc_
 
std::vector< unsigned > blockList_
 

Detailed Description

The NodeDescriptor class holds the information that the FEI implementation needs to know about the nodes in the finite element problem:

Global node identifier number of nodal degrees-of-freedom list of associated field identifiers, with their (global) equation numbers (global) blk-eqn number which processor is this node's owner list of (local) blocks that contain this node

Note: 'block' is used in two contexts here. There are element-blocks, and there are block-equations. Element-blocks refer to the blocks of elements in the finite-element problem, with all elements in a block containing the same number of solution fields per node, etc. Block-equations refer to the small dense sub-blocks of a block-entry sparse matrix. Each node is associated with a number of element-blocks, and each node has exactly one associated global 0-based block-equation number.

Definition at line 36 of file fei_NodeDescriptor.hpp.

Constructor & Destructor Documentation

NodeDescriptor::NodeDescriptor ( )

Definition at line 16 of file fei_NodeDescriptor.cpp.

NodeDescriptor::NodeDescriptor ( const NodeDescriptor src)
inline

Definition at line 40 of file fei_NodeDescriptor.hpp.

NodeDescriptor::~NodeDescriptor ( )
virtual

Definition at line 32 of file fei_NodeDescriptor.cpp.

References fieldEqnNumbers_, fieldIDList_, and numFields_.

Member Function Documentation

GlobalID NodeDescriptor::getGlobalNodeID ( ) const
inline
void NodeDescriptor::setGlobalNodeID ( GlobalID  node)
inline

Definition at line 50 of file fei_NodeDescriptor.hpp.

References nodeID_.

Referenced by NodeDatabase::initNodeID().

int NodeDescriptor::getNodeNumber ( ) const
inline
void NodeDescriptor::setNodeNumber ( int  nn)
inline

Definition at line 53 of file fei_NodeDescriptor.hpp.

References nodeNumber_.

Referenced by NodeCommMgr::processRecvMessage(), and NodeDatabase::synchronize().

int NodeDescriptor::getBlkEqnNumber ( ) const
inline
void NodeDescriptor::setBlkEqnNumber ( int  blkEqn)
inline
int NodeDescriptor::getNumNodalDOF ( ) const
inline
void NodeDescriptor::setNumNodalDOF ( int  dof)
inline
void NodeDescriptor::addField ( int  fieldID)
void NodeDescriptor::setFieldEqnNumber ( int  fieldID,
int  eqn 
)
int NodeDescriptor::getNumFields ( ) const
inline
const int* NodeDescriptor::getFieldIDList ( ) const
inline
const int* NodeDescriptor::getFieldEqnNumbers ( ) const
inline
bool NodeDescriptor::getFieldEqnNumber ( int  fieldID,
int &  eqnNumber 
) const

Given a fieldID, return the first equation number associated with that field at this node.

Parameters
fieldID
eqnNumber
Returns
false if fieldID is not present at this node

Definition at line 89 of file fei_NodeDescriptor.cpp.

References fei::binarySearch(), fieldEqnNumbers_, fieldIDList_, and numFields_.

Referenced by convert_field_and_nodes_to_eqns(), FEDataFilter::getBlockFieldNodeSolution(), LinSysCoreFilter::getBlockFieldNodeSolution(), FEDataFilter::getBlockNodeSolution(), LinSysCoreFilter::getBlockNodeSolution(), fei::DirichletBCManager::getEqnNumber(), SNL_FEI_Structure::getEqnNumber(), SNL_FEI_Structure::getEqnNumbers(), FEDataFilter::getNodalFieldSolution(), LinSysCoreFilter::getNodalFieldSolution(), FEDataFilter::getNodalSolution(), LinSysCoreFilter::getNodalSolution(), FEDataFilter::loadFEDataMultCR(), FEDataFilter::loadFEDataPenCR(), FEDataFilter::loadNodeBCs(), FEDataFilter::putBlockFieldNodeSolution(), LinSysCoreFilter::putBlockFieldNodeSolution(), FEDataFilter::putNodalFieldSolution(), LinSysCoreFilter::putNodalFieldSolution(), LinSysCoreFilter::resolveConflictingCRs(), LinSysCoreFilter::setLinSysCoreCREqns(), SNL_FEI_Structure::storeLocalNodeIndices(), LinSysCoreFilter::storeNodalColumnCoefs(), SNL_FEI_Structure::storeNodalColumnIndices(), LinSysCoreFilter::storeNodalRowCoefs(), SNL_FEI_Structure::storeNodalRowIndices(), LinSysCoreFilter::storeNodalSendEqn(), SNL_FEI_Structure::storeNodalSendIndex(), SNL_FEI_Structure::storeNodalSendIndices(), LinSysCoreFilter::storePenNodeData(), and LinSysCoreFilter::storePenNodeSendData().

void NodeDescriptor::getFieldID ( int  eqnNumber,
int &  fieldID,
int &  offset_into_field 
) const

Given an equation-number, get the associated fieldID and offset-into-field. throws an exception if the equation-number is not associated with this node.

Definition at line 104 of file fei_NodeDescriptor.cpp.

References fieldEqnNumbers_, fieldIDList_, numFields_, and numNodalDOF_.

Referenced by convert_eqns_to_nodenumbers_and_dof_ids(), FEDataFilter::enforceEssentialBCs(), FEDataFilter::getReducedSolnEntry(), FEDataFilter::giveToLocalReducedMatrix(), FEDataFilter::giveToLocalReducedRHS(), FEDataFilter::giveToMatrix(), and FEDataFilter::giveToRHS().

bool NodeDescriptor::operator== ( const NodeDescriptor nd) const
inline

Definition at line 81 of file fei_NodeDescriptor.hpp.

References nodeID_.

bool NodeDescriptor::operator!= ( const NodeDescriptor nd) const
inline

Definition at line 84 of file fei_NodeDescriptor.hpp.

References nodeID_.

bool NodeDescriptor::operator< ( const NodeDescriptor nd) const
inline

Definition at line 87 of file fei_NodeDescriptor.hpp.

References nodeID_.

bool NodeDescriptor::operator> ( const NodeDescriptor nd) const
inline

Definition at line 90 of file fei_NodeDescriptor.hpp.

References nodeID_.

int NodeDescriptor::getOwnerProc ( ) const
inline
void NodeDescriptor::setOwnerProc ( int  proc)
inline
void NodeDescriptor::addBlockIndex ( unsigned  blk_idx)
inline
size_t NodeDescriptor::getNumBlocks ( ) const
inline
const std::vector<unsigned>& NodeDescriptor::getBlockIndexList ( ) const
inline
bool NodeDescriptor::hasBlockIndex ( unsigned  blk_idx) const
NodeDescriptor& NodeDescriptor::operator= ( const NodeDescriptor src)
private
void NodeDescriptor::allocFieldLists ( )
private
void NodeDescriptor::allocBlockList ( )
private

Member Data Documentation

GlobalID NodeDescriptor::nodeID_
private
int NodeDescriptor::nodeNumber_
private

Definition at line 111 of file fei_NodeDescriptor.hpp.

Referenced by getNodeNumber(), and setNodeNumber().

int NodeDescriptor::numNodalDOF_
private

Definition at line 113 of file fei_NodeDescriptor.hpp.

Referenced by getFieldID(), getNumNodalDOF(), and setNumNodalDOF().

int* NodeDescriptor::fieldIDList_
private
int* NodeDescriptor::fieldEqnNumbers_
private
int NodeDescriptor::numFields_
private
int NodeDescriptor::blkEqnNumber_
private

Definition at line 122 of file fei_NodeDescriptor.hpp.

Referenced by getBlkEqnNumber(), and setBlkEqnNumber().

int NodeDescriptor::ownerProc_
private

Definition at line 124 of file fei_NodeDescriptor.hpp.

Referenced by getOwnerProc(), and setOwnerProc().

std::vector<unsigned> NodeDescriptor::blockList_
private

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