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 | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
SNL_FEI_Structure Class Reference

#include <SNL_FEI_Structure.hpp>

Inheritance diagram for SNL_FEI_Structure:
Inheritance graph
[legend]

Public Member Functions

 SNL_FEI_Structure (MPI_Comm comm)
 
virtual ~SNL_FEI_Structure ()
 
int parameters (int numParams, const char *const *paramStrings)
 
int initFields (int numFields, const int *fieldSizes, const int *fieldIDs, const int *fieldTypes=NULL)
 
int initElemBlock (GlobalID elemBlockID, int numElements, int numNodesPerElement, const int *numFieldsPerNode, const int *const *nodalFieldIDs, int numElemDofFieldsPerElement, const int *elemDofFieldIDs, int interleaveStrategy)
 
int initElem (GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn)
 
int initSlaveVariable (GlobalID slaveNodeID, int slaveFieldID, int offsetIntoSlaveField, int numMasterNodes, const GlobalID *masterNodeIDs, const int *masterFieldIDs, const double *weights, double rhsValue)
 
int deleteMultCRs ()
 
int initSharedNodes (int numSharedNodes, const GlobalID *sharedNodeIDs, const int *numProcsPerNode, const int *const *sharingProcIDs)
 
int initCRMult (int numCRNodes, const GlobalID *CRNodes, const int *CRFields, int &CRID)
 
int initCRPen (int numCRNodes, const GlobalID *CRNodes, const int *CRFields, int &CRID)
 
int initComplete (bool generateGraph=true)
 
const std::vector< int > & getFieldIDs () const
 
const int * getFieldIDsPtr ()
 
const int * getFieldSizesPtr ()
 
int getNumFields ()
 
int getFieldSize (int fieldID)
 
fei::FieldDofMap< int > & getFieldDofMap ()
 
bool isInLocalElement (int nodeNumber)
 
const int * getNumFieldsPerNode (GlobalID blockID)
 
const int *const * getFieldIDsTable (GlobalID blockID)
 
int getEqnNumber (int nodeNumber, int fieldID)
 
int getOwnerProcForEqn (int eqn)
 
int getNumElemBlocks ()
 
const GlobalIDgetElemBlockIDs ()
 
void getElemBlockInfo (GlobalID blockID, int &interleaveStrategy, int &lumpingStrategy, int &numElemDOF, int &numElements, int &numNodesPerElem, int &numEqnsPerElem)
 
int addBlock (GlobalID blockID)
 
int getBlockDescriptor (GlobalID blockID, BlockDescriptor *&block)
 
int getBlockDescriptor_index (int index, BlockDescriptor *&block)
 
int getIndexOfBlock (GlobalID blockID) const
 
int getBlockID (unsigned index) const
 
int allocateBlockConnectivity (GlobalID blockID)
 
void destroyConnectivityTables ()
 
ConnectivityTablegetBlockConnectivity (GlobalID blockID)
 
void getScatterIndices_ID (GlobalID blockID, GlobalID elemID, int interleaveStrategy, int *scatterIndices)
 
void getScatterIndices_index (int blockIndex, int elemIndex, int interleaveStrategy, int *scatterIndices)
 
int getBlkScatterIndices_index (int blockIndex, int elemIndex, int *scatterIndices)
 
void getScatterIndices_ID (GlobalID blockID, GlobalID elemID, int interleaveStrategy, int *scatterIndices, int *blkScatterIndices, int *blkSizes)
 
void getScatterIndices_index (int blockIndex, int elemIndex, int interleaveStrategy, int *scatterIndices, int *blkScatterIndices, int *blkSizes)
 
int getNumSharedNodes ()
 
const int * getSharedNodeNumbers ()
 
const int * getSharedNodeProcs (int nodeNumber)
 
int getNumSharingProcs (int nodeNumber)
 
int getNumSubdomains (int nodeNumber)
 
int * getSubdomainList (int nodeNumber)
 
int translateToReducedNodeNumber (int nodeNumber, int proc)
 
int getAssociatedNodeNumber (int eqnNumber)
 
int getAssociatedFieldID (int eqnNumber)
 
bool isExactlyBlkEqn (int ptEqn)
 
int ptEqnToBlkEqn (int ptEqn)
 
int getOffsetIntoBlkEqn (int blkEqn, int ptEqn)
 
int getBlkEqnSize (int blkEqn)
 
int getNumActiveNodes ()
 
NodeDatabasegetNodeDatabase ()
 
std::map< GlobalID, int > & getActiveNodeIDList ()
 
std::vector< int > & getGlobalNodeOffsets ()
 
std::vector< int > & getGlobalEqnOffsets ()
 
std::vector< int > & getGlobalBlkEqnOffsets ()
 
NodeCommMgrgetNodeCommMgr ()
 
EqnCommMgrgetEqnCommMgr ()
 
void initializeEqnCommMgr ()
 
void getEqnInfo (int &numGlobalEqns, int &numLocalEqns, int &localStartRow, int &localEndRow)
 
int getEqnNumbers (GlobalID ID, int idType, int fieldID, int &numEqns, int *eqnNumbers)
 
int getEqnNumbers (int numIDs, const GlobalID *IDs, int idType, int fieldID, int &numEqns, int *eqnNumbers)
 
void getEqnBlkInfo (int &numGlobalEqnBlks, int &numLocalEqnBlks, int &localBlkOffset)
 
snl_fei::PointBlockMapgetBlkEqnMapper ()
 
void destroyMatIndices ()
 
int getNumMultConstRecords ()
 
std::map< GlobalID,
snl_fei::Constraint< GlobalID > * > & 
getMultConstRecords ()
 
int getMultConstRecord (int CRID, snl_fei::Constraint< GlobalID > *&multCR)
 
int getNumPenConstRecords ()
 
std::map< GlobalID,
snl_fei::Constraint< GlobalID > * > & 
getPenConstRecords ()
 
int getPenConstRecord (int CRID, snl_fei::Constraint< GlobalID > *&penCR)
 
void addSlaveVariable (SlaveVariable *svar)
 
int calculateSlaveEqns (MPI_Comm comm)
 
fei::FillableMatgetSlaveDependencies ()
 
EqnBuffergetSlaveEqns ()
 
int numSlaveEquations ()
 
bool isSlaveEqn (int eqn)
 
bool translateToReducedEqn (int eqn, int &reducedEqn)
 
int translateToReducedEqns (EqnCommMgr &eqnCommMgr)
 
int translateToReducedEqns (EqnBuffer &eqnBuf)
 
int translateToReducedEqns (ProcEqns &procEqns)
 
int translateMatToReducedEqns (fei::CSRMat &mat)
 
int translateFromReducedEqn (int reducedEqn)
 
int getMasterEqnNumbers (int slaveEqn, std::vector< int > *&masterEqns)
 
int getMasterEqnCoefs (int slaveEqn, std::vector< double > *&masterCoefs)
 
int getMasterEqnRHS (int slaveEqn, double &rhsValue)
 
int getNumGlobalEqns ()
 
int getNumLocalEqns ()
 
int getFirstLocalEqn ()
 
int getLastLocalEqn ()
 
int getFirstReducedEqn ()
 
int getLastReducedEqn ()
 
int getNumGlobalEqnBlks ()
 
int getNumLocalEqnBlks ()
 
int getNumLocalReducedEqnBlks ()
 
int getGlobalMaxBlkSize ()
 
int getNumLocalReducedEqns ()
 
int getMatrixRowLengths (std::vector< int > &rowLengths)
 
int getMatrixStructure (int **colIndices, std::vector< int > &rowLengths)
 
int getMatrixStructure (int **ptColIndices, std::vector< int > &ptRowLengths, int **blkColIndices, int *blkIndices_1D, std::vector< int > &blkRowLengths, std::vector< int > &numPtRowsPerBlkRow)
 
int calcTotalNumElemDOF ()
 
int calcNumMultCREqns ()
 
MPI_Comm getCommunicator () const
 
int setDbgOut (std::ostream &ostr, const char *path, const char *feiName)
 
- Public Member Functions inherited from Lookup
virtual ~Lookup ()
 

Static Public Member Functions

static int gatherSlaveEqns (MPI_Comm comm, EqnCommMgr *eqnCommMgr, EqnBuffer *slaveEqns)
 
static int removeCouplings (EqnBuffer &eqnbuf, int &levelsOfCoupling)
 

Private Member Functions

NodeDescriptorfindNode (GlobalID nodeID)
 
NodeDescriptorfindNodeDescriptor (GlobalID nodeID)
 
int writeEqn2NodeMap ()
 
int getElemNodeDescriptors (int blockIndex, int elemIndex, NodeDescriptor **nodes)
 
int getNodeIndices_simple (NodeDescriptor **nodes, int numNodes, int fieldID, int *scatterIndices, int &offset)
 
int getNodeIndices_simple (NodeDescriptor **nodes, int numNodes, int fieldID, int *scatterIndices, int &offset, int *blkScatterIndices, int *blkSizes, int &blkOffset)
 
int getNodeMajorIndices (NodeDescriptor **nodes, int numNodes, int **fieldIDs, int *fieldsPerNode, int *scatterIndices, int &offset)
 
int getNodeBlkIndices (NodeDescriptor **nodes, int numNodes, int *scatterIndices, int &offset)
 
int getNodeMajorIndices (NodeDescriptor **nodes, int numNodes, int **fieldIDs, int *fieldsPerNode, int *scatterIndices, int &offset, int *blkScatterIndices, int *blkSizes, int &blkOffset)
 
int getNodeMajorIndices (NodeDescriptor **nodes, int numNodes, std::vector< int > *fieldIDs, std::vector< int > &fieldsPerNode, std::vector< int > &scatterIndices)
 
int getFieldMajorIndices (NodeDescriptor **nodes, int numNodes, int **fieldIDs, int *fieldsPerNode, int *scatterIndices, int &offset)
 
int getFieldMajorIndices (NodeDescriptor **nodes, int numNodes, std::vector< int > *fieldIDs, std::vector< int > &fieldsPerNode, std::vector< int > &scatterIndices)
 
void calcGlobalEqnInfo (int numLocallyOwnedNodes, int numLocalEqns, int numLocalEqnBlks)
 
int finalizeActiveNodes ()
 
int finalizeNodeCommMgr ()
 
bool activeNodesInitialized ()
 
int formMatrixStructure ()
 
int initElemBlockStructure ()
 
int initMultCRStructure ()
 
int initPenCRStructure ()
 
int createMatrixPosition (int row, int col, const char *callingFunction)
 
int createMatrixPositions (int row, int numCols, int *cols, const char *callingFunction)
 
int createMatrixPositions (fei::CSRMat &mat)
 
int createSymmEqnStructure (std::vector< int > &scatterIndices)
 
int createBlkSymmEqnStructure (std::vector< int > &scatterIndices)
 
int storeElementScatterIndices (std::vector< int > &scatterIndices)
 
int storeElementScatterIndices_noSlaves (std::vector< int > &scatterIndices)
 
int storeElementScatterBlkIndices_noSlaves (std::vector< int > &scatterIndices)
 
void storeLocalNodeIndices (NodeDescriptor &iNode, int iField, NodeDescriptor &jNode, int jField)
 
void storeNodalColumnIndices (int eqn, NodeDescriptor &node, int fieldID)
 
void storeNodalRowIndices (NodeDescriptor &node, int fieldID, int eqn)
 
void storeNodalSendIndex (NodeDescriptor &node, int fieldID, int col)
 
void storeNodalSendIndices (NodeDescriptor &iNode, int iField, NodeDescriptor &jNode, int jField)
 
int assembleReducedStructure ()
 
bool nodalEqnsAllSlaves (const NodeDescriptor *node, std::vector< int > &slaveEqns)
 
int initializeBlkEqnMapper ()
 
int setNumNodesAndEqnsPerBlock ()
 
void destroyBlockRoster ()
 
std::ostream & dbgOut ()
 
void addCR (int CRID, snl_fei::Constraint< GlobalID > *&cr, std::map< GlobalID, snl_fei::Constraint< GlobalID > * > &crDB)
 
int setNodalEqnInfo ()
 
void setElemDOFEqnInfo ()
 
int setMultCREqnInfo ()
 
 SNL_FEI_Structure (const SNL_FEI_Structure &src)
 
SNL_FEI_Structureoperator= (const SNL_FEI_Structure &src)
 

Private Attributes

MPI_Comm comm_
 
int localProc_
 
int masterProc_
 
int numProcs_
 
std::vector< int > fieldIDs_
 
std::vector< int > fieldSizes_
 
std::map< int, int > * fieldDatabase_
 
fei::FieldDofMap< int > fieldDofMap_
 
std::vector< int > workarray_
 
std::vector< GlobalIDblockIDs_
 
std::vector< BlockDescriptor * > blocks_
 
std::vector< ConnectivityTable * > connTables_
 
NodeDatabasenodeDatabase_
 
bool activeNodesInitialized_
 
std::vector< int > globalNodeOffsets_
 
std::vector< int > globalEqnOffsets_
 
std::vector< int > globalBlkEqnOffsets_
 
std::vector< SlaveVariable * > * slaveVars_
 
EqnBufferslaveEqns_
 
std::vector< int > * slvEqnNumbers_
 
int numSlvs_
 
int lowestSlv_
 
int highestSlv_
 
fei::FillableMatslaveMatrix_
 
std::vector< int > globalNumNodesVanished_
 
std::vector< int > localVanishedNodeNumbers_
 
NodeCommMgrnodeCommMgr_
 
EqnCommMgreqnCommMgr_
 
EqnCommMgrslvCommMgr_
 
int numGlobalEqns_
 
int numLocalEqns_
 
int localStartRow_
 
int localEndRow_
 
int numLocalNodalEqns_
 
int numLocalElemDOF_
 
int numLocalMultCRs_
 
int reducedStartRow_
 
int reducedEndRow_
 
int numLocalReducedRows_
 
fei::FillableMatKid_
 
fei::FillableMatKdi_
 
fei::FillableMatKdd_
 
fei::CSRMat csrD
 
fei::CSRMat csrKid
 
fei::CSRMat csrKdi
 
fei::CSRMat csrKdd
 
fei::CSRMat tmpMat1_
 
fei::CSRMat tmpMat2_
 
int reducedEqnCounter_
 
int reducedRHSCounter_
 
std::vector< int > rSlave_
 
std::vector< int > cSlave_
 
std::vector< NodeDescriptor * > work_nodePtrs_
 
bool structureFinalized_
 
bool generateGraph_
 
fei::ctg_set< int > * sysMatIndices_
 
bool blockMatrix_
 
int numGlobalEqnBlks_
 
int numLocalEqnBlks_
 
int numLocalReducedEqnBlks_
 
int localBlkOffset_
 
int localReducedBlkOffset_
 
int globalMaxBlkSize_
 
int firstLocalNodeNumber_
 
int numGlobalNodes_
 
fei::ctg_set< int > * sysBlkMatIndices_
 
bool matIndicesDestroyed_
 
std::vector< int > workSpace_
 
snl_fei::PointBlockMapblkEqnMapper_
 
std::map< GlobalID,
snl_fei::Constraint< GlobalID > * > 
multCRs_
 
std::map< GlobalID,
snl_fei::Constraint< GlobalID > * > 
penCRs_
 
bool checkSharedNodes_
 
std::string name_
 
int outputLevel_
 
bool debugOutput_
 
std::string dbgPath_
 
std::ostream * dbgOStreamPtr_
 
bool setDbgOutCalled_
 

Detailed Description

The SNL_FEI_Structure class is a container for the data that makes up the structure of a finite element problem. It contains things like the FieldDatabase, NodeDatabase, ConnectivityTable, etc.

This class is the primary class that implements the general "FEI initialization phase", where the user passes all structure-defining data, which ends up being translated into a corresponding sparse matrix structure.

The problem structure is initialized gradually by calling the 'init' functions in this class. They also exist in the FEI class, where they are documented.

Once all structure-defining data has been passed, the process is completed by calling the initComplete function.

Definition at line 43 of file SNL_FEI_Structure.hpp.

Constructor & Destructor Documentation

SNL_FEI_Structure::SNL_FEI_Structure ( MPI_Comm  comm)

Constructor.

Parameters
commMPI_Communicator
nameString by which this structure instance may be referred to.
debugOutputLevelDetermines whether this object will produce a file containing a log of debug output information.
pathIf debugOutputLevel is not zero, the debug log file will be placed in the location specified by path.

Definition at line 49 of file SNL_FEI_Structure.cpp.

References comm_, eqnCommMgr_, fieldDatabase_, Kdd_, Kdi_, Kid_, fei::localProc(), localProc_, masterProc_, nodeCommMgr_, nodeDatabase_, fei::numProcs(), numProcs_, EqnCommMgr::setNumRHSs(), slaveEqns_, and slaveVars_.

SNL_FEI_Structure::~SNL_FEI_Structure ( )
virtual
SNL_FEI_Structure::SNL_FEI_Structure ( const SNL_FEI_Structure src)
private

Member Function Documentation

int SNL_FEI_Structure::parameters ( int  numParams,
const char *const *  paramStrings 
)

Set parameters on this object. Currently three parameters are recognized: "debugOutput 'path'" where 'path' is the path to the location where debug-log files will be produced.
"debugOutputOff" which will turn off debug-output.
"checkSharedNodes" which specifies that a 'sanity-check' should be done to make sure that the shared-node information is globally consistent, before any communication is attempted which depends on the consistency of that information.
"sharedNodeOwnership <string>" where <string> can be either LowNumberedProc or ProcWithLocalElem. LowNumberedProc specifies that the lowest-numbered sharing processor will be the owner of shared nodes, while ProcWithLocalElem specifies that ownership will be given to the proc with a local element containing the shared node, if not all sharing procs have local elements containing the shared node.

Definition at line 147 of file SNL_FEI_Structure.cpp.

References NodeCommMgr::CALLER_SPECIFIES, checkSharedNodes_, debugOutput_, FEI_ISTRINGSTREAM, snl_fei::getParam(), snl_fei::getParamValue(), nodeCommMgr_, outputLevel_, NodeCommMgr::PROC_WITH_LOCAL_ELEM, NodeCommMgr::setSharedOwnershipRule(), and NodeCommMgr::STRICTLY_LOW_PROC.

Referenced by FEI_Implementation::parameters().

int SNL_FEI_Structure::initFields ( int  numFields,
const int *  fieldSizes,
const int *  fieldIDs,
const int *  fieldTypes = NULL 
)
int SNL_FEI_Structure::initElemBlock ( GlobalID  elemBlockID,
int  numElements,
int  numNodesPerElement,
const int *  numFieldsPerNode,
const int *const *  nodalFieldIDs,
int  numElemDofFieldsPerElement,
const int *  elemDofFieldIDs,
int  interleaveStrategy 
)
int SNL_FEI_Structure::initElem ( GlobalID  elemBlockID,
GlobalID  elemID,
const GlobalID elemConn 
)
int SNL_FEI_Structure::initSlaveVariable ( GlobalID  slaveNodeID,
int  slaveFieldID,
int  offsetIntoSlaveField,
int  numMasterNodes,
const GlobalID masterNodeIDs,
const int *  masterFieldIDs,
const double *  weights,
double  rhsValue 
)
int SNL_FEI_Structure::deleteMultCRs ( )

Definition at line 657 of file SNL_FEI_Structure.cpp.

References fei::destroyValues(), and multCRs_.

Referenced by FEI_Implementation::deleteMultCRs(), and ~SNL_FEI_Structure().

int SNL_FEI_Structure::initSharedNodes ( int  numSharedNodes,
const GlobalID sharedNodeIDs,
const int *  numProcsPerNode,
const int *const *  sharingProcIDs 
)
int SNL_FEI_Structure::initCRMult ( int  numCRNodes,
const GlobalID CRNodes,
const int *  CRFields,
int &  CRID 
)
int SNL_FEI_Structure::initCRPen ( int  numCRNodes,
const GlobalID CRNodes,
const int *  CRFields,
int &  CRID 
)
int SNL_FEI_Structure::initComplete ( bool  generateGraph = true)
const std::vector<int>& SNL_FEI_Structure::getFieldIDs ( ) const
inline

Definition at line 122 of file SNL_FEI_Structure.hpp.

References fieldIDs_.

Referenced by Filter::calculateResidualNorms().

const int* SNL_FEI_Structure::getFieldIDsPtr ( )
inlinevirtual

implementation of Lookup::getFieldIDsPtr

Implements Lookup.

Definition at line 126 of file SNL_FEI_Structure.hpp.

References fieldDatabase_, and workarray_.

Referenced by initializeBlkEqnMapper(), and FEDataFilter::residualNorm().

const int* SNL_FEI_Structure::getFieldSizesPtr ( )
inlinevirtual

implementation of Lookup::getFieldSizesPtr

Implements Lookup.

Definition at line 137 of file SNL_FEI_Structure.hpp.

References fieldDatabase_, and workarray_.

int SNL_FEI_Structure::getNumFields ( )
inlinevirtual

implementation of Lookup::getNumFields

Implements Lookup.

Definition at line 148 of file SNL_FEI_Structure.hpp.

References fieldDatabase_.

Referenced by FEDataFilter::residualNorm().

int SNL_FEI_Structure::getFieldSize ( int  fieldID)
inlinevirtual

implementation of Lookup::getFieldSize

Implements Lookup.

Definition at line 151 of file SNL_FEI_Structure.hpp.

References fieldDatabase_.

Referenced by Filter::calculateResidualNorms(), calculateSlaveEqns(), FEDataFilter::generalElemInput(), FEDataFilter::getBlockFieldNodeSolution(), LinSysCoreFilter::getBlockFieldNodeSolution(), FEDataFilter::getBlockNodeSolution(), LinSysCoreFilter::getBlockNodeSolution(), getEqnNumbers(), getFieldMajorIndices(), FEI_Implementation::getFieldSize(), FEDataFilter::getNodalFieldSolution(), LinSysCoreFilter::getNodalFieldSolution(), FEDataFilter::getNodalSolution(), LinSysCoreFilter::getNodalSolution(), getNodeIndices_simple(), getNodeMajorIndices(), initElemBlock(), initializeEqnCommMgr(), FEDataFilter::initLinSysCore(), LinSysCoreFilter::initLinSysCore(), initSlaveVariable(), LinSysCoreFilter::loadCRMult(), LinSysCoreFilter::loadCRPen(), FEDataFilter::loadFEDataMultCR(), FEDataFilter::loadFEDataPenCR(), FEDataFilter::loadNodeBCs(), LinSysCoreFilter::loadNodeBCs(), nodalEqnsAllSlaves(), FEDataFilter::putBlockFieldNodeSolution(), LinSysCoreFilter::putBlockFieldNodeSolution(), FEDataFilter::putBlockNodeSolution(), LinSysCoreFilter::putBlockNodeSolution(), FEDataFilter::putIntoRHS(), LinSysCoreFilter::putIntoRHS(), FEDataFilter::putNodalFieldData(), LinSysCoreFilter::putNodalFieldData(), FEDataFilter::putNodalFieldSolution(), LinSysCoreFilter::putNodalFieldSolution(), LinSysCoreFilter::resolveConflictingCRs(), setNodalEqnInfo(), setNumNodesAndEqnsPerBlock(), storeLocalNodeIndices(), storeNodalColumnIndices(), storeNodalRowIndices(), LinSysCoreFilter::storeNodalSendEqn(), storeNodalSendIndex(), storeNodalSendIndices(), FEDataFilter::sumIntoMatrixDiagonal(), FEDataFilter::sumIntoRHS(), LinSysCoreFilter::sumIntoRHS(), test_SNL_FEI_Structure::test1(), and writeEqn2NodeMap().

fei::FieldDofMap<int>& SNL_FEI_Structure::getFieldDofMap ( )
inline
bool SNL_FEI_Structure::isInLocalElement ( int  nodeNumber)
virtual
const int * SNL_FEI_Structure::getNumFieldsPerNode ( GlobalID  blockID)
virtual

Given a blockID, return a pointer to a list (of length numNodesPerElem) of numFieldsPerNode.

Parameters
blockIDidentifier of the elem-block in question

Implements Lookup.

Definition at line 277 of file SNL_FEI_Structure.cpp.

References BlockDescriptor::fieldsPerNodePtr(), and getBlockDescriptor().

const int *const * SNL_FEI_Structure::getFieldIDsTable ( GlobalID  blockID)
virtual

Given a blockID, return a pointer to a table, (num-rows == numNodesPerElem, row-length[i] == fieldsPerNode[i]) containing the fieldIDs at each node of elements in that element-block.

Parameters
blockIDidentifier of the elem-block in question

Implements Lookup.

Definition at line 287 of file SNL_FEI_Structure.cpp.

References BlockDescriptor::fieldIDsTablePtr(), and getBlockDescriptor().

int SNL_FEI_Structure::getEqnNumber ( int  nodeNumber,
int  fieldID 
)
virtual

Given a nodeNumber/fieldID pair, return the associated first equation- number.

Returns
eqnNumber

Implements Lookup.

Definition at line 322 of file SNL_FEI_Structure.cpp.

References CHK_ERR, fei::console_out(), ERReturn, FEI_ENDL, NodeDescriptor::getFieldEqnNumber(), NodeDatabase::getNodeWithNumber(), nodeDatabase_, and translateToReducedEqn().

int SNL_FEI_Structure::getOwnerProcForEqn ( int  eqn)

Given a global equation number, return the processor on which that equation resides.

Parameters
eqnGlobal 0-based equation number.
Returns
proc Owning processor. If eqn is out of range (less than 0 or greater than global-number-of-equations) then -1 is returned.

Definition at line 347 of file SNL_FEI_Structure.cpp.

References globalEqnOffsets_.

Referenced by calculateSlaveEqns(), createBlkSymmEqnStructure(), createSymmEqnStructure(), LinSysCoreFilter::getFromMatrix(), LinSysCoreFilter::getFromRHS(), storeElementScatterBlkIndices_noSlaves(), storeElementScatterIndices(), and storeElementScatterIndices_noSlaves().

int SNL_FEI_Structure::getNumElemBlocks ( )
inlinevirtual
const GlobalID* SNL_FEI_Structure::getElemBlockIDs ( )
inlinevirtual

Return a pointer to the list (of length numElemBlocks) containing the element-block identifiers for the (local) finite-element problem.

Implements Lookup.

Definition at line 188 of file SNL_FEI_Structure.hpp.

References blockIDs_.

void SNL_FEI_Structure::getElemBlockInfo ( GlobalID  blockID,
int &  interleaveStrategy,
int &  lumpingStrategy,
int &  numElemDOF,
int &  numElements,
int &  numNodesPerElem,
int &  numEqnsPerElem 
)
virtual

Given a blockID, provide several pieces of element-block information.

Parameters
interleaveStrategyelement-equation ordering: 0 => node-major, 1 => field-major
lumpingStrategyelement-matrices may be lumped if they're mass matrices, 0 => not lumped, 1 => lumped
numElemDOFnumber of element-dof at each element in this block
numElementsnumber of elements in this block
numNodesPerElemnumber of nodes connected to each element in this block
numEqnsPerElemnumber of scalar equations at each element in this block

Implements Lookup.

Definition at line 297 of file SNL_FEI_Structure.cpp.

References getBlockDescriptor(), BlockDescriptor::getInterleaveStrategy(), BlockDescriptor::getLumpingStrategy(), BlockDescriptor::getNumElemDOFPerElement(), BlockDescriptor::getNumElements(), BlockDescriptor::getNumEqnsPerElement(), and BlockDescriptor::getNumNodesPerElement().

int SNL_FEI_Structure::addBlock ( GlobalID  blockID)
int SNL_FEI_Structure::getBlockDescriptor ( GlobalID  blockID,
BlockDescriptor *&  block 
)
int SNL_FEI_Structure::getBlockDescriptor_index ( int  index,
BlockDescriptor *&  block 
)

Given an index, return the corresponding block-descriptor.

Returns
0 if successful, non-zero if index out of range, etc.

Definition at line 2854 of file SNL_FEI_Structure.cpp.

References blockIDs_, blocks_, ERReturn, FEI_FATAL_ERROR, and FEI_SUCCESS.

Referenced by FEDataFilter::allocElemStuff(), LinSysCoreFilter::allocElemStuff(), calcTotalNumElemDOF(), initElemBlockStructure(), initializeBlkEqnMapper(), FEDataFilter::initLinSysCore(), LinSysCoreFilter::initLinSysCore(), and setElemDOFEqnInfo().

int SNL_FEI_Structure::getIndexOfBlock ( GlobalID  blockID) const
int SNL_FEI_Structure::getBlockID ( unsigned  index) const
inline

Given an index, return a blockID. Returns -1 if index out of range.

Definition at line 207 of file SNL_FEI_Structure.hpp.

References blockIDs_.

Referenced by NodeCommMgr::packLocalNodesAndData(), and NodeCommMgr::packRemoteNodesAndData().

int SNL_FEI_Structure::allocateBlockConnectivity ( GlobalID  blockID)
void SNL_FEI_Structure::destroyConnectivityTables ( )

Definition at line 254 of file SNL_FEI_Structure.cpp.

References blockIDs_, and connTables_.

Referenced by ~SNL_FEI_Structure().

ConnectivityTable & SNL_FEI_Structure::getBlockConnectivity ( GlobalID  blockID)
void SNL_FEI_Structure::getScatterIndices_ID ( GlobalID  blockID,
GlobalID  elemID,
int  interleaveStrategy,
int *  scatterIndices 
)
void SNL_FEI_Structure::getScatterIndices_index ( int  blockIndex,
int  elemIndex,
int  interleaveStrategy,
int *  scatterIndices 
)
int SNL_FEI_Structure::getBlkScatterIndices_index ( int  blockIndex,
int  elemIndex,
int *  scatterIndices 
)
void SNL_FEI_Structure::getScatterIndices_ID ( GlobalID  blockID,
GlobalID  elemID,
int  interleaveStrategy,
int *  scatterIndices,
int *  blkScatterIndices,
int *  blkSizes 
)
void SNL_FEI_Structure::getScatterIndices_index ( int  blockIndex,
int  elemIndex,
int  interleaveStrategy,
int *  scatterIndices,
int *  blkScatterIndices,
int *  blkSizes 
)
int SNL_FEI_Structure::getNumSharedNodes ( )
inlinevirtual

Return the number of local nodes that are shared by multiple processors

Implements Lookup.

Definition at line 246 of file SNL_FEI_Structure.hpp.

References NodeCommMgr::getNumSharedNodes(), and nodeCommMgr_.

const int* SNL_FEI_Structure::getSharedNodeNumbers ( )
inlinevirtual

Return a pointer to the list of shared nodeNumbers

Implements Lookup.

Definition at line 248 of file SNL_FEI_Structure.hpp.

References NodeCommMgr::getSharedNodeNumbers(), and nodeCommMgr_.

const int* SNL_FEI_Structure::getSharedNodeProcs ( int  nodeNumber)
inlinevirtual

Given a shared nodeNumber, return a pointer to the list of sharing procs.

Parameters
nodeNumberThe subject of the query. Function returns NULL if 'nodeNumber' is not a shared node.

Implements Lookup.

Definition at line 252 of file SNL_FEI_Structure.hpp.

References NodeCommMgr::getSharedNodeIndex_num(), NodeCommMgr::getSharedNodeProcs(), and nodeCommMgr_.

int SNL_FEI_Structure::getNumSharingProcs ( int  nodeNumber)
inlinevirtual

Given a shared nodeNumber, return the number of processors that share it.

Parameters
nodeNumberFunction returns -1 if 'nodeNumber' is not a shared node.

Implements Lookup.

Definition at line 258 of file SNL_FEI_Structure.hpp.

References NodeCommMgr::getSharedNodeIndex_num(), NodeCommMgr::getSharedNodeProcs(), and nodeCommMgr_.

int SNL_FEI_Structure::getNumSubdomains ( int  nodeNumber)
inlinevirtual

Given a nodeNumber, return the number of subdomains that contain this node. subdomains correspond to processors. The number of subdomains that contain a node does not always equal the number of processors that share a node. There are two kinds of "sharing" – the "normal" kind, where a node is shared because it is connected to elements that reside on more than one processor, and the "wierd" kind where nodes are considered shared simply because of being in cross-processor constraints. This function describes how many processors share this node in the "normal" sense. Thus, in general, this relationship holds: getNumSubdomains(nodeNum) <= getNumSharingProcs(nodeNum)

Parameters
nodeNumber
Returns
numSubdomains

Implements Lookup.

Definition at line 264 of file SNL_FEI_Structure.hpp.

References NodeDescriptor::getGlobalNodeID(), NodeDatabase::getNodeWithNumber(), NodeCommMgr::getSharedNodeNumSubdomains(), nodeCommMgr_, and nodeDatabase_.

int* SNL_FEI_Structure::getSubdomainList ( int  nodeNumber)
inlinevirtual

Given a nodeNumber, return a list of the subdomains that contain this node. This is the list of subdomains that's counted by the method 'getNumSubdomains' above.

Parameters
nodeNumber
Returns
pointer to list of subdomains (processor ranks). NULL if the specified nodeNumber is not found.

Implements Lookup.

Definition at line 272 of file SNL_FEI_Structure.hpp.

References NodeDescriptor::getGlobalNodeID(), NodeDatabase::getNodeWithNumber(), NodeCommMgr::getSharedNodeSubdomainList(), nodeCommMgr_, and nodeDatabase_.

int SNL_FEI_Structure::translateToReducedNodeNumber ( int  nodeNumber,
int  proc 
)
int SNL_FEI_Structure::getAssociatedNodeNumber ( int  eqnNumber)
inlinevirtual
int SNL_FEI_Structure::getAssociatedFieldID ( int  eqnNumber)
inlinevirtual
bool SNL_FEI_Structure::isExactlyBlkEqn ( int  ptEqn)
inlinevirtual

Query whether a pt-eqn corresponds exactly to a blk-eqn. in other words, is pt-eqn the first point equation in a block-equation.

Parameters
ptEqn

Implements Lookup.

Definition at line 308 of file SNL_FEI_Structure.hpp.

References blkEqnMapper_, and snl_fei::PointBlockMap::isExactlyBlkEqn().

int SNL_FEI_Structure::ptEqnToBlkEqn ( int  ptEqn)
inlinevirtual

Given a pt-eqn, return the corresponding blk-eqn.

Parameters
ptEqn

Implements Lookup.

Definition at line 312 of file SNL_FEI_Structure.hpp.

References blkEqnMapper_, and snl_fei::PointBlockMap::eqnToBlkEqn().

Referenced by initComplete().

int SNL_FEI_Structure::getOffsetIntoBlkEqn ( int  blkEqn,
int  ptEqn 
)
inlinevirtual

Given a blk-eqn and a pt-eqn, return the pt-eqn's offset into the blk-eqn (i.e., distance from the 'beginning' of the blk-eqn)

Parameters
blkEqn
ptEqn

Implements Lookup.

Definition at line 316 of file SNL_FEI_Structure.hpp.

References blkEqnMapper_, and snl_fei::PointBlockMap::getBlkEqnOffset().

int SNL_FEI_Structure::getBlkEqnSize ( int  blkEqn)
inlinevirtual

Given a blk-eqn, return the 'size', or number of pt-eqns corresponding to it.

Parameters
blkEqn

Implements Lookup.

Definition at line 320 of file SNL_FEI_Structure.hpp.

References blkEqnMapper_, and snl_fei::PointBlockMap::getBlkEqnSize().

int SNL_FEI_Structure::getNumActiveNodes ( )
inline
NodeDatabase& SNL_FEI_Structure::getNodeDatabase ( )
inline
std::map<GlobalID,int>& SNL_FEI_Structure::getActiveNodeIDList ( )
inline

Definition at line 330 of file SNL_FEI_Structure.hpp.

References NodeDatabase::getNodeIDs(), and nodeDatabase_.

std::vector<int>& SNL_FEI_Structure::getGlobalNodeOffsets ( )
inline
std::vector<int>& SNL_FEI_Structure::getGlobalEqnOffsets ( )
inline
std::vector<int>& SNL_FEI_Structure::getGlobalBlkEqnOffsets ( )
inline

Definition at line 335 of file SNL_FEI_Structure.hpp.

References globalBlkEqnOffsets_.

Referenced by LinSysCoreFilter::initLinSysCore().

NodeCommMgr& SNL_FEI_Structure::getNodeCommMgr ( )
inline
EqnCommMgr& SNL_FEI_Structure::getEqnCommMgr ( )
inline
void SNL_FEI_Structure::initializeEqnCommMgr ( )
void SNL_FEI_Structure::getEqnInfo ( int &  numGlobalEqns,
int &  numLocalEqns,
int &  localStartRow,
int &  localEndRow 
)

Definition at line 3207 of file SNL_FEI_Structure.cpp.

References localEndRow_, localStartRow_, numGlobalEqns_, and numLocalEqns_.

int SNL_FEI_Structure::getEqnNumbers ( GlobalID  ID,
int  idType,
int  fieldID,
int &  numEqns,
int *  eqnNumbers 
)
int SNL_FEI_Structure::getEqnNumbers ( int  numIDs,
const GlobalID IDs,
int  idType,
int  fieldID,
int &  numEqns,
int *  eqnNumbers 
)
void SNL_FEI_Structure::getEqnBlkInfo ( int &  numGlobalEqnBlks,
int &  numLocalEqnBlks,
int &  localBlkOffset 
)

Definition at line 3307 of file SNL_FEI_Structure.cpp.

References localBlkOffset_, numGlobalEqnBlks_, and numLocalEqnBlks_.

snl_fei::PointBlockMap& SNL_FEI_Structure::getBlkEqnMapper ( )
inline

Definition at line 355 of file SNL_FEI_Structure.hpp.

References blkEqnMapper_.

Referenced by initializeBlkEqnMapper().

void SNL_FEI_Structure::destroyMatIndices ( )
int SNL_FEI_Structure::getNumMultConstRecords ( )
inline
std::map<GlobalID,snl_fei::Constraint<GlobalID>*>& SNL_FEI_Structure::getMultConstRecords ( )
inline
int SNL_FEI_Structure::getMultConstRecord ( int  CRID,
snl_fei::Constraint< GlobalID > *&  multCR 
)
inline
int SNL_FEI_Structure::getNumPenConstRecords ( )
inline

Definition at line 378 of file SNL_FEI_Structure.hpp.

References penCRs_.

Referenced by FEDataFilter::initLinSysCore().

std::map<GlobalID,snl_fei::Constraint<GlobalID>*>& SNL_FEI_Structure::getPenConstRecords ( )
inline
int SNL_FEI_Structure::getPenConstRecord ( int  CRID,
snl_fei::Constraint< GlobalID > *&  penCR 
)
inline

Definition at line 383 of file SNL_FEI_Structure.hpp.

References penCRs_.

Referenced by LinSysCoreFilter::loadCRPen().

void SNL_FEI_Structure::addSlaveVariable ( SlaveVariable svar)
inline

Definition at line 396 of file SNL_FEI_Structure.hpp.

References slaveVars_.

Referenced by initSlaveVariable().

int SNL_FEI_Structure::calculateSlaveEqns ( MPI_Comm  comm)
fei::FillableMat* SNL_FEI_Structure::getSlaveDependencies ( )
inline
EqnBuffer* SNL_FEI_Structure::getSlaveEqns ( )
inline

Definition at line 402 of file SNL_FEI_Structure.hpp.

References slaveEqns_.

int SNL_FEI_Structure::numSlaveEquations ( )
inline
bool SNL_FEI_Structure::isSlaveEqn ( int  eqn)
bool SNL_FEI_Structure::translateToReducedEqn ( int  eqn,
int &  reducedEqn 
)

Given a "global" equation number, return the corresponding equation number in the "reduced" equation space. This is a trivial one-to-one mapping unless there are slave equations. If there are slave equations, then the number of 'reduced' equations is reduced by num-slave-eqns, and any particular global equation number is reduced by the number of slave equations that are smaller than it.

Returns
true if eqn is a slave-equation, false otherwise.

Definition at line 3657 of file SNL_FEI_Structure.cpp.

References fei::binarySearch(), highestSlv_, lowestSlv_, numSlvs_, and slvEqnNumbers_.

Referenced by Filter::calculateResidualNorms(), calculateSlaveEqns(), createBlkSymmEqnStructure(), createSymmEqnStructure(), LinSysCoreFilter::enforceEssentialBCs(), LinSysCoreFilter::exchangeRemoteBCs(), getEqnNumber(), LinSysCoreFilter::getEqnsFromRHS(), LinSysCoreFilter::getEqnSolnEntry(), LinSysCoreFilter::giveToMatrix(), initComplete(), initializeBlkEqnMapper(), initializeEqnCommMgr(), LinSysCoreFilter::initLinSysCore(), initMultCRStructure(), FEDataFilter::putBlockFieldNodeSolution(), LinSysCoreFilter::putBlockFieldNodeSolution(), LinSysCoreFilter::putNodalFieldSolution(), storeElementScatterIndices(), storeLocalNodeIndices(), storeNodalColumnIndices(), storeNodalRowIndices(), translateMatToReducedEqns(), and translateToReducedEqns().

int SNL_FEI_Structure::translateToReducedEqns ( EqnCommMgr eqnCommMgr)

Given an EqnCommMgr object with global equation numbers, translate all of its indices (row-numbers and column-indices) to the "reduced" equation space.

Definition at line 2096 of file SNL_FEI_Structure.cpp.

References CHK_ERR, EqnCommMgr::getRecvEqns(), EqnCommMgr::getRecvProcEqns(), EqnCommMgr::getSendEqns(), EqnCommMgr::getSendProcEqns(), and numSlvs_.

int SNL_FEI_Structure::translateToReducedEqns ( EqnBuffer eqnBuf)

Given an EqnBuffer object with global equation numbers, translate all of its indices (row-numbers and column-indices) to the "reduced" equation space.

Definition at line 2109 of file SNL_FEI_Structure.cpp.

References EqnBuffer::eqnNumbers(), EqnBuffer::eqns(), EqnBuffer::getNumEqns(), and translateToReducedEqn().

int SNL_FEI_Structure::translateToReducedEqns ( ProcEqns procEqns)

Given a ProcEqns object with global equation numbers, translate all of its indices (row-numbers and column-indices) to the "reduced" equation space.

Definition at line 2131 of file SNL_FEI_Structure.cpp.

References ProcEqns::procEqnNumbersPtr(), and translateToReducedEqn().

int SNL_FEI_Structure::translateMatToReducedEqns ( fei::CSRMat mat)

Given a CSRMat object with global equation numbers, translate all of its indices (row-numbers and column-indices) to the "reduced" equation space.

Definition at line 2149 of file SNL_FEI_Structure.cpp.

References fei::CSRMat::getGraph(), fei::SparseRowGraph::packedColumnIndices, fei::SparseRowGraph::rowNumbers, and translateToReducedEqn().

Referenced by assembleReducedStructure().

int SNL_FEI_Structure::translateFromReducedEqn ( int  reducedEqn)

Given an "Reduced" equation number, translate it to the "global" numbering, which is the numbering that includes slave equations. This is the inverse of the 'translateToReducedEqn' function above.

Returns
eqn

Definition at line 3680 of file SNL_FEI_Structure.cpp.

References EqnBuffer::eqnNumbers(), EqnBuffer::getNumEqns(), and slaveEqns_.

Referenced by getAssociatedFieldID(), getAssociatedNodeNumber(), and FEDataFilter::getReducedSolnEntry().

int SNL_FEI_Structure::getMasterEqnNumbers ( int  slaveEqn,
std::vector< int > *&  masterEqns 
)

Given a slave equation, fill a std::vector with the equation-numbers upon which the slave depends.

Parameters
slaveEqn
masterEqnsOutput. NULL if slaveEqn is not a slave equation.
Returns
error-code

Definition at line 3701 of file SNL_FEI_Structure.cpp.

References fei::binarySearch(), EqnBuffer::eqnNumbers(), EqnBuffer::eqns(), EqnBuffer::getNumEqns(), and slaveEqns_.

Referenced by LinSysCoreFilter::getEqnSolnEntry().

int SNL_FEI_Structure::getMasterEqnCoefs ( int  slaveEqn,
std::vector< double > *&  masterCoefs 
)

Given a slave equation, fill a std::vector with the coefficients of the equations upon which the slave depends.

Parameters
slaveEqn
masterCoefsOutput. NULL if slaveEqn is not a slave equation.
Returns
error-code

Definition at line 3724 of file SNL_FEI_Structure.cpp.

References fei::binarySearch(), EqnBuffer::eqnNumbers(), EqnBuffer::eqns(), EqnBuffer::getNumEqns(), and slaveEqns_.

Referenced by LinSysCoreFilter::getEqnSolnEntry().

int SNL_FEI_Structure::getMasterEqnRHS ( int  slaveEqn,
double &  rhsValue 
)

Given a slave equation, provide the rhs-value associated with the master equation that the slave is defined by.

Parameters
slaveEqn
rhsValueOutput. Not referenced if slaveEqn is not a slave equation.
Returns
error-code 0 if successful, -1 if slaveEqn is not a slave.

Definition at line 3747 of file SNL_FEI_Structure.cpp.

References fei::binarySearch(), EqnBuffer::eqnNumbers(), EqnBuffer::getNumEqns(), EqnBuffer::rhsCoefsPtr(), and slaveEqns_.

Referenced by LinSysCoreFilter::getEqnSolnEntry().

int SNL_FEI_Structure::getNumGlobalEqns ( )
inline
int SNL_FEI_Structure::getNumLocalEqns ( )
inline
int SNL_FEI_Structure::getFirstLocalEqn ( )
inline

Definition at line 478 of file SNL_FEI_Structure.hpp.

References localStartRow_.

int SNL_FEI_Structure::getLastLocalEqn ( )
inline

Definition at line 479 of file SNL_FEI_Structure.hpp.

References localEndRow_.

int SNL_FEI_Structure::getFirstReducedEqn ( )
inline

Definition at line 481 of file SNL_FEI_Structure.hpp.

References reducedStartRow_.

Referenced by Filter::calculateResidualNorms().

int SNL_FEI_Structure::getLastReducedEqn ( )
inline

Definition at line 482 of file SNL_FEI_Structure.hpp.

References reducedEndRow_.

Referenced by Filter::calculateResidualNorms().

int SNL_FEI_Structure::getNumGlobalEqnBlks ( )
inline

Definition at line 484 of file SNL_FEI_Structure.hpp.

References numGlobalEqnBlks_.

int SNL_FEI_Structure::getNumLocalEqnBlks ( )
inline

Definition at line 485 of file SNL_FEI_Structure.hpp.

References numLocalEqnBlks_.

Referenced by LinSysCoreFilter::initialize().

int SNL_FEI_Structure::getNumLocalReducedEqnBlks ( )
inline

Definition at line 486 of file SNL_FEI_Structure.hpp.

References numLocalReducedEqnBlks_.

Referenced by LinSysCoreFilter::initialize().

int SNL_FEI_Structure::getGlobalMaxBlkSize ( )
inline

Definition at line 487 of file SNL_FEI_Structure.hpp.

References globalMaxBlkSize_.

Referenced by LinSysCoreFilter::initialize().

int SNL_FEI_Structure::getNumLocalReducedEqns ( )
inline

Definition at line 489 of file SNL_FEI_Structure.hpp.

References numLocalReducedRows_.

Referenced by LinSysCoreFilter::initialize().

int SNL_FEI_Structure::getMatrixRowLengths ( std::vector< int > &  rowLengths)
int SNL_FEI_Structure::getMatrixStructure ( int **  colIndices,
std::vector< int > &  rowLengths 
)
int SNL_FEI_Structure::getMatrixStructure ( int **  ptColIndices,
std::vector< int > &  ptRowLengths,
int **  blkColIndices,
int *  blkIndices_1D,
std::vector< int > &  blkRowLengths,
std::vector< int > &  numPtRowsPerBlkRow 
)
static int SNL_FEI_Structure::gatherSlaveEqns ( MPI_Comm  comm,
EqnCommMgr eqnCommMgr,
EqnBuffer slaveEqns 
)
static

Referenced by calculateSlaveEqns().

int SNL_FEI_Structure::removeCouplings ( EqnBuffer eqnbuf,
int &  levelsOfCoupling 
)
static
int SNL_FEI_Structure::calcTotalNumElemDOF ( )
int SNL_FEI_Structure::calcNumMultCREqns ( )

Definition at line 2569 of file SNL_FEI_Structure.cpp.

References getNumMultConstRecords().

Referenced by initComplete().

MPI_Comm SNL_FEI_Structure::getCommunicator ( ) const
inline

Definition at line 508 of file SNL_FEI_Structure.hpp.

References comm_.

Referenced by Filter::calculateResidualNorms().

int SNL_FEI_Structure::setDbgOut ( std::ostream &  ostr,
const char *  path,
const char *  feiName 
)
NodeDescriptor * SNL_FEI_Structure::findNode ( GlobalID  nodeID)
private

Return a pointer to a NodeDescriptor, may return NULL. The caller is responsible for checking for a NULL pointer and doing the right thing.

Definition at line 1369 of file SNL_FEI_Structure.cpp.

References NodeDatabase::getNodeWithID(), and nodeDatabase_.

Referenced by initMultCRStructure(), and initPenCRStructure().

NodeDescriptor & SNL_FEI_Structure::findNodeDescriptor ( GlobalID  nodeID)
private

Return a reference to a NodeDescriptor, will abort in debug with an error and seg-fault in optimized mode if a NodeDescriptor object is not found (i.e. it dereferences a NULL ptr).

Definition at line 1351 of file SNL_FEI_Structure.cpp.

References fei::console_out(), FEI_ENDL, NodeDatabase::getNodeWithID(), and nodeDatabase_.

int SNL_FEI_Structure::writeEqn2NodeMap ( )
private
int SNL_FEI_Structure::getElemNodeDescriptors ( int  blockIndex,
int  elemIndex,
NodeDescriptor **  nodes 
)
private
int SNL_FEI_Structure::getNodeIndices_simple ( NodeDescriptor **  nodes,
int  numNodes,
int  fieldID,
int *  scatterIndices,
int &  offset 
)
private
int SNL_FEI_Structure::getNodeIndices_simple ( NodeDescriptor **  nodes,
int  numNodes,
int  fieldID,
int *  scatterIndices,
int &  offset,
int *  blkScatterIndices,
int *  blkSizes,
int &  blkOffset 
)
private
int SNL_FEI_Structure::getNodeMajorIndices ( NodeDescriptor **  nodes,
int  numNodes,
int **  fieldIDs,
int *  fieldsPerNode,
int *  scatterIndices,
int &  offset 
)
private
int SNL_FEI_Structure::getNodeBlkIndices ( NodeDescriptor **  nodes,
int  numNodes,
int *  scatterIndices,
int &  offset 
)
private

Definition at line 4106 of file SNL_FEI_Structure.cpp.

References NodeDescriptor::getBlkEqnNumber().

Referenced by getBlkScatterIndices_index().

int SNL_FEI_Structure::getNodeMajorIndices ( NodeDescriptor **  nodes,
int  numNodes,
int **  fieldIDs,
int *  fieldsPerNode,
int *  scatterIndices,
int &  offset,
int *  blkScatterIndices,
int *  blkSizes,
int &  blkOffset 
)
private
int SNL_FEI_Structure::getNodeMajorIndices ( NodeDescriptor **  nodes,
int  numNodes,
std::vector< int > *  fieldIDs,
std::vector< int > &  fieldsPerNode,
std::vector< int > &  scatterIndices 
)
private
int SNL_FEI_Structure::getFieldMajorIndices ( NodeDescriptor **  nodes,
int  numNodes,
int **  fieldIDs,
int *  fieldsPerNode,
int *  scatterIndices,
int &  offset 
)
private
int SNL_FEI_Structure::getFieldMajorIndices ( NodeDescriptor **  nodes,
int  numNodes,
std::vector< int > *  fieldIDs,
std::vector< int > &  fieldsPerNode,
std::vector< int > &  scatterIndices 
)
private
void SNL_FEI_Structure::calcGlobalEqnInfo ( int  numLocallyOwnedNodes,
int  numLocalEqns,
int  numLocalEqnBlks 
)
private
int SNL_FEI_Structure::finalizeActiveNodes ( )
private
int SNL_FEI_Structure::finalizeNodeCommMgr ( )
private
bool SNL_FEI_Structure::activeNodesInitialized ( )
private
int SNL_FEI_Structure::formMatrixStructure ( )
private
int SNL_FEI_Structure::initElemBlockStructure ( )
private
int SNL_FEI_Structure::initMultCRStructure ( )
private
int SNL_FEI_Structure::initPenCRStructure ( )
private
int SNL_FEI_Structure::createMatrixPosition ( int  row,
int  col,
const char *  callingFunction 
)
private
int SNL_FEI_Structure::createMatrixPositions ( int  row,
int  numCols,
int *  cols,
const char *  callingFunction 
)
private
int SNL_FEI_Structure::createMatrixPositions ( fei::CSRMat mat)
private
int SNL_FEI_Structure::createSymmEqnStructure ( std::vector< int > &  scatterIndices)
private
int SNL_FEI_Structure::createBlkSymmEqnStructure ( std::vector< int > &  scatterIndices)
private
int SNL_FEI_Structure::storeElementScatterIndices ( std::vector< int > &  scatterIndices)
private
int SNL_FEI_Structure::storeElementScatterIndices_noSlaves ( std::vector< int > &  scatterIndices)
private
int SNL_FEI_Structure::storeElementScatterBlkIndices_noSlaves ( std::vector< int > &  scatterIndices)
private
void SNL_FEI_Structure::storeLocalNodeIndices ( NodeDescriptor iNode,
int  iField,
NodeDescriptor jNode,
int  jField 
)
private
void SNL_FEI_Structure::storeNodalColumnIndices ( int  eqn,
NodeDescriptor node,
int  fieldID 
)
private
void SNL_FEI_Structure::storeNodalRowIndices ( NodeDescriptor node,
int  fieldID,
int  eqn 
)
private
void SNL_FEI_Structure::storeNodalSendIndex ( NodeDescriptor node,
int  fieldID,
int  col 
)
private
void SNL_FEI_Structure::storeNodalSendIndices ( NodeDescriptor iNode,
int  iField,
NodeDescriptor jNode,
int  jField 
)
private
int SNL_FEI_Structure::assembleReducedStructure ( )
private
bool SNL_FEI_Structure::nodalEqnsAllSlaves ( const NodeDescriptor node,
std::vector< int > &  slaveEqns 
)
private
int SNL_FEI_Structure::initializeBlkEqnMapper ( )
private
int SNL_FEI_Structure::setNumNodesAndEqnsPerBlock ( )
private
void SNL_FEI_Structure::destroyBlockRoster ( )
private

Definition at line 247 of file SNL_FEI_Structure.cpp.

References blockIDs_, and blocks_.

Referenced by ~SNL_FEI_Structure().

std::ostream& SNL_FEI_Structure::dbgOut ( )
inlineprivate
void SNL_FEI_Structure::addCR ( int  CRID,
snl_fei::Constraint< GlobalID > *&  cr,
std::map< GlobalID, snl_fei::Constraint< GlobalID > * > &  crDB 
)
private

Definition at line 4357 of file SNL_FEI_Structure.cpp.

Referenced by initCRMult(), and initCRPen().

int SNL_FEI_Structure::setNodalEqnInfo ( )
private
void SNL_FEI_Structure::setElemDOFEqnInfo ( )
private
int SNL_FEI_Structure::setMultCREqnInfo ( )
private
SNL_FEI_Structure& SNL_FEI_Structure::operator= ( const SNL_FEI_Structure src)
private

Member Data Documentation

MPI_Comm SNL_FEI_Structure::comm_
private
int SNL_FEI_Structure::localProc_
private
int SNL_FEI_Structure::masterProc_
private

Definition at line 632 of file SNL_FEI_Structure.hpp.

Referenced by calcGlobalEqnInfo(), and SNL_FEI_Structure().

int SNL_FEI_Structure::numProcs_
private
std::vector<int> SNL_FEI_Structure::fieldIDs_
private

Definition at line 634 of file SNL_FEI_Structure.hpp.

Referenced by getFieldIDs(), and initFields().

std::vector<int> SNL_FEI_Structure::fieldSizes_
private

Definition at line 635 of file SNL_FEI_Structure.hpp.

Referenced by initFields().

std::map<int,int>* SNL_FEI_Structure::fieldDatabase_
private
fei::FieldDofMap<int> SNL_FEI_Structure::fieldDofMap_
private

Definition at line 637 of file SNL_FEI_Structure.hpp.

Referenced by getFieldDofMap(), and initFields().

std::vector<int> SNL_FEI_Structure::workarray_
private

Definition at line 638 of file SNL_FEI_Structure.hpp.

Referenced by getFieldIDsPtr(), and getFieldSizesPtr().

std::vector<GlobalID> SNL_FEI_Structure::blockIDs_
private
std::vector<BlockDescriptor*> SNL_FEI_Structure::blocks_
private
std::vector<ConnectivityTable*> SNL_FEI_Structure::connTables_
private
NodeDatabase* SNL_FEI_Structure::nodeDatabase_
private
bool SNL_FEI_Structure::activeNodesInitialized_
private
std::vector<int> SNL_FEI_Structure::globalNodeOffsets_
private
std::vector<int> SNL_FEI_Structure::globalEqnOffsets_
private
std::vector<int> SNL_FEI_Structure::globalBlkEqnOffsets_
private

Definition at line 650 of file SNL_FEI_Structure.hpp.

Referenced by calcGlobalEqnInfo(), and getGlobalBlkEqnOffsets().

std::vector<SlaveVariable*>* SNL_FEI_Structure::slaveVars_
private
EqnBuffer* SNL_FEI_Structure::slaveEqns_
private
std::vector<int>* SNL_FEI_Structure::slvEqnNumbers_
private

Definition at line 654 of file SNL_FEI_Structure.hpp.

Referenced by calculateSlaveEqns(), and translateToReducedEqn().

int SNL_FEI_Structure::numSlvs_
private
int SNL_FEI_Structure::lowestSlv_
private

Definition at line 655 of file SNL_FEI_Structure.hpp.

Referenced by calculateSlaveEqns(), and translateToReducedEqn().

int SNL_FEI_Structure::highestSlv_
private

Definition at line 655 of file SNL_FEI_Structure.hpp.

Referenced by calculateSlaveEqns(), and translateToReducedEqn().

fei::FillableMat* SNL_FEI_Structure::slaveMatrix_
private
std::vector<int> SNL_FEI_Structure::globalNumNodesVanished_
private
std::vector<int> SNL_FEI_Structure::localVanishedNodeNumbers_
private

Definition at line 658 of file SNL_FEI_Structure.hpp.

Referenced by calculateSlaveEqns(), and translateToReducedNodeNumber().

NodeCommMgr* SNL_FEI_Structure::nodeCommMgr_
private
EqnCommMgr* SNL_FEI_Structure::eqnCommMgr_
private
EqnCommMgr* SNL_FEI_Structure::slvCommMgr_
private

Definition at line 662 of file SNL_FEI_Structure.hpp.

Referenced by calculateSlaveEqns(), and initComplete().

int SNL_FEI_Structure::numGlobalEqns_
private

Definition at line 664 of file SNL_FEI_Structure.hpp.

Referenced by calcGlobalEqnInfo(), getEqnInfo(), and getNumGlobalEqns().

int SNL_FEI_Structure::numLocalEqns_
private

Definition at line 665 of file SNL_FEI_Structure.hpp.

Referenced by getEqnInfo(), getNumLocalEqns(), and initComplete().

int SNL_FEI_Structure::localStartRow_
private
int SNL_FEI_Structure::localEndRow_
private
int SNL_FEI_Structure::numLocalNodalEqns_
private
int SNL_FEI_Structure::numLocalElemDOF_
private

Definition at line 670 of file SNL_FEI_Structure.hpp.

Referenced by initComplete(), and setMultCREqnInfo().

int SNL_FEI_Structure::numLocalMultCRs_
private

Definition at line 671 of file SNL_FEI_Structure.hpp.

Referenced by initComplete(), and setMultCREqnInfo().

int SNL_FEI_Structure::reducedStartRow_
private
int SNL_FEI_Structure::reducedEndRow_
private
int SNL_FEI_Structure::numLocalReducedRows_
private
fei::FillableMat* SNL_FEI_Structure::Kid_
private
fei::FillableMat * SNL_FEI_Structure::Kdi_
private
fei::FillableMat * SNL_FEI_Structure::Kdd_
private
fei::CSRMat SNL_FEI_Structure::csrD
private

Definition at line 675 of file SNL_FEI_Structure.hpp.

Referenced by assembleReducedStructure().

fei::CSRMat SNL_FEI_Structure::csrKid
private

Definition at line 675 of file SNL_FEI_Structure.hpp.

Referenced by assembleReducedStructure().

fei::CSRMat SNL_FEI_Structure::csrKdi
private

Definition at line 675 of file SNL_FEI_Structure.hpp.

Referenced by assembleReducedStructure().

fei::CSRMat SNL_FEI_Structure::csrKdd
private

Definition at line 675 of file SNL_FEI_Structure.hpp.

Referenced by assembleReducedStructure().

fei::CSRMat SNL_FEI_Structure::tmpMat1_
private

Definition at line 675 of file SNL_FEI_Structure.hpp.

Referenced by assembleReducedStructure().

fei::CSRMat SNL_FEI_Structure::tmpMat2_
private

Definition at line 675 of file SNL_FEI_Structure.hpp.

Referenced by assembleReducedStructure().

int SNL_FEI_Structure::reducedEqnCounter_
private
int SNL_FEI_Structure::reducedRHSCounter_
private

Definition at line 676 of file SNL_FEI_Structure.hpp.

std::vector<int> SNL_FEI_Structure::rSlave_
private

Definition at line 677 of file SNL_FEI_Structure.hpp.

Referenced by createBlkSymmEqnStructure(), and createSymmEqnStructure().

std::vector<int> SNL_FEI_Structure::cSlave_
private

Definition at line 677 of file SNL_FEI_Structure.hpp.

std::vector<NodeDescriptor*> SNL_FEI_Structure::work_nodePtrs_
private

Definition at line 678 of file SNL_FEI_Structure.hpp.

Referenced by getBlkScatterIndices_index(), and getScatterIndices_index().

bool SNL_FEI_Structure::structureFinalized_
private

Definition at line 680 of file SNL_FEI_Structure.hpp.

Referenced by getMatrixRowLengths(), getMatrixStructure(), and initComplete().

bool SNL_FEI_Structure::generateGraph_
private
fei::ctg_set<int>* SNL_FEI_Structure::sysMatIndices_
private
bool SNL_FEI_Structure::blockMatrix_
private

Definition at line 685 of file SNL_FEI_Structure.hpp.

Referenced by initComplete().

int SNL_FEI_Structure::numGlobalEqnBlks_
private

Definition at line 686 of file SNL_FEI_Structure.hpp.

Referenced by calcGlobalEqnInfo(), getEqnBlkInfo(), and getNumGlobalEqnBlks().

int SNL_FEI_Structure::numLocalEqnBlks_
private
int SNL_FEI_Structure::numLocalReducedEqnBlks_
private
int SNL_FEI_Structure::localBlkOffset_
private
int SNL_FEI_Structure::localReducedBlkOffset_
private

Definition at line 690 of file SNL_FEI_Structure.hpp.

Referenced by getMatrixStructure(), and initComplete().

int SNL_FEI_Structure::globalMaxBlkSize_
private
int SNL_FEI_Structure::firstLocalNodeNumber_
private

Definition at line 693 of file SNL_FEI_Structure.hpp.

Referenced by calcGlobalEqnInfo(), and initComplete().

int SNL_FEI_Structure::numGlobalNodes_
private

Definition at line 694 of file SNL_FEI_Structure.hpp.

Referenced by calcGlobalEqnInfo().

fei::ctg_set<int>* SNL_FEI_Structure::sysBlkMatIndices_
private

Definition at line 696 of file SNL_FEI_Structure.hpp.

Referenced by destroyMatIndices(), getMatrixStructure(), and initComplete().

bool SNL_FEI_Structure::matIndicesDestroyed_
private

Definition at line 697 of file SNL_FEI_Structure.hpp.

Referenced by destroyMatIndices(), and initComplete().

std::vector<int> SNL_FEI_Structure::workSpace_
private
snl_fei::PointBlockMap* SNL_FEI_Structure::blkEqnMapper_
private
std::map<GlobalID, snl_fei::Constraint<GlobalID>* > SNL_FEI_Structure::multCRs_
private
std::map<GlobalID, snl_fei::Constraint<GlobalID>* > SNL_FEI_Structure::penCRs_
private
bool SNL_FEI_Structure::checkSharedNodes_
private

Definition at line 707 of file SNL_FEI_Structure.hpp.

Referenced by finalizeNodeCommMgr(), and parameters().

std::string SNL_FEI_Structure::name_
private

Definition at line 709 of file SNL_FEI_Structure.hpp.

Referenced by setDbgOut(), and writeEqn2NodeMap().

int SNL_FEI_Structure::outputLevel_
private
bool SNL_FEI_Structure::debugOutput_
private
std::string SNL_FEI_Structure::dbgPath_
private

Definition at line 713 of file SNL_FEI_Structure.hpp.

Referenced by setDbgOut(), and writeEqn2NodeMap().

std::ostream* SNL_FEI_Structure::dbgOStreamPtr_
private

Definition at line 715 of file SNL_FEI_Structure.hpp.

Referenced by dbgOut(), and setDbgOut().

bool SNL_FEI_Structure::setDbgOutCalled_
private

Definition at line 719 of file SNL_FEI_Structure.hpp.

Referenced by setDbgOut().


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