FEI Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
BlockDescriptor Class Reference

#include <fei_BlockDescriptor.hpp>

Public Member Functions

 BlockDescriptor ()
virtual ~BlockDescriptor ()
GlobalID getGlobalBlockID ()
void setGlobalBlockID (GlobalID blockID)
int setNumNodesPerElement (int numNodes)
int getNumNodesPerElement () const
int * fieldsPerNodePtr ()
int allocateFieldIDsTable ()
int ** fieldIDsTablePtr ()
bool containsField (int fieldID)
int getNumDistinctFields ()
void setNumDistinctFields (int nFields)
int getInterleaveStrategy () const
void setInterleaveStrategy (int strat)
int getLumpingStrategy () const
void setLumpingStrategy (int strat)
int getNumElements ()
void setNumElements (int numElems)
size_t getNumElemDofFieldsPerElement ()
int setElemDofFieldIDs (int numFields, const int *fieldIDs)
std::vector< int > & getElemDofFieldIDs ()
void setNumElemDOFPerElement (int ndof)
int getNumElemDOFPerElement ()
std::vector< int > & elemDOFEqnNumbers ()
int getNumEqnsPerElement ()
void setNumEqnsPerElement (int numEqns)
int getNumBlkEqnsPerElement ()
void setNumBlkEqnsPerElement (int numBlkEqns)
int getNumActiveNodes ()
void setNumActiveNodes (int num)
int getTotalNumEqns ()
void setTotalNumEqns (int numEqns)

Private Member Functions

 BlockDescriptor (const BlockDescriptor &)
BlockDescriptoroperator= (const BlockDescriptor &)
void destroyFieldArrays ()

Private Attributes

GlobalID blockID_
int numNodesPerElement_
int * numFieldsPerNode_
int ** nodalFieldIDs_
bool fieldIDsAllocated_
int numDistinctFields_
std::vector< int > elemDofFieldIDs_
int interleaveStrategy_
int lumpingStrategy_
int numElements_
int numElemDOFPerElement_
std::vector< int > elemDOFEqnNumbers_
int numEqnsPerElement_
int numBlkEqnsPerElement_
int numActiveNodes_
int totalNumEqns_

Detailed Description

The BlockDescriptor class holds the information that the FEI implementation needs to know about an element-block in the finite element problem:

Global block identifier number of nodes per element in this block list containing the number-of-fields-per-node table containing the field identifiers for those nodal fields interleaveStrategy lumpingStrategy number of elements in this block number of element-DOF per element in this block the first element-DOF equation number for each block total number of equations associated with each element

A block is a collection of homogeneous elements – which means that all elements in a block have the same topology: number of nodes, same solution fields at those nodes, etc.

Usage notes:

There is only one way to set each length/size parameter in this class, and only one way to retrieve each length/size parameter. e.g., you can't set the number of nodes to be one thing, then pass a different value to a function that allocates the fieldsPerNode list. When you set the number of nodes, the fieldsPerNode list is allocated right then. When you retrieve the fieldsPerNode list, you must obtain its length by separately calling the getNumNodesPerElement() function. Similar schemes are in place for the fieldIDsTable, etc.

There are some order-dependencies for these member functions.

  • setNumNodesPerElement should be called before fieldsPerNodePtr() is called, because fieldsPerNodePtr returns a list of length numNodesPerElem.
  • then, in turn, fieldsPerNodePtr() should be called, and the entries of that list should be set, before allocateFieldIDsTable is called, because the row-lengths of the fieldIDsTable are given by the entries in the fieldsPerNode list.
  • naturally allocateFieldIDsTable should be called before fieldIDsTablePtr() is called.
  • setNumElemDOFPerElement should be called before elemDOFEqnNumbersPtr(), because elemDOFEqnNumbersPtr returns a list of length numElemDOFPerElem.

In general, out-of-order function calls will be flagged with a message to stderr.

Definition at line 67 of file fei_BlockDescriptor.hpp.

Constructor & Destructor Documentation

◆ BlockDescriptor() [1/2]

◆ ~BlockDescriptor()

BlockDescriptor::~BlockDescriptor ( )
virtual

Definition at line 37 of file fei_BlockDescriptor.cpp.

References destroyFieldArrays(), and numElemDOFPerElement_.

◆ BlockDescriptor() [2/2]

Member Function Documentation

◆ getGlobalBlockID()

GlobalID BlockDescriptor::getGlobalBlockID ( )
inline

◆ setGlobalBlockID()

void BlockDescriptor::setGlobalBlockID ( GlobalID blockID)
inline

Definition at line 73 of file fei_BlockDescriptor.hpp.

References blockID_.

Referenced by SNL_FEI_Structure::addBlock().

◆ setNumNodesPerElement()

int BlockDescriptor::setNumNodesPerElement ( int numNodes)

Number of nodes per element, in this element-block.

Definition at line 60 of file fei_BlockDescriptor.cpp.

References destroyFieldArrays(), numFieldsPerNode_, and numNodesPerElement_.

Referenced by SNL_FEI_Structure::initElemBlock().

◆ getNumNodesPerElement()

◆ fieldsPerNodePtr()

◆ allocateFieldIDsTable()

int BlockDescriptor::allocateFieldIDsTable ( )

◆ fieldIDsTablePtr()

◆ containsField()

◆ getNumDistinctFields()

int BlockDescriptor::getNumDistinctFields ( )
inline

Definition at line 92 of file fei_BlockDescriptor.hpp.

References numDistinctFields_.

Referenced by FEDataFilter::generalElemInput().

◆ setNumDistinctFields()

void BlockDescriptor::setNumDistinctFields ( int nFields)
inline

Definition at line 93 of file fei_BlockDescriptor.hpp.

References numDistinctFields_.

Referenced by SNL_FEI_Structure::initElemBlock().

◆ getInterleaveStrategy()

int BlockDescriptor::getInterleaveStrategy ( ) const
inline

◆ setInterleaveStrategy()

void BlockDescriptor::setInterleaveStrategy ( int strat)
inline

Definition at line 96 of file fei_BlockDescriptor.hpp.

References interleaveStrategy_.

Referenced by SNL_FEI_Structure::initElemBlock().

◆ getLumpingStrategy()

int BlockDescriptor::getLumpingStrategy ( ) const
inline

Definition at line 98 of file fei_BlockDescriptor.hpp.

References lumpingStrategy_.

Referenced by SNL_FEI_Structure::getElemBlockInfo().

◆ setLumpingStrategy()

void BlockDescriptor::setLumpingStrategy ( int strat)
inline

Definition at line 99 of file fei_BlockDescriptor.hpp.

References lumpingStrategy_.

◆ getNumElements()

◆ setNumElements()

void BlockDescriptor::setNumElements ( int numElems)
inline

◆ getNumElemDofFieldsPerElement()

size_t BlockDescriptor::getNumElemDofFieldsPerElement ( )
inline

Definition at line 104 of file fei_BlockDescriptor.hpp.

References elemDofFieldIDs_.

◆ setElemDofFieldIDs()

int BlockDescriptor::setElemDofFieldIDs ( int numFields,
const int * fieldIDs )

◆ getElemDofFieldIDs()

std::vector< int > & BlockDescriptor::getElemDofFieldIDs ( )
inline

Definition at line 106 of file fei_BlockDescriptor.hpp.

References elemDofFieldIDs_.

◆ setNumElemDOFPerElement()

void BlockDescriptor::setNumElemDOFPerElement ( int ndof)
inline

Definition at line 108 of file fei_BlockDescriptor.hpp.

References numElemDOFPerElement_.

Referenced by SNL_FEI_Structure::initElemBlock().

◆ getNumElemDOFPerElement()

◆ elemDOFEqnNumbers()

◆ getNumEqnsPerElement()

◆ setNumEqnsPerElement()

void BlockDescriptor::setNumEqnsPerElement ( int numEqns)
inline

Definition at line 115 of file fei_BlockDescriptor.hpp.

References numEqnsPerElement_.

Referenced by SNL_FEI_Structure::initElemBlock().

◆ getNumBlkEqnsPerElement()

int BlockDescriptor::getNumBlkEqnsPerElement ( )
inline

Definition at line 117 of file fei_BlockDescriptor.hpp.

References numBlkEqnsPerElement_.

Referenced by LinSysCoreFilter::generalElemInput().

◆ setNumBlkEqnsPerElement()

void BlockDescriptor::setNumBlkEqnsPerElement ( int numBlkEqns)
inline

Definition at line 118 of file fei_BlockDescriptor.hpp.

References numBlkEqnsPerElement_.

Referenced by SNL_FEI_Structure::initElemBlock().

◆ getNumActiveNodes()

int BlockDescriptor::getNumActiveNodes ( )
inline

Definition at line 120 of file fei_BlockDescriptor.hpp.

References numActiveNodes_.

Referenced by FEI_Implementation::getNumBlockActNodes().

◆ setNumActiveNodes()

void BlockDescriptor::setNumActiveNodes ( int num)
inline

Definition at line 121 of file fei_BlockDescriptor.hpp.

References numActiveNodes_.

◆ getTotalNumEqns()

int BlockDescriptor::getTotalNumEqns ( )
inline

Definition at line 123 of file fei_BlockDescriptor.hpp.

References totalNumEqns_.

Referenced by FEI_Implementation::getNumBlockActEqns().

◆ setTotalNumEqns()

void BlockDescriptor::setTotalNumEqns ( int numEqns)
inline

Definition at line 124 of file fei_BlockDescriptor.hpp.

References totalNumEqns_.

◆ operator=()

BlockDescriptor & BlockDescriptor::operator= ( const BlockDescriptor & )
inlineprivate

Definition at line 135 of file fei_BlockDescriptor.hpp.

References BlockDescriptor().

◆ destroyFieldArrays()

void BlockDescriptor::destroyFieldArrays ( )
private

Member Data Documentation

◆ blockID_

GlobalID BlockDescriptor::blockID_
private

◆ numNodesPerElement_

int BlockDescriptor::numNodesPerElement_
private

◆ numFieldsPerNode_

int* BlockDescriptor::numFieldsPerNode_
private

◆ nodalFieldIDs_

int** BlockDescriptor::nodalFieldIDs_
private

◆ fieldIDsAllocated_

bool BlockDescriptor::fieldIDsAllocated_
private

◆ numDistinctFields_

int BlockDescriptor::numDistinctFields_
private

◆ elemDofFieldIDs_

std::vector<int> BlockDescriptor::elemDofFieldIDs_
private

◆ interleaveStrategy_

int BlockDescriptor::interleaveStrategy_
private

◆ lumpingStrategy_

int BlockDescriptor::lumpingStrategy_
private

◆ numElements_

int BlockDescriptor::numElements_
private

◆ numElemDOFPerElement_

int BlockDescriptor::numElemDOFPerElement_
private

◆ elemDOFEqnNumbers_

std::vector<int> BlockDescriptor::elemDOFEqnNumbers_
private

◆ numEqnsPerElement_

int BlockDescriptor::numEqnsPerElement_
private

◆ numBlkEqnsPerElement_

int BlockDescriptor::numBlkEqnsPerElement_
private

◆ numActiveNodes_

int BlockDescriptor::numActiveNodes_
private

◆ totalNumEqns_

int BlockDescriptor::totalNumEqns_
private

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