43 #ifndef IFPACK_DROPFILTER_H 44 #define IFPACK_DROPFILTER_H 47 #include "Epetra_RowMatrix.h" 48 #include "Teuchos_RefCountPtr.hpp" 52 class Epetra_MultiVector;
54 class Epetra_BlockMap;
104 virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
double *Values,
int * Indices)
const;
108 virtual int Multiply(
bool TransA,
const Epetra_MultiVector& X,
109 Epetra_MultiVector& Y)
const;
111 virtual int Solve(
bool Upper,
bool Trans,
bool UnitDiagonal,
112 const Epetra_MultiVector& X,
113 Epetra_MultiVector& Y)
const;
115 virtual int Apply(
const Epetra_MultiVector& X,
116 Epetra_MultiVector& Y)
const;
119 Epetra_MultiVector& Y)
const;
121 virtual int InvRowSums(Epetra_Vector& x)
const;
125 return(
A_->LeftScale(x));
128 virtual int InvColSums(Epetra_Vector& x)
const;
132 return(
A_->RightScale(x));
137 return(
A_->Filled());
150 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 224 return(
A_->RowMatrixRowMap());
229 return(
A_->RowMatrixColMap());
234 return(
A_->RowMatrixImporter());
239 return(
A_->SetUseTranspose(useTranspose));
244 return(
A_->UseTranspose());
252 const Epetra_Comm &
Comm()
const 259 return(
A_->OperatorDomainMap());
264 return(
A_->OperatorRangeMap());
267 const Epetra_BlockMap&
Map()
const 279 Teuchos::RefCountPtr<Epetra_RowMatrix>
A_;
virtual const Epetra_Map & RowMatrixRowMap() const
const Epetra_Comm & Comm() const
virtual double NormInf() const
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const
const Epetra_BlockMap & Map() const
virtual int NumGlobalDiagonals() const
virtual long long NumGlobalRows64() const
virtual const Epetra_Import * RowMatrixImporter() const
virtual int RightScale(const Epetra_Vector &x)
double DropTol_
Drop tolerance.
virtual int MaxNumEntries() const
Returns the maximum number of entries.
Teuchos::RefCountPtr< Epetra_RowMatrix > A_
Pointer to the matrix to be preconditioned.
const Epetra_Map & OperatorRangeMap() const
Ifpack_DropFilter: Filter based on matrix entries.
virtual int InvRowSums(Epetra_Vector &x) const
virtual long long NumGlobalNonzeros64() const
const Epetra_Map & OperatorDomainMap() const
virtual bool Filled() const
virtual double NormOne() const
virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual int LeftScale(const Epetra_Vector &x)
char Label_[80]
Label for this object.
const char * Label() const
virtual int NumMyCols() const
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual int NumGlobalCols() const
virtual bool LowerTriangular() const
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
virtual long long NumGlobalCols64() const
virtual int NumMyRows() const
virtual long long NumGlobalDiagonals64() const
virtual bool UpperTriangular() const
int SetUseTranspose(bool useTranspose)
int NumNonzeros_
Number of nonzeros for the dropped matrix.
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual int NumMyDiagonals() const
bool UseTranspose() const
virtual int NumGlobalRows() const
int MaxNumEntries_
Maximum entries in each row.
virtual const Epetra_Map & RowMatrixColMap() const
std::vector< double > Values_
Used in ExtractMyRowCopy, to avoid allocation each time.
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const
virtual int InvColSums(Epetra_Vector &x) const
virtual ~Ifpack_DropFilter()
Destructor.
std::vector< int > NumEntries_
virtual int NumMyNonzeros() const
Ifpack_DropFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix, double DropTol)
Constructor.
std::vector< int > Indices_
Used in ExtractMyRowCopy, to avoid allocation each time.
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual int NumGlobalNonzeros() const