43 #include "Ifpack_ConfigDefs.h" 44 #include "Ifpack_ReorderFilter.h" 45 #include "Ifpack_Reordering.h" 46 #include "Epetra_ConfigDefs.h" 47 #include "Epetra_RowMatrix.h" 48 #include "Epetra_Comm.h" 49 #include "Epetra_Map.h" 50 #include "Epetra_MultiVector.h" 51 #include "Epetra_Vector.h" 54 Ifpack_ReorderFilter::Ifpack_ReorderFilter(
const Teuchos::RefCountPtr<Epetra_RowMatrix>& Matrix_in,
55 const Teuchos::RefCountPtr<Ifpack_Reordering>& Reordering_in) :
57 Reordering_(Reordering_in),
58 NumMyRows_(Matrix_in->NumMyRows()),
59 MaxNumEntries_(Matrix_in->MaxNumEntries())
66 Reordering_(Reordering()),
68 MaxNumEntries_(RHS.MaxNumEntries())
70 strcpy(Label_,RHS.
Label());
86 strcpy(Label_,RHS.
Label());
91 int Ifpack_ReorderFilter::
92 ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
93 double *Values,
int * Indices)
const 95 int MyReorderdRow = Reordering_->InvReorder(MyRow);
97 IFPACK_CHK_ERR(
Matrix()->ExtractMyRowCopy(MyReorderdRow,MaxNumEntries_,
98 NumEntries, Values,Indices));
102 for (
int i = 0 ; i < NumEntries ; ++i) {
103 Indices[i] = Reordering_->Reorder(Indices[i]);
115 IFPACK_CHK_ERR((Reordering_->P(DiagonalTilde,Diagonal)));
128 Reordering_->Pinv(X,Xtilde);
132 Reordering_->P(Ytilde,Y);
140 Solve(
bool Upper,
bool Trans,
bool UnitDiagonal,
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Applies the reordered matrix to multi-vector X, returns the result in Y.
const Epetra_BlockMap & Map() const
const char * Label() const
Returns the label of this object.
virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Solve, not implemented.
Ifpack_ReorderFilter & operator=(const Ifpack_ReorderFilter &RHS)
Operator assignment.
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.
Teuchos::RefCountPtr< Ifpack_Reordering > Reordering() const
Returns a reference-counted pointer to the internally stored pointer to Ifpack_Reordering..
virtual int MaxNumEntries() const
Returns maximum num entries.
virtual int NumMyRows() const
Returns the number of local rows.
bool UseTranspose() const
Returns true if the transpose of this matrix is used.
Teuchos::RefCountPtr< Epetra_RowMatrix > Matrix() const
Returns a reference-counted pointer to the internally stored pointer to Epetra_RowMatrix.
Ifpack_ReorderFilter: a class for light-weight reorder of local rows and columns of an Epetra_RowMatr...
virtual int NumMyRows() const
Returns the number of local rows.