43 #ifndef IFPACK_SPARSITYFILTER_H 44 #define IFPACK_SPARSITYFILTER_H 46 #include "Ifpack_ConfigDefs.h" 47 #include "Epetra_RowMatrix.h" 48 #include "Teuchos_RefCountPtr.hpp" 52 class Epetra_MultiVector;
54 class Epetra_BlockMap;
62 int AllowedNumEntries,
63 int AllowedBandwidth = -1);
67 virtual inline int NumMyRowEntries(
int MyRow,
int & NumEntries)
const 69 NumEntries = NumEntries_[MyRow];
73 virtual int MaxNumEntries()
const 75 return(MaxNumEntries_);
78 virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
double *Values,
int * Indices)
const;
80 virtual int ExtractDiagonalCopy(Epetra_Vector & Diagonal)
const;
82 virtual int Multiply(
bool TransA,
const Epetra_MultiVector& X,
83 Epetra_MultiVector& Y)
const;
85 virtual int Solve(
bool Upper,
bool Trans,
bool UnitDiagonal,
86 const Epetra_MultiVector& X,
87 Epetra_MultiVector& Y)
const;
89 virtual int Apply(
const Epetra_MultiVector& X,
90 Epetra_MultiVector& Y)
const;
92 virtual int ApplyInverse(
const Epetra_MultiVector& X,
93 Epetra_MultiVector& Y)
const;
95 virtual int InvRowSums(Epetra_Vector& x)
const 100 virtual int LeftScale(
const Epetra_Vector& x)
105 virtual int InvColSums(Epetra_Vector& x)
const 110 virtual int RightScale(
const Epetra_Vector& x)
112 return(A_->RightScale(x));
115 virtual bool Filled()
const 117 return(A_->Filled());
120 virtual double NormInf()
const 125 virtual double NormOne()
const 130 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 131 virtual int NumGlobalNonzeros()
const 133 return(NumNonzeros_);
136 virtual int NumGlobalRows()
const 141 virtual int NumGlobalCols()
const 146 virtual int NumGlobalDiagonals()
const 152 virtual long long NumGlobalNonzeros64()
const 154 return(NumNonzeros_);
157 virtual long long NumGlobalRows64()
const 162 virtual long long NumGlobalCols64()
const 167 virtual long long NumGlobalDiagonals64()
const 172 virtual int NumMyNonzeros()
const 174 return(NumNonzeros_);
177 virtual int NumMyRows()
const 182 virtual int NumMyCols()
const 187 virtual int NumMyDiagonals()
const 192 virtual bool LowerTriangular()
const 197 virtual bool UpperTriangular()
const 202 virtual const Epetra_Map & RowMatrixRowMap()
const 204 return(A_->RowMatrixRowMap());
207 virtual const Epetra_Map & RowMatrixColMap()
const 209 return(A_->RowMatrixColMap());
212 virtual const Epetra_Import * RowMatrixImporter()
const 214 return(A_->RowMatrixImporter());
217 int SetUseTranspose(
bool useTranspose)
219 return(A_->SetUseTranspose(useTranspose));
222 bool UseTranspose()
const 224 return(A_->UseTranspose());
227 bool HasNormInf()
const 232 const Epetra_Comm & Comm()
const 237 const Epetra_Map & OperatorDomainMap()
const 239 return(A_->OperatorDomainMap());
242 const Epetra_Map & OperatorRangeMap()
const 244 return(A_->OperatorRangeMap());
247 const Epetra_BlockMap& Map()
const 252 const char* Label()
const{
259 Teuchos::RefCountPtr<Epetra_RowMatrix> A_;
265 int AllowedBandwidth_;
273 mutable std::vector<int> Indices_;
275 mutable std::vector<double> Values_;
280 std::vector<int> NumEntries_;
Ifpack_SparsityFilter: a class to drop based on sparsity.