43 #ifndef IFPACK_SPARSITYFILTER_H 44 #define IFPACK_SPARSITYFILTER_H 47 #include "Epetra_RowMatrix.h" 48 #include "Teuchos_RefCountPtr.hpp" 62 int AllowedNumEntries,
63 int AllowedBandwidth = -1);
78 virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
double *Values,
int * Indices)
const;
85 virtual int Solve(
bool Upper,
bool Trans,
bool UnitDiagonal,
112 return(
A_->RightScale(x));
117 return(
A_->Filled());
130 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 204 return(
A_->RowMatrixRowMap());
209 return(
A_->RowMatrixColMap());
214 return(
A_->RowMatrixImporter());
219 return(
A_->SetUseTranspose(useTranspose));
224 return(
A_->UseTranspose());
239 return(
A_->OperatorDomainMap());
244 return(
A_->OperatorRangeMap());
259 Teuchos::RefCountPtr<Epetra_RowMatrix>
A_;
int AllowedEntries_
Maximum allowed entries per row.
virtual const Epetra_Map & RowMatrixColMap() const
virtual int LeftScale(const Epetra_Vector &x)
const Epetra_Map & OperatorDomainMap() const
virtual double NormInf() const
char Label_[80]
Label for this object.
std::vector< int > Indices_
Used in ExtractMyRowCopy, to avoid allocation each time.
virtual bool UpperTriangular() const
const char * Label() const
const Epetra_Comm & Comm() const
virtual const Epetra_Map & RowMatrixRowMap() const
int MaxNumEntries_
Maximum entries in each row.
virtual int NumMyRows() const
bool UseTranspose() const
virtual long long NumGlobalCols64() const
virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual int NumGlobalCols() const
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual long long NumGlobalNonzeros64() const
virtual int NumGlobalDiagonals() const
std::vector< double > Values_
Used in ExtractMyRowCopy, to avoid allocation each time.
Ifpack_SparsityFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix, int AllowedNumEntries, int AllowedBandwidth=-1)
virtual int NumGlobalNonzeros() const
virtual long long NumGlobalDiagonals64() const
virtual int NumGlobalRows() const
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
virtual int InvRowSums(Epetra_Vector &x) const
virtual double NormOne() const
virtual int InvColSums(Epetra_Vector &x) const
virtual int RightScale(const Epetra_Vector &x)
virtual ~Ifpack_SparsityFilter()
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const
const Epetra_BlockMap & Map() const
int SetUseTranspose(bool useTranspose)
std::vector< int > NumEntries_
int NumNonzeros_
Number of nonzeros for the dropped matrix.
virtual int NumMyDiagonals() const
virtual int NumMyNonzeros() const
Teuchos::RefCountPtr< Epetra_RowMatrix > A_
Pointer to the matrix to be preconditioned.
virtual const Epetra_Import * RowMatrixImporter() const
virtual int MaxNumEntries() const
Ifpack_SparsityFilter: a class to drop based on sparsity.
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual bool LowerTriangular() const
virtual long long NumGlobalRows64() const
int AllowedBandwidth_
Maximum allowed bandwidth.
virtual bool Filled() const
virtual int NumMyCols() const
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const
const Epetra_Map & OperatorRangeMap() const