#include <Epetra_CrsGraph.h>
Inheritance diagram for Epetra_CrsGraph:
Public Member Functions | |
| Epetra_CrsGraph & | operator= (const Epetra_CrsGraph &Source) |
| Assignment operator. | |
Constructors/Destructor. | |
| Epetra_CrsGraph (Epetra_DataAccess CV, const Epetra_BlockMap &RowMap, const int *NumIndicesPerRow, bool StaticProfile=false) | |
| Epetra_CrsGraph constuctor with variable number of indices per row. | |
| Epetra_CrsGraph (Epetra_DataAccess CV, const Epetra_BlockMap &RowMap, int NumIndicesPerRow, bool StaticProfile=false) | |
| Epetra_CrsGraph constuctor with fixed number of indices per row. | |
| Epetra_CrsGraph (Epetra_DataAccess CV, const Epetra_BlockMap &RowMap, const Epetra_BlockMap &ColMap, const int *NumIndicesPerRow, bool StaticProfile=false) | |
| Epetra_CrsGraph constuctor with variable number of indices per row. | |
| Epetra_CrsGraph (Epetra_DataAccess CV, const Epetra_BlockMap &RowMap, const Epetra_BlockMap &ColMap, int NumIndicesPerRow, bool StaticProfile=false) | |
| Epetra_CrsGraph constuctor with fixed number of indices per row. | |
| Epetra_CrsGraph (const Epetra_CrsGraph &Graph) | |
| Copy constructor. | |
| virtual | ~Epetra_CrsGraph () |
| Epetra_CrsGraph Destructor. | |
Insertion/Removal methods. | |
| int | InsertGlobalIndices (int GlobalRow, int NumIndices, int *Indices) |
| Enter a list of elements in a specified global row of the graph. | |
| int | RemoveGlobalIndices (int GlobalRow, int NumIndices, int *Indices) |
| Remove a list of elements from a specified global row of the graph. | |
| int | RemoveGlobalIndices (int Row) |
| Remove all indices from a specified global row of the graph. | |
| int | InsertMyIndices (int LocalRow, int NumIndices, int *Indices) |
| Enter a list of elements in a specified local row of the graph. | |
| int | RemoveMyIndices (int LocalRow, int NumIndices, int *Indices) |
| Remove a list of elements from a specified local row of the graph. | |
| int | RemoveMyIndices (int Row) |
| Remove all indices from a specified local row of the graph. | |
Transformation methods | |
| int | FillComplete () |
| Tranform to local index space. Perform other operations to allow optimal matrix operations. | |
| int | FillComplete (const Epetra_BlockMap &DomainMap, const Epetra_BlockMap &RangeMap) |
| Transform to local index space using specified Domain/Range maps. Perform other operations to allow optimal matrix operations. | |
| int | OptimizeStorage () |
| Make consecutive row index sections contiguous, minimize internal storage used for constructing graph. | |
Extraction methods. | |
| int | ExtractGlobalRowCopy (int GlobalRow, int LenOfIndices, int &NumIndices, int *Indices) const |
| Extract a list of elements in a specified global row of the graph. Put into storage allocated by calling routine. | |
| int | ExtractMyRowCopy (int LocalRow, int LenOfIndices, int &NumIndices, int *Indices) const |
| Extract a list of elements in a specified local row of the graph. Put into storage allocated by calling routine. | |
| int | ExtractGlobalRowView (int GlobalRow, int &NumIndices, int *&Indices) const |
| Get a view of the elements in a specified global row of the graph. | |
| int | ExtractMyRowView (int LocalRow, int &NumIndices, int *&Indices) const |
| Get a view of the elements in a specified local row of the graph. | |
Graph Properties Query Methods. | |
| bool | Filled () const |
| If FillComplete() has been called, this query returns true, otherwise it returns false. | |
| bool | StorageOptimized () const |
| If OptimizeStorage() has been called, this query returns true, otherwise it returns false. | |
| bool | IndicesAreGlobal () const |
| If column indices are in global range, this query returns true, otherwise it returns false. | |
| bool | IndicesAreLocal () const |
| If column indices are in local range, this query returns true, otherwise it returns false. | |
| bool | LowerTriangular () const |
| If graph is lower triangular in local index space, this query returns true, otherwise it returns false. | |
| bool | UpperTriangular () const |
| If graph is upper triangular in local index space, this query returns true, otherwise it returns false. | |
| bool | NoDiagonal () const |
| If graph has no diagonal entries in global index space, this query returns true, otherwise it returns false. | |
| bool | MyGlobalRow (int GID) const |
| Returns true of GID is owned by the calling processor, otherwise it returns false. | |
| bool | HaveColMap () const |
| Returns true if we have a well-defined ColMap, and returns false otherwise. | |
Atribute access functions | |
| int | NumMyRows () const |
| Returns the number of matrix rows on this processor. | |
| int | NumGlobalRows () const |
| Returns the number of matrix rows in global matrix. | |
| int | NumMyCols () const |
| Returns the number of entries in the set of column-indices that appear on this processor. | |
| int | NumGlobalCols () const |
| Returns the number of matrix columns in global matrix. | |
| int | NumGlobalNonzeros () const |
| Returns the number of indices in the global graph. | |
| int | NumGlobalDiagonals () const |
| Returns the number of diagonal entries in the global graph, based on global row/column index comparisons. | |
| int | NumMyDiagonals () const |
| Returns the number of diagonal entries in the local graph, based on global row/column index comparisons. | |
| int | NumMyBlockRows () const |
| Returns the number of block matrix rows on this processor. | |
| int | NumGlobalBlockRows () const |
| Returns the number of Block matrix rows in global matrix. | |
| int | NumMyBlockCols () const |
| Returns the number of Block matrix columns on this processor. | |
| int | NumGlobalBlockCols () const |
| Returns the number of Block matrix columns in global matrix. | |
| int | NumMyBlockDiagonals () const |
| Returns the number of Block diagonal entries in the local graph, based on global row/column index comparisons. | |
| int | NumGlobalBlockDiagonals () const |
| Returns the number of Block diagonal entries in the global graph, based on global row/column index comparisons. | |
| int | NumGlobalEntries () const |
| Returns the number of entries in the global graph. | |
| int | NumMyEntries () const |
| Returns the number of entries on this processor. | |
| int | MaxRowDim () const |
| Returns the max row dimension of block entries on the processor. | |
| int | GlobalMaxRowDim () const |
| Returns the max row dimension of block entries across all processors. | |
| int | MaxColDim () const |
| Returns the max column dimension of block entries on the processor. | |
| int | GlobalMaxColDim () const |
| Returns the max column dimension of block entries across all processors. | |
| int | NumMyNonzeros () const |
| Returns the number of indices in the local graph. | |
| int | NumGlobalIndices (int Row) const |
| Returns the current number of nonzero entries in specified global row on this processor. | |
| int | NumAllocatedGlobalIndices (int Row) const |
| Returns the allocated number of nonzero entries in specified global row on this processor. | |
| int | MaxNumIndices () const |
| Returns the maximum number of nonzero entries across all rows on this processor. | |
| int | GlobalMaxNumIndices () const |
| Returns the maximun number of nonzero entries across all rows across all processors. | |
| int | MaxNumNonzeros () const |
| Returns the maximum number of nonzero points across all rows on this processor. | |
| int | GlobalMaxNumNonzeros () const |
| Returns the maximun number of nonzero points across all rows across all processors. | |
| int | NumMyIndices (int Row) const |
| Returns the current number of nonzero entries in specified local row on this processor. | |
| int | NumAllocatedMyIndices (int Row) const |
| Returns the allocated number of nonzero entries in specified local row on this processor. | |
| int | IndexBase () const |
| Returns the index base for row and column indices for this graph. | |
| const Epetra_BlockMap & | RowMap () const |
| Returns the RowMap associated with this graph. | |
| int | ReplaceRowMap (const Epetra_BlockMap &newmap) |
| int | ReplaceColMap (const Epetra_BlockMap &newmap) |
| const Epetra_BlockMap & | ColMap () const |
| Returns the Column Map associated with this graph. | |
| const Epetra_BlockMap & | DomainMap () const |
| Returns the DomainMap associated with this graph. | |
| const Epetra_BlockMap & | RangeMap () const |
| Returns the RangeMap associated with this graph. | |
| const Epetra_Import * | Importer () const |
| Returns the Importer associated with this graph. | |
| const Epetra_Export * | Exporter () const |
| Returns the Exporter associated with this graph. | |
| const Epetra_Comm & | Comm () const |
| Returns a pointer to the Epetra_Comm communicator associated with this graph. | |
Local/Global ID methods | |
| int | LRID (int GRID) const |
| Returns the local row index for given global row index, returns -1 if no local row for this global row. | |
| int | GRID (int LRID) const |
| Returns the global row index for give local row index, returns IndexBase-1 if we don't have this local row. | |
| int | LCID (int GCID) const |
| Returns the local column index for given global column index, returns -1 if no local column for this global column. | |
| int | GCID (int LCID) const |
| Returns the global column index for give local column index, returns IndexBase-1 if we don't have this local column. | |
| bool | MyGRID (int GRID) const |
| Returns true if the GRID passed in belongs to the calling processor in this map, otherwise returns false. | |
| bool | MyLRID (int LRID) const |
| Returns true if the LRID passed in belongs to the calling processor in this map, otherwise returns false. | |
| bool | MyGCID (int GCID) const |
| Returns true if the GCID passed in belongs to the calling processor in this map, otherwise returns false. | |
| bool | MyLCID (int LCID) const |
| Returns true if the LRID passed in belongs to the calling processor in this map, otherwise returns false. | |
Inlined Operator Methods. | |
| int * | operator[] (int Loc) |
| Inlined bracket operator for fast access to data. (Const and Non-const versions). | |
| int * | operator[] (int Loc) const |
I/O Methods. | |
| virtual void | Print (ostream &os) const |
| Print method. | |
| void | PrintGraphData (ostream &os) const |
| void | PrintGraphData (ostream &os, int level) const |
Deprecated methods: These methods still work, but will be removed in a future version. | |
| const Epetra_BlockMap & | ImportMap () const |
| Use ColMap() instead. | |
| int | TransformToLocal () |
| Use FillComplete() instead. | |
| int | TransformToLocal (const Epetra_BlockMap *DomainMap, const Epetra_BlockMap *RangeMap) |
| Use FillComplete(const Epetra_BlockMap& DomainMap, const Epetra_BlockMap& RangeMap) instead. | |
Expert Users and Developers Only | |
| int | ReferenceCount () const |
| Returns the reference count of CrsGraphData. | |
| const Epetra_CrsGraphData * | DataPtr () const |
| Returns a pointer to the CrsGraphData instance this CrsGraph uses. | |
Protected Member Functions | |
| int * | All_Indices () const |
| int * | IndexOffset () const |
| int * | NumIndicesPerRow () const |
| int * | NumAllocatedIndicesPerRow () const |
| int ** | Indices () const |
| int * | Indices (int LocalRow) const |
| bool | IndicesAreContiguous () const |
| bool | StaticProfile () const |
| bool | GlobalConstantsComputed () const |
| bool | FindGlobalIndexLoc (int LocalRow, int Index, int Start, int &Loc) const |
| bool | FindGlobalIndexLoc (int NumIndices, const int *Indices, int Index, int Start, int &Loc) const |
| bool | FindMyIndexLoc (int LocalRow, int Index, int Start, int &Loc) const |
| bool | FindMyIndexLoc (int NumIndices, const int *Indices, int Index, int Start, int &Loc) const |
| int | InsertIndices (int Row, int NumIndices, int *Indices) |
| int | MakeIndicesLocal (const Epetra_BlockMap &DomainMap, const Epetra_BlockMap &RangeMap) |
| void | SetIndicesAreLocal (bool Flag) |
| void | SetIndicesAreGlobal (bool Flag) |
| void | SetSorted (bool Flag) |
| int | SortIndices () |
| Sort column indices, row-by-row, in ascending order. | |
| bool | Sorted () const |
| If SortIndices() has been called, this query returns true, otherwise it returns false. | |
| int | RemoveRedundantIndices () |
| Removes any redundant column indices in the rows of the graph. | |
| bool | NoRedundancies () const |
| If RemoveRedundantIndices() has been called, this query returns true, otherwise it returns false. | |
Friends | |
| class | Epetra_CrsMatrix |
| class | Epetra_VbrMatrix |
| class | Epetra_FECrsGraph |
| class | Epetra_FECrsMatrix |
| class | Epetra_FEVbrMatrix |
| class | Epetra_OffsetIndex |
Epetra_CrsGraph enables the piecewise construction and use of sparse matrix graphs (the integer structure without values) where entries are intended for row access.
Epetra_CrsGraph is an attribute of all Epetra row-based matrix classes, defining their nonzero structure and also holding their Epetra_Map attributes.
Constructing Epetra_CrsGraph objects
Constructing Epetra_CrsGraph objects is a multi-step process. The basic steps are as follows:
Performance Enhancement Issues
The Epetra_CrsGraph class attempts to address four basic types of situations, depending on the user's primary concern:
Notes:
Epetra_Map attributes
Epetra_CrsGraph objects have four Epetra_Map attributes.
The Epetra_Map attributes can be obtained via these accessor methods:
It is important to note that while the row-map and the range-map are often the same, the column-map and the domain-map are almost never the same. The set of entries in a distributed column-map almost always form overlapping sets, with entries being associated with more than one processor. A domain-map, on the other hand, must be a 1-to-1 map, with entries being associated with only a single processor.
Global versus Local indices
After creation and before FillComplete() has been called, the column-indices of the graph are in the global space as received from the user. One of the tasks performed by FillComplete() is to transform the indices to a local index space. The query methods IndicesAreGlobal() and IndicesAreLocal() return true or false depending on whether this transformation has been performed or not.
Note the behavior of several graph methods:
Note that even after a graph is constructed, it is possible to add or remove entries. However, FillComplete must then be called again to restore the graph to a consistent state.
|
||||||||||||||||||||
|
Epetra_CrsGraph constuctor with variable number of indices per row. Creates a Epetra_CrsGraph object and allocates storage.
|
|
||||||||||||||||||||
|
Epetra_CrsGraph constuctor with fixed number of indices per row. Creates a Epetra_CrsGraph object and allocates storage.
|
|
||||||||||||||||||||||||
|
Epetra_CrsGraph constuctor with variable number of indices per row. Creates a Epetra_CrsGraph object and allocates storage.
|
|
||||||||||||||||||||||||
|
Epetra_CrsGraph constuctor with fixed number of indices per row. Creates a Epetra_CrsGraph object and allocates storage.
|
|
|
Copy constructor. This will create a Level 1 deep copy. This Graph will share ownership of the CrsGraphData object with the right hand side Graph. |
|
|
Returns the Column Map associated with this graph.
|
|
|
Returns a pointer to the CrsGraphData instance this CrsGraph uses. (Intended for developer use only for testing purposes.) |
|
|
Returns the DomainMap associated with this graph.
|
|
||||||||||||||||||||
|
Extract a list of elements in a specified global row of the graph. Put into storage allocated by calling routine.
|
|
||||||||||||||||
|
Get a view of the elements in a specified global row of the graph. This function requires that the graph not be completed (FillComplete() was not called).
|
|
||||||||||||||||||||
|
Extract a list of elements in a specified local row of the graph. Put into storage allocated by calling routine.
|
|
||||||||||||||||
|
Get a view of the elements in a specified local row of the graph. This function requires that the graph be completed FillComplete() was called).
|
|
||||||||||||
|
Transform to local index space using specified Domain/Range maps. Perform other operations to allow optimal matrix operations. Performs this sequence of operations:
|
|
|
Tranform to local index space. Perform other operations to allow optimal matrix operations. This overloading of the FillComplete method assumes that the domain-map and range-map both equal the row-map, and simply calls FillComplete(RowMap(), RowMap()).
|
|
|
Returns the global column index for give local column index, returns IndexBase-1 if we don't have this local column.
|
|
|
Returns the max column dimension of block entries across all processors.
|
|
|
Returns the maximun number of nonzero entries across all rows across all processors.
|
|
|
Returns the maximun number of nonzero points across all rows across all processors. This function returns the max over all processor of MaxNumNonzeros().
|
|
|
Returns the max row dimension of block entries across all processors.
|
|
|
Returns true if we have a well-defined ColMap, and returns false otherwise.
|
|
||||||||||||||||
|
Enter a list of elements in a specified global row of the graph.
|
|
||||||||||||||||
|
Enter a list of elements in a specified local row of the graph.
|
|
|
Returns the local column index for given global column index, returns -1 if no local column for this global column.
|
|
|
If graph is lower triangular in local index space, this query returns true, otherwise it returns false.
|
|
|
Returns the max column dimension of block entries on the processor.
|
|
|
Returns the maximum number of nonzero entries across all rows on this processor.
|
|
|
Returns the maximum number of nonzero points across all rows on this processor. For each entry in the graph, let i = the GRID of the entry and j = the CGID of the entry. Then the entry size is the product of the rowmap elementsize of i and the colmap elementsize of i. Let ki = sum of all entry sizes for the entries in the ith row. For example, if the ith block row had 5 block entries and the element size of each entry was 4-by-4, ki would be 80. Then this function returns the max over all ki for all row on this processor.
|
|
|
Returns the max row dimension of block entries on the processor.
|
|
|
Returns true if the GCID passed in belongs to the calling processor in this map, otherwise returns false.
|
|
|
Returns true if the LRID passed in belongs to the calling processor in this map, otherwise returns false.
|
|
|
If graph has no diagonal entries in global index space, this query returns true, otherwise it returns false.
|
|
|
Returns the number of Block matrix columns in global matrix.
|
|
|
Returns the number of Block diagonal entries in the global graph, based on global row/column index comparisons.
|
|
|
Returns the number of matrix columns in global matrix.
|
|
|
Returns the number of diagonal entries in the global graph, based on global row/column index comparisons.
|
|
|
Returns the number of entries in the global graph.
|
|
|
Returns the number of indices in the global graph.
|
|
|
Returns the number of Block matrix columns on this processor.
|
|
|
Returns the number of Block diagonal entries in the local graph, based on global row/column index comparisons.
|
|
|
Returns the number of entries in the set of column-indices that appear on this processor. The set of column-indices that appear on this processor is the union of column-indices that appear in all local rows. The size of this set isn't available until FillComplete() has been called.
|
|
|
Returns the number of diagonal entries in the local graph, based on global row/column index comparisons.
|
|
|
Returns the number of entries on this processor.
|
|
|
Returns the number of indices in the local graph.
|
|
|
Assignment operator. This will do a Level 1 deep copy. It will share ownership of the CrsGraphData with the right hand side Graph. |
|
|
Inlined bracket operator for fast access to data. (Const and Non-const versions). No error checking and dangerous for optimization purposes.
|
|
|
Make consecutive row index sections contiguous, minimize internal storage used for constructing graph. After construction and during initialization (when indices are being added via InsertGlobalIndices() etc.), the column- indices for each row are held in a separate piece of allocated memory. This method moves the column-indices for all rows into one large contiguous array and eliminates internal storage that is not needed after graph construction. Calling this method can have a significant impact on memory costs and machine performance. If this object was constructed in View mode then this method can't make non-contiguous indices contiguous and will return a warning code of 1 if the viewed data isn't already contiguous.
|
|
|
Returns the RangeMap associated with this graph.
|
|
|
Returns the reference count of CrsGraphData. (Intended for testing purposes.) |
|
|
Remove all indices from a specified global row of the graph.
|
|
||||||||||||||||
|
Remove a list of elements from a specified global row of the graph.
|
|
|
Remove all indices from a specified local row of the graph.
|
|
||||||||||||||||
|
Remove a list of elements from a specified local row of the graph.
|
|
|
Removes any redundant column indices in the rows of the graph.
|
|
|
Replaces the current ColMap with the user-specified map object, but only if currentmap->PointSameAs(newmap) is true. This is a collective function. Returns 0 if map is replaced, -1 if not.
|
|
|
Replaces the current RowMap with the user-specified map object, but only if currentmap->PointSameAs(newmap) is true. This is a collective function. Returns 0 if map is replaced, -1 if not.
|
|
|
Sort column indices, row-by-row, in ascending order.
|
|
|
If graph is upper triangular in local index space, this query returns true, otherwise it returns false.
|
1.3.9.1