9 #ifndef _fei_VectorSpace_hpp_
10 #define _fei_VectorSpace_hpp_
27 template<
typename GlobalIDType>
class Record;
28 template<
typename GlobalIDType>
class Record_Operator;
29 template<
typename GlobalIDType>
class SharedIDs;
107 const int* fieldSizes,
108 const int* fieldTypes = NULL);
123 const int* localIDs_begin,
const int* localIDs_end,
124 const int* globalIDs_begin,
const int* globalIDs_end);
188 const int* sharedIDs,
189 const int* numSharingProcsPerID,
190 const int* sharingProcs);
213 const int* sharedIDs,
214 const int* numSharingProcsPerID,
215 const int*
const* sharingProcs);
217 int setOwners(
int numShared,
int idType,
const int* sharedIDs,
const int* owners);
277 int whichComponentOfField,
320 int& globalBlkIndex);
384 int* globalBlkIndices);
451 void getFields(std::vector<int>& fieldIDs);
469 void getFields(
int idType,
int ID, std::vector<int>& fieldIDs);
480 void getIDTypes(std::vector<int>& idTypes)
const;
518 bool isLocal(
int idType,
int ID);
542 int& numOwnedAndSharedIDs);
588 int* globalBlkIndices,
607 int getIndices_Owned(
int lenIndices,
int* globalIndices,
int& numIndices)
const;
627 int* globalBlkIndices,
667 std::vector<int>& indices);
671 std::vector<int>& indices);
675 std::vector<int>& indices);
696 const int* numFieldsPerID,
698 const int* fieldSizes,
706 const int* numFieldsPerID,
708 const int* fieldSizes,
750 void compute_shared_ids(
const std::vector<int>& global_min,
const std::vector<int>& global_max);
771 std::vector<fei::FieldMask*>& fieldMasks);
773 void setName(
const char* name);
831 #endif // _fei_VectorSpace_hpp_
int getGlobalNumBlkIndices() const
MPI_Comm getCommunicator() const
int getGlobalIndicesLocalIDs(int numIDs, const int *localIDs, int idType, int fieldID, int *globalIndices)
int initSharedIDs(int numShared, int idType, const int *sharedIDs, const int *numSharingProcsPerID, const int *sharingProcs)
int getBlkIndices_Owned(int lenBlkIndices, int *globalBlkIndices, int *blkSizes, int &numBlkIndices)
VectorSpace(MPI_Comm comm, const char *name=NULL)
int getGlobalNumIndices() const
std::vector< snl_fei::RecordCollection * > recordCollections_
int getIndices_SharedAndOwned(std::vector< int > &globalIndices) const
int synchronizeSharedRecords()
void compute_shared_ids(const std::vector< int > &global_min, const std::vector< int > &global_max)
bool initCompleteAlreadyCalled_
int exchangeGlobalIndices()
int getOwnedIDs(int idtype, int lenList, int *IDs, int &numLocalIDs)
void defineFields(int numFields, const int *fieldIDs, const int *fieldSizes, const int *fieldTypes=NULL)
std::map< int, unsigned > fieldDatabase_
fei::FieldDofMap< int > & getFieldDofMap()
int addDOFs(int fieldID, int idType, int numIDs, const int *IDs)
int getBlkIndices_SharedAndOwned(int lenBlkIndices, int *globalBlkIndices, int *blkSizes, int &numBlkIndices)
void setParameters(const fei::ParameterSet ¶mset)
std::vector< int > globalOffsets_
virtual fei::SharedPtr< VectorSpace > createVectorSpace(MPI_Comm, const char *name)
int addVectorSpace(fei::VectorSpace *inputSpace)
std::map< int, fei::comm_map * > sharerPatterns_
int getGlobalIndex(int idType, int ID, int fieldID, int fieldOffset, int whichComponentOfField, int &globalIndex)
void getIDTypes(std::vector< int > &idTypes) const
int getGlobalIndices(int numIDs, const int *IDs, int idType, int fieldID, int *globalIndices)
int setOwners(int numShared, int idType, const int *sharedIDs, const int *owners)
int getOwnedAndSharedIDs(int idtype, int lenList, int *IDs, int &numOwnedAndSharedIDs)
void getGlobalBlkIndicesL(int numRecords, const snl_fei::RecordCollection *const *recordCollections, const int *records, int indicesAllocLen, int *indices, int &numIndices)
int getNumOwnedIDs(int idType)
int getOwnerProcBlkIndex(int globalIndex)
std::vector< int > globalIDOffsets_
int getNumBlkIndices_SharedAndOwned(int &numBlkIndices) const
void defineIDTypes(int numIDTypes, const int *idTypes)
bool isLocallyOwned(int idType, int ID)
std::vector< int > eqnNumbers_
fei::SharedIDs< int > & getSharedIDs(int idType)
int getOwnerProcPtIndex(int globalIndex)
std::map< int, fei::comm_map * > ownerPatterns_
void getGlobalBlkIndexOffsets(std::vector< int > &globalBlkOffsets) const
std::vector< fei::FieldMask * > fieldMasks_
int getNumSharedIDs(int idType, int &numShared)
bool initCompleteAlreadyCalled() const
int getGlobalBlkIndex(int idType, int ID, int &globalBlkIndex)
int getIndices_Owned(std::vector< int > &globalIndices) const
snl_fei::PointBlockMap * getPointBlockMap()
void getFields(std::vector< int > &fieldIDs)
void getGlobalIndexOffsets(std::vector< int > &globalOffsets) const
int calculateGlobalIndices()
std::map< int, fei::SharedIDs< int > > sharedIDTables_
VectorSpace & operator=(const VectorSpace &src)
void runRecords(fei::Record_Operator< int > &record_op)
void setName(const char *name)
int getNumBlkIndices_Owned() const
int getNumOwnedAndSharedIDs(int idType)
void setIDMap(int idType, const int *localIDs_begin, const int *localIDs_end, const int *globalIDs_begin, const int *globalIDs_end)
int getNumIndices_SharedAndOwned() const
unsigned getFieldSize(int fieldID)
std::vector< int > idTypes_
void getGlobalIndicesL(const fei::Pattern *pattern, const int *records, std::vector< int > &indices)
bool sharedRecordsSynchronized_
void getSendProcs(std::vector< int > &sendProcs) const
int getNumDegreesOfFreedom(int idType, int ID)
int getRecordCollection(int idType, snl_fei::RecordCollection *&records)
snl_fei::PointBlockMap * ptBlkMap_
int getGlobalBlkIndices(int numIDs, const int *IDs, int idType, int *globalBlkIndices)
std::vector< int > & getEqnNumbers()
fei::FieldDofMap< int > fieldDofMap_
int getNumIndices_Owned() const
int exchangeFieldInfo(fei::comm_map *ownerPattern, fei::comm_map *sharerPattern, snl_fei::RecordCollection *recordCollection, std::vector< fei::FieldMask * > &fieldMasks)
bool isLocal(int idType, int ID)