IFPACK Development
|
Ifpack_ReorderFilter: a class for light-weight reorder of local rows and columns of an Epetra_RowMatrix. More...
#include <Ifpack_ReorderFilter.h>
Public Member Functions | |
Ifpack_ReorderFilter (const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix_in, const Teuchos::RefCountPtr< Ifpack_Reordering > &Reordering_in) | |
Ifpack_ReorderFilter (const Ifpack_ReorderFilter &RHS) | |
Copy constructor. | |
virtual | ~Ifpack_ReorderFilter () |
Destructor. | |
Ifpack_ReorderFilter & | operator= (const Ifpack_ReorderFilter &RHS) |
Operator assignment. | |
virtual int | NumMyRowEntries (int MyRow, int &NumEntries) const |
Returns the number of local row entries. | |
virtual int | MaxNumEntries () const |
Returns maximum num entries. | |
virtual int | ExtractMyRowCopy (int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const |
virtual int | ExtractDiagonalCopy (Epetra_Vector &Diagonal) const |
Extracts a copy of the diagonal of the reordered matrix. | |
virtual int | Multiply (bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
Multiplies multi-vector X with the reordered matrix, returns result in Y. | |
virtual int | Solve (bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
Solve, not implemented. | |
virtual int | Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
Applies the reordered matrix to multi-vector X, returns the result in Y. | |
virtual int | ApplyInverse (const Epetra_MultiVector &, Epetra_MultiVector &) const |
Applies the inverse of this operator (not implemented). | |
virtual int | InvRowSums (Epetra_Vector &) const |
Inverse of row sums (not implemented). | |
virtual int | LeftScale (const Epetra_Vector &) |
Left scale of the matrix (not implemented). | |
virtual int | InvColSums (Epetra_Vector &) const |
Inverse of column sums (not implemented). | |
virtual int | RightScale (const Epetra_Vector &) |
Right scale of the matrix (not implemented). | |
virtual bool | Filled () const |
Returns true is the matrix called FillComplete(). | |
virtual double | NormInf () const |
Returns the infinite-norm. | |
virtual double | NormOne () const |
Returns the 1-norm. | |
virtual int | NumGlobalNonzeros () const |
Returns the number of global nonzero elements. | |
virtual int | NumGlobalRows () const |
Returns the number of global rows. | |
virtual int | NumGlobalCols () const |
Returns the number of global columns. | |
virtual int | NumGlobalDiagonals () const |
Returns the number of global diagonals. | |
virtual long long | NumGlobalNonzeros64 () const |
Returns the number of global nonzero elements. | |
virtual long long | NumGlobalRows64 () const |
Returns the number of global rows. | |
virtual long long | NumGlobalCols64 () const |
Returns the number of global columns. | |
virtual long long | NumGlobalDiagonals64 () const |
Returns the number of global diagonals. | |
virtual int | NumMyNonzeros () const |
Returns the number of local nonzero elements. | |
virtual int | NumMyRows () const |
Returns the number of local rows. | |
virtual int | NumMyCols () const |
Returns the number of local columns. | |
virtual int | NumMyDiagonals () const |
Returns the number of local diagonals. | |
virtual bool | LowerTriangular () const |
Returns true is the reordered matrix is lower triangular. | |
virtual bool | UpperTriangular () const |
Returns true is the reordered matrix is upper triangular. | |
virtual const Epetra_Map & | RowMatrixRowMap () const |
Returns the row matrix of the non-reordered matrix. | |
virtual const Epetra_Map & | RowMatrixColMap () const |
Returns the column matrix of the non-reordered matrix. | |
virtual const Epetra_Import * | RowMatrixImporter () const |
Returns the importer of the non-reordered matrix. | |
int | SetUseTranspose (bool UseTranspose_in) |
Sets the use of the transpose. | |
bool | UseTranspose () const |
Returns true if the transpose of this matrix is used. | |
bool | HasNormInf () const |
Returns true if this matrix has the infinite norm. | |
const Epetra_Comm & | Comm () const |
Returns the communicator. | |
const Epetra_Map & | OperatorDomainMap () const |
Returns the operator domain map of the non-reordered matrix. | |
const Epetra_Map & | OperatorRangeMap () const |
Returns the operator domain range of the non-reordered matrix. | |
const Epetra_BlockMap & | Map () const |
Returns the map of the non-reordered matrix. | |
const char * | Label () const |
Returns the label of this object. | |
Teuchos::RefCountPtr< Epetra_RowMatrix > | Matrix () const |
Returns a reference-counted pointer to the internally stored pointer to Epetra_RowMatrix. | |
Teuchos::RefCountPtr< Ifpack_Reordering > | Reordering () const |
Returns a reference-counted pointer to the internally stored pointer to Ifpack_Reordering.. | |
virtual int | NumMyRowEntries (int MyRow, int &NumEntries) const=0 |
virtual int | MaxNumEntries () const=0 |
virtual int | ExtractMyRowCopy (int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const=0 |
virtual int | ExtractDiagonalCopy (Epetra_Vector &Diagonal) const=0 |
virtual int | Multiply (bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual int | Solve (bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual int | InvRowSums (Epetra_Vector &x) const=0 |
virtual int | LeftScale (const Epetra_Vector &x)=0 |
virtual int | InvColSums (Epetra_Vector &x) const=0 |
virtual int | RightScale (const Epetra_Vector &x)=0 |
virtual bool | Filled () const=0 |
virtual double | NormInf () const=0 |
virtual double | NormOne () const=0 |
virtual int | NumGlobalNonzeros () const=0 |
virtual int | NumGlobalRows () const=0 |
virtual int | NumGlobalCols () const=0 |
virtual int | NumGlobalDiagonals () const=0 |
virtual int | NumMyNonzeros () const=0 |
virtual int | NumMyRows () const=0 |
virtual int | NumMyCols () const=0 |
virtual int | NumMyDiagonals () const=0 |
virtual bool | LowerTriangular () const=0 |
virtual bool | UpperTriangular () const=0 |
virtual const Epetra_Map & | RowMatrixRowMap () const=0 |
virtual const Epetra_Map & | RowMatrixColMap () const=0 |
virtual const Epetra_Import * | RowMatrixImporter () const=0 |
virtual int | NumMyRowEntries (int MyRow, int &NumEntries) const=0 |
virtual int | MaxNumEntries () const=0 |
virtual int | ExtractMyRowCopy (int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const=0 |
virtual int | ExtractDiagonalCopy (Epetra_Vector &Diagonal) const=0 |
virtual int | Multiply (bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual int | Solve (bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual int | InvRowSums (Epetra_Vector &x) const=0 |
virtual int | LeftScale (const Epetra_Vector &x)=0 |
virtual int | InvColSums (Epetra_Vector &x) const=0 |
virtual int | RightScale (const Epetra_Vector &x)=0 |
virtual bool | Filled () const=0 |
virtual double | NormInf () const=0 |
virtual double | NormOne () const=0 |
virtual int | NumGlobalNonzeros () const=0 |
virtual int | NumGlobalRows () const=0 |
virtual int | NumGlobalCols () const=0 |
virtual int | NumGlobalDiagonals () const=0 |
virtual int | NumMyNonzeros () const=0 |
virtual int | NumMyRows () const=0 |
virtual int | NumMyCols () const=0 |
virtual int | NumMyDiagonals () const=0 |
virtual bool | LowerTriangular () const=0 |
virtual bool | UpperTriangular () const=0 |
virtual const Epetra_Map & | RowMatrixRowMap () const=0 |
virtual const Epetra_Map & | RowMatrixColMap () const=0 |
virtual const Epetra_Import * | RowMatrixImporter () const=0 |
virtual int | SetUseTranspose (bool UseTranspose)=0 |
virtual int | Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual int | ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual double | NormInf () const=0 |
virtual const char * | Label () const=0 |
virtual bool | UseTranspose () const=0 |
virtual bool | HasNormInf () const=0 |
virtual const Epetra_Comm & | Comm () const=0 |
virtual const Epetra_Map & | OperatorDomainMap () const=0 |
virtual const Epetra_Map & | OperatorRangeMap () const=0 |
virtual int | SetUseTranspose (bool UseTranspose)=0 |
virtual int | Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual int | ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const=0 |
virtual double | NormInf () const=0 |
virtual const char * | Label () const=0 |
virtual bool | UseTranspose () const=0 |
virtual bool | HasNormInf () const=0 |
virtual const Epetra_Comm & | Comm () const=0 |
virtual const Epetra_Map & | OperatorDomainMap () const=0 |
virtual const Epetra_Map & | OperatorRangeMap () const=0 |
virtual const Epetra_BlockMap & | Map () const=0 |
virtual const Epetra_BlockMap & | Map () const=0 |
Ifpack_ReorderFilter: a class for light-weight reorder of local rows and columns of an Epetra_RowMatrix.
Class Ifpack_ReorderFilter enables a light-weight construction of reordered matrices.
This class is used in Ifpack_AdditiveSchwarz to reorder (if required by the user) the localized matrix. As the localized matrix is defined on a serial communicator only, all maps are trivial (as all elements reside on the same process). This class does not attemp to define properly reordered maps, hence it should not be used for distributed matrices.
To improve the performances of Ifpack_AdditiveSchwarz, some operations are not performed in the construction phase (like for instance the computation of the 1-norm and infinite-norm, of check whether the reordered matrix is lower/upper triangular or not).
Definition at line 81 of file Ifpack_ReorderFilter.h.
Ifpack_ReorderFilter::Ifpack_ReorderFilter | ( | const Teuchos::RefCountPtr< Epetra_RowMatrix > & | Matrix_in, |
const Teuchos::RefCountPtr< Ifpack_Reordering > & | Reordering_in | ||
) |
Definition at line 54 of file Ifpack_ReorderFilter.cpp.
Ifpack_ReorderFilter::Ifpack_ReorderFilter | ( | const Ifpack_ReorderFilter & | RHS | ) |
Copy constructor.
Definition at line 64 of file Ifpack_ReorderFilter.cpp.
|
inlinevirtual |
Destructor.
Definition at line 92 of file Ifpack_ReorderFilter.h.
|
virtual |
Applies the reordered matrix to multi-vector X, returns the result in Y.
Implements Epetra_Operator.
Definition at line 147 of file Ifpack_ReorderFilter.cpp.
References Multiply(), and UseTranspose().
|
inlinevirtual |
Applies the inverse of this
operator (not implemented).
Implements Epetra_Operator.
Definition at line 129 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns the communicator.
Implements Epetra_Operator.
Definition at line 301 of file Ifpack_ReorderFilter.h.
References Comm(), and Matrix().
Referenced by Comm().
|
virtual |
Extracts a copy of the diagonal of the reordered matrix.
Implements Epetra_RowMatrix.
Definition at line 110 of file Ifpack_ReorderFilter.cpp.
References ExtractDiagonalCopy(), Epetra_DistObject::Map(), and Matrix().
Referenced by ExtractDiagonalCopy().
|
virtual |
Implements Epetra_RowMatrix.
Definition at line 91 of file Ifpack_ReorderFilter.cpp.
|
inlinevirtual |
Returns true
is the matrix called FillComplete().
Implements Epetra_RowMatrix.
Definition at line 160 of file Ifpack_ReorderFilter.h.
References Filled(), and Matrix().
Referenced by Filled().
|
inlinevirtual |
Returns true
if this
matrix has the infinite norm.
Implements Epetra_Operator.
Definition at line 295 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Inverse of column sums (not implemented).
Implements Epetra_RowMatrix.
Definition at line 148 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Inverse of row sums (not implemented).
Implements Epetra_RowMatrix.
Definition at line 136 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns the label of this
object.
Implements Epetra_Operator.
Definition at line 325 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Left scale of the matrix (not implemented).
Implements Epetra_RowMatrix.
Definition at line 142 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns true
is the reordered matrix is lower triangular.
Implements Epetra_RowMatrix.
Definition at line 253 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns the map of the non-reordered matrix.
Implements Epetra_SrcDistObject.
Definition at line 319 of file Ifpack_ReorderFilter.h.
References Map(), and Matrix().
Referenced by Map().
|
inline |
Returns a reference-counted pointer to the internally stored pointer to Epetra_RowMatrix.
Definition at line 330 of file Ifpack_ReorderFilter.h.
Referenced by Comm(), ExtractDiagonalCopy(), Filled(), Map(), Multiply(), NumGlobalCols(), NumGlobalCols64(), NumGlobalDiagonals(), NumGlobalDiagonals64(), NumGlobalNonzeros(), NumGlobalNonzeros64(), NumGlobalRows(), NumGlobalRows64(), NumMyCols(), NumMyDiagonals(), NumMyNonzeros(), NumMyRowEntries(), NumMyRows(), OperatorDomainMap(), OperatorRangeMap(), RowMatrixColMap(), RowMatrixImporter(), RowMatrixRowMap(), SetUseTranspose(), and UseTranspose().
|
inlinevirtual |
Returns maximum num entries.
Implements Epetra_RowMatrix.
Definition at line 104 of file Ifpack_ReorderFilter.h.
|
virtual |
Multiplies multi-vector X with the reordered matrix, returns result in Y.
Implements Epetra_RowMatrix.
Definition at line 120 of file Ifpack_ReorderFilter.cpp.
References Epetra_DistObject::Map(), Matrix(), Multiply(), and Epetra_MultiVector::NumVectors().
Referenced by Apply(), and Multiply().
|
inlinevirtual |
Returns the infinite-norm.
Implements Epetra_RowMatrix.
Definition at line 166 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns the 1-norm.
Implements Epetra_RowMatrix.
Definition at line 172 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns the number of global columns.
Implements Epetra_RowMatrix.
Definition at line 192 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalCols().
Referenced by NumGlobalCols().
|
inlinevirtual |
Returns the number of global columns.
Definition at line 217 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalCols64().
Referenced by NumGlobalCols64().
|
inlinevirtual |
Returns the number of global diagonals.
Implements Epetra_RowMatrix.
Definition at line 198 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalDiagonals().
Referenced by NumGlobalDiagonals().
|
inlinevirtual |
Returns the number of global diagonals.
Definition at line 223 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalDiagonals64().
Referenced by NumGlobalDiagonals64().
|
inlinevirtual |
Returns the number of global nonzero elements.
Implements Epetra_RowMatrix.
Definition at line 180 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalNonzeros().
Referenced by NumGlobalNonzeros().
|
inlinevirtual |
Returns the number of global nonzero elements.
Definition at line 205 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalNonzeros64().
Referenced by NumGlobalNonzeros64().
|
inlinevirtual |
Returns the number of global rows.
Implements Epetra_RowMatrix.
Definition at line 186 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalRows().
Referenced by NumGlobalRows().
|
inlinevirtual |
Returns the number of global rows.
Definition at line 211 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumGlobalRows64().
Referenced by NumGlobalRows64().
|
inlinevirtual |
Returns the number of local columns.
Implements Epetra_RowMatrix.
Definition at line 241 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumMyCols().
Referenced by NumMyCols().
|
inlinevirtual |
Returns the number of local diagonals.
Implements Epetra_RowMatrix.
Definition at line 247 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumMyDiagonals().
Referenced by NumMyDiagonals().
|
inlinevirtual |
Returns the number of local nonzero elements.
Implements Epetra_RowMatrix.
Definition at line 229 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumMyNonzeros().
Referenced by NumMyNonzeros().
|
inlinevirtual |
Returns the number of local row entries.
Implements Epetra_RowMatrix.
Definition at line 98 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumMyRowEntries().
Referenced by NumMyRowEntries().
|
inlinevirtual |
Returns the number of local rows.
Implements Epetra_RowMatrix.
Definition at line 235 of file Ifpack_ReorderFilter.h.
References Matrix(), and NumMyRows().
Referenced by NumMyRows().
Ifpack_ReorderFilter & Ifpack_ReorderFilter::operator= | ( | const Ifpack_ReorderFilter & | RHS | ) |
Operator assignment.
Definition at line 75 of file Ifpack_ReorderFilter.cpp.
|
inlinevirtual |
Returns the operator domain map of the non-reordered matrix.
Implements Epetra_Operator.
Definition at line 307 of file Ifpack_ReorderFilter.h.
References Matrix(), and OperatorDomainMap().
Referenced by OperatorDomainMap().
|
inlinevirtual |
Returns the operator domain range of the non-reordered matrix.
Implements Epetra_Operator.
Definition at line 313 of file Ifpack_ReorderFilter.h.
References Matrix(), and OperatorRangeMap().
Referenced by OperatorRangeMap().
|
inline |
Returns a reference-counted pointer to the internally stored pointer to Ifpack_Reordering..
Definition at line 335 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Right scale of the matrix (not implemented).
Implements Epetra_RowMatrix.
Definition at line 154 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns the column matrix of the non-reordered matrix.
Implements Epetra_RowMatrix.
Definition at line 271 of file Ifpack_ReorderFilter.h.
References Matrix(), and RowMatrixColMap().
Referenced by RowMatrixColMap().
|
inlinevirtual |
Returns the importer of the non-reordered matrix.
Implements Epetra_RowMatrix.
Definition at line 277 of file Ifpack_ReorderFilter.h.
References Matrix(), and RowMatrixImporter().
Referenced by RowMatrixImporter().
|
inlinevirtual |
Returns the row matrix of the non-reordered matrix.
Implements Epetra_RowMatrix.
Definition at line 265 of file Ifpack_ReorderFilter.h.
References Matrix(), and RowMatrixRowMap().
Referenced by RowMatrixRowMap().
|
inlinevirtual |
Sets the use of the transpose.
Implements Epetra_Operator.
Definition at line 283 of file Ifpack_ReorderFilter.h.
References Matrix(), and SetUseTranspose().
Referenced by SetUseTranspose().
|
virtual |
Solve, not implemented.
Implements Epetra_RowMatrix.
Definition at line 139 of file Ifpack_ReorderFilter.cpp.
|
inlinevirtual |
Returns true
is the reordered matrix is upper triangular.
Implements Epetra_RowMatrix.
Definition at line 259 of file Ifpack_ReorderFilter.h.
|
inlinevirtual |
Returns true
if the transpose of this
matrix is used.
Implements Epetra_Operator.
Definition at line 289 of file Ifpack_ReorderFilter.h.
References Matrix(), and UseTranspose().
Referenced by Apply(), and UseTranspose().