9 #ifndef _fei_Lookup_Impl_hpp_
10 #define _fei_Lookup_Impl_hpp_
52 if (len < 1)
return(NULL);
62 if (fieldIDs == NULL)
return(NULL);
67 for(
unsigned i=0; i<numFields; ++i) {
86 int& interleaveStrategy,
int& lumpingStrategy,
87 int& numElemDOF,
int& numElements,
88 int& numNodesPerElem,
int& numEqnsPerElem)
90 interleaveStrategy = 0; lumpingStrategy = 0;
103 if (cblock==NULL)
return(NULL);
111 if (cblock==NULL)
return(NULL);
118 for(
int i=0; i<numNodes; ++i) {
119 f2dPtr[i] = fieldIDs + offset;
120 offset += numFieldsPerNode[i];
142 std::vector<int>* subdomains = NULL;
143 std::map<int,std::vector<int>* >::iterator
146 return( subdomains==0 ? 0 : subdomains->size() );
152 std::vector<int>* subdomains = NULL;
153 std::map<int,std::vector<int>* >::iterator
157 return( subdomains==0 ? NULL : &(*subdomains)[0] );
165 return(err==0 ? numShared : -1);
181 for(
int i=0; i<numShared; ++i) {
183 if (node == NULL)
return NULL;
187 return(wkPtr+numShared);
193 std::map<int,fei::Record<int>*>::iterator
202 int shID = node->
getID();
206 if (iter == sharedIDs.
getSharedIDs().end())
return(NULL);
208 const std::set<int>& shprocs = iter->second;
217 std::map<int,fei::Record<int>*>::iterator
226 int shID = node->
getID();
232 const std::set<int>& shprocs = iter->second;
233 return(shprocs.size());
276 #endif // _fei_Lookup_Impl_hpp_
GlobalIDType getNumber() const
std::vector< int > workspace_
int getBlkEqnSize(int blkEqn)
const std::map< int, int > & getConnectivityIDs() const
const int * getSharedNodeProcs(int nodeNumber)
int getNumIndices() const
map_type & getSharedIDs()
const int * getNumFieldsPerID() const
void copySetToVector(const std::set< T > &set_obj, std::vector< T > &vec)
Lookup_Impl(fei::SharedPtr< fei::MatrixGraph > matGraph, int nodeIDType)
int getAssociatedFieldID(int eqnNumber)
int * getSubdomainList(int nodeNumber)
int getNumSubdomains(int nodeNumber)
virtual const fei::ConnectivityBlock * getConnectivityBlock(int blockID) const =0
const int * getFieldIDs() const
bool isExactlyBlkEqn(int ptEqn)
int getAssociatedNodeNumber(int eqnNumber)
const int *const * getFieldIDsTable(GlobalID blockID)
virtual std::map< int, fei::ConnectivityBlock * > & getConnectivityBlocks()=0
void copyKeysToArray(const MAP_TYPE &map_obj, unsigned lenList, int *list)
std::map< int, std::vector< int > * > nodenumSubdomainDB_
bool isExactlyBlkEqn(int ptEqn)
fei::SharedPtr< fei::MatrixGraph > matGraph_
const GlobalID * getElemBlockIDs()
int ptEqnToBlkEqn(int ptEqn)
fei::SharedPtr< fei::VectorSpace > vspace_
std::map< int, fei::Record< int > * > eqnnumPairs_
std::vector< int > fieldSizes_
int getAssociatedNodeID(int eqnNumber)
fei::SharedIDs< int > & getSharedIDs(int idType)
int getNumSharingProcs(int nodeNumber)
snl_fei::PointBlockMap * ptBlkMap_
int eqnToBlkEqn(int eqn) const
int getNumSharedIDs(int idType, int &numShared)
void getFields(std::vector< int > &fieldIDs)
const int * getNumFieldsPerNode(GlobalID blockID)
std::vector< const int * > fieldIDs_2D_
int getFieldSize(int fieldID)
const int * getFieldSizesPtr()
std::map< int, fei::Record< int > * > nodenumPairs_
std::vector< GlobalID > elemBlockIDs_
const int * getSharedNodeNumbers()
int getBlkEqnSize(int blkEqn)
std::vector< int > fieldIDs_
void getElemBlockInfo(GlobalID blockID, int &interleaveStrategy, int &lumpingStrategy, int &numElemDOF, int &numElements, int &numNodesPerElem, int &numEqnsPerElem)
int getEqnNumber(int nodeNumber, int fieldID)
const int * getFieldIDsPtr()
GlobalIDType getID() const
unsigned getFieldSize(int fieldID)
bool isInLocalElement(int nodeNumber)
virtual int getConnectivityBlockIDs(std::vector< int > &blockIDs) const =0
int getRecordCollection(int idType, snl_fei::RecordCollection *&records)
int getOffsetIntoBlkEqn(int blkEqn, int ptEqn)
const fei::Pattern * getRowPattern() const