43 #ifndef IFPACK_DROPFILTER_H 44 #define IFPACK_DROPFILTER_H 46 #include "Ifpack_ConfigDefs.h" 47 #include "Epetra_RowMatrix.h" 48 #include "Teuchos_RefCountPtr.hpp" 52 class Epetra_MultiVector;
54 class Epetra_BlockMap;
94 NumEntries = NumEntries_[MyRow];
101 return(MaxNumEntries_);
104 virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
double *Values,
int * Indices)
const;
106 virtual int ExtractDiagonalCopy(Epetra_Vector & Diagonal)
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;
118 virtual int ApplyInverse(
const Epetra_MultiVector& X,
119 Epetra_MultiVector& Y)
const;
121 virtual int InvRowSums(Epetra_Vector& x)
const;
123 virtual int LeftScale(
const Epetra_Vector& x)
125 return(A_->LeftScale(x));
128 virtual int InvColSums(Epetra_Vector& x)
const;
130 virtual int RightScale(
const Epetra_Vector& x)
132 return(A_->RightScale(x));
135 virtual bool Filled()
const 137 return(A_->Filled());
140 virtual double NormInf()
const 145 virtual double NormOne()
const 150 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 151 virtual int NumGlobalNonzeros()
const 153 return(NumNonzeros_);
156 virtual int NumGlobalRows()
const 161 virtual int NumGlobalCols()
const 166 virtual int NumGlobalDiagonals()
const 172 virtual long long NumGlobalNonzeros64()
const 174 return(NumNonzeros_);
177 virtual long long NumGlobalRows64()
const 182 virtual long long NumGlobalCols64()
const 187 virtual long long NumGlobalDiagonals64()
const 192 virtual int NumMyNonzeros()
const 194 return(NumNonzeros_);
197 virtual int NumMyRows()
const 202 virtual int NumMyCols()
const 207 virtual int NumMyDiagonals()
const 212 virtual bool LowerTriangular()
const 217 virtual bool UpperTriangular()
const 222 virtual const Epetra_Map & RowMatrixRowMap()
const 224 return(A_->RowMatrixRowMap());
227 virtual const Epetra_Map & RowMatrixColMap()
const 229 return(A_->RowMatrixColMap());
232 virtual const Epetra_Import * RowMatrixImporter()
const 234 return(A_->RowMatrixImporter());
237 int SetUseTranspose(
bool useTranspose)
239 return(A_->SetUseTranspose(useTranspose));
242 bool UseTranspose()
const 244 return(A_->UseTranspose());
247 bool HasNormInf()
const 252 const Epetra_Comm & Comm()
const 257 const Epetra_Map & OperatorDomainMap()
const 259 return(A_->OperatorDomainMap());
262 const Epetra_Map & OperatorRangeMap()
const 264 return(A_->OperatorRangeMap());
267 const Epetra_BlockMap& Map()
const 272 const char* Label()
const{
279 Teuchos::RefCountPtr<Epetra_RowMatrix> A_;
291 mutable std::vector<int> Indices_;
293 mutable std::vector<double> Values_;
296 std::vector<int> NumEntries_;
virtual int MaxNumEntries() const
Returns the maximum number of entries.
Ifpack_DropFilter: Filter based on matrix entries.
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
virtual ~Ifpack_DropFilter()
Destructor.
Ifpack_DropFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix, double DropTol)
Constructor.