9 #ifndef _fei_MatrixGraph_Impl2_hpp_
10 #define _fei_MatrixGraph_Impl2_hpp_
27 class ConnectivityBlock;
58 const char* name = NULL);
169 const int* numFieldsPerID,
170 const int* fieldIDs);
196 const int* numFieldsPerID,
197 const int* fieldIDs);
222 int numConnectivityLists,
224 bool diagonal=
false);
250 bool diagonal=
false);
273 int numConnectivityLists,
291 const int* connectedIdentifiers);
309 const int* rowConnectedIdentifiers,
310 const int* colConnectedIdentifiers);
324 const int* connectedIdentifiers);
341 const int* rowConnectedIdentifiers,
343 const int* colConnectedIdentifiers);
363 const int* rowOffsets,
364 const int* packedColumnIDs);
387 const int* rowOffsets,
388 const int* packedColumnIDs);
407 const int* rowLengths,
408 const int*
const* columnIDs);
413 int constraintIDType,
417 const int* fieldIDs);
422 int constraintIDType,
426 const int* fieldIDs);
435 int offsetIntoSlaveField,
436 const double* weights,
464 bool localRowGraph_includeSharedRows=
false);
470 bool& equivalent)
const;
511 int rowIndicesAllocLen,
514 int colIndicesAllocLen,
527 std::vector<int>& indices);
560 std::vector<int>& globalIndices);
598 bool gatherFromOverlap);
616 int* records,
int numRecords,
617 const int* numFieldsPerID,
619 const int* fieldSizes,
625 int* records,
int numRecords,
626 int fieldID,
int fieldSize,
653 const int* connectedIdentifiers,
662 void setName(
const char* name);
687 std::map<int, ConstraintType* >
int initLagrangeConstraint(int constraintID, int constraintIDType, int numIDs, const int *idTypes, const int *IDs, const int *fieldIDs)
int definePattern(int numIDs, int idType)
int getLocalNumLagrangeConstraints() const
fei::SharedPtr< fei::VectorSpace > getColSpace()
int createAlgebraicGraph(bool blockEntryGraph, fei::Graph *graph, bool gatherFromOverlap)
int addBlockToGraph_multiField_symmetric(fei::Graph *graph, fei::ConnectivityBlock *cblock)
std::vector< int > tmpIntArray1_
fei::SharedPtr< fei::SparseRowGraph > createGraph(bool blockEntryGraph, bool localRowGraph_includeSharedRows=false)
fei::Pattern * getPattern(int patternID)
int createSlaveMatrices()
int getConnectivityIndices(int blockID, int connectivityID, int indicesAllocLen, int *indices, int &numIndices)
fei::SharedPtr< FillableMat > D_
int getConnectivityRecords(fei::VectorSpace *vecSpace, int idType, int numIDs, const int *IDs, int *records)
std::map< int, fei::Pattern * > patterns_
int exchangeBlkEqnSizes(fei::Graph *graph)
std::map< int, fei::ConnectivityBlock * > & getConnectivityBlocks()
int initConnectivityBlock(int blockID, int numConnectivityLists, int patternID, bool diagonal=false)
int getNumConnectivityBlocks() const
fei::SharedPtr< fei::Reducer > reducer_
std::set< int > constrained_indices_
int addBlockToGraph_singleField_nonsymmetric(fei::Graph *graph, fei::ConnectivityBlock *cblock)
fei::SharedPtr< fei::SparseRowGraph > remotelyOwnedGraphRows_
std::map< int, ConstraintType * > penaltyConstraints_
int addPenaltyConstraintsToGraph(fei::Graph *graph)
int addBlockToGraph_multiField_nonsymmetric(fei::Graph *graph, fei::ConnectivityBlock *cblock)
int getConnectivityBlockIDs(std::vector< int > &blockIDs) const
int addBlockToGraph_sparse(fei::Graph *graph, fei::ConnectivityBlock *cblock)
fei::SharedPtr< FillableMat > getSlaveDependencyMatrix()
MatrixGraph_Impl2(fei::SharedPtr< fei::VectorSpace > rowSpace, fei::SharedPtr< fei::VectorSpace > colSpace, const char *name=NULL)
fei::SharedPtr< fei::VectorSpace > getRowSpace()
fei::SharedPtr< fei::VectorSpace > rowSpace_
void setIndicesMode(int mode)
int getConnectivityNumIndices(int blockID) const
std::vector< fei::ConnectivityBlock * > sparseBlocks_
std::map< int, ConstraintType * > lagrangeConstraints_
void setRowSpace(fei::SharedPtr< fei::VectorSpace > rowSpace)
const fei::ConnectivityBlock * getConnectivityBlock(int blockID) const
int initSlaveConstraint(int numIDs, const int *idTypes, const int *IDs, const int *fieldIDs, int offsetOfSlave, int offsetIntoSlaveField, const double *weights, double rhsValue)
int getNumIDsPerConnectivityList(int blockID) const
virtual fei::SharedPtr< fei::MatrixGraph > createMatrixGraph(fei::SharedPtr< fei::VectorSpace > rowSpace, fei::SharedPtr< fei::VectorSpace > columnSpace, const char *name)
ConstraintType * getPenaltyConstraint(int constraintID)
int addLagrangeConstraintsToGraph(fei::Graph *graph)
ConstraintType * getSlaveConstraint(int constraintID)
virtual ~MatrixGraph_Impl2()
int getPatternNumIndices(int patternID, int &numIndices)
void getConstrainedIndices(std::vector< int > &crindices) const
int initConnectivity(int blockID, int connectivityID, const int *connectedIdentifiers)
int getPatternIndices(int patternID, const int *IDs, std::vector< int > &indices)
void setParameters(const fei::ParameterSet ¶ms)
int compareStructure(const fei::MatrixGraph &matrixGraph, bool &equivalent) const
fei::SharedPtr< CSVec > g_
ConstraintType * getLagrangeConstraint(int constraintID)
int getConstraintConnectivityIndices(ConstraintType *cr, std::vector< int > &globalIndices)
fei::SharedPtr< fei::Reducer > getReducer()
std::map< int, ConstraintType * > slaveConstraints_
int getConnectivityIndices_multiField(const snl_fei::RecordCollection *const *recordCollections, int *records, int numRecords, const int *numFieldsPerID, const int *fieldIDs, const int *fieldSizes, int indicesAllocLen, int *indices, int &numIndices)
int getConnectivityIndices_singleField(const snl_fei::RecordCollection *const *recordCollections, int *records, int numRecords, int fieldID, int fieldSize, int indicesAllocLen, int *indices, int &numIndices)
int addBlockToGraph_singleField_symmetric(fei::Graph *graph, fei::ConnectivityBlock *cblock)
int getConnectivityIndices_noField(const snl_fei::RecordCollection *const *recordCollections, int *records, int numRecords, int indicesAllocLen, int *indices, int &numIndices)
int initPenaltyConstraint(int constraintID, int constraintIDType, int numIDs, const int *idTypes, const int *IDs, const int *fieldIDs)
int addBlockToGraph_noField_symmetric(fei::Graph *graph, fei::ConnectivityBlock *cblock)
void setName(const char *name)
int addPattern(fei::Pattern *pattern)
int arbitraryBlockCounter_
bool hasSlaveDof(int ID, int idType)
fei::SharedPtr< fei::VectorSpace > colSpace_
std::map< int, ConstraintType * > & getLagrangeConstraints()
std::map< int, fei::ConnectivityBlock * > connectivityBlocks_
fei::SharedPtr< fei::SparseRowGraph > getRemotelyOwnedGraphRows()
bool includeAllSlaveConstraints_
std::vector< int > tmpIntArray2_
void setColumnSpace(fei::SharedPtr< fei::VectorSpace > columnSpace)
int getGlobalNumSlaveConstraints() const