43 #ifndef IFPACK_DIAGONALFILTER_H 44 #define IFPACK_DIAGONALFILTER_H 46 #include "Ifpack_ConfigDefs.h" 47 #include "Epetra_ConfigDefs.h" 48 #include "Epetra_RowMatrix.h" 49 #include "Epetra_Time.h" 50 #include "Teuchos_RefCountPtr.hpp" 54 class Epetra_MultiVector;
56 class Epetra_BlockMap;
85 double AbsoluteThreshold,
86 double RelativeThreshold);
94 return(A_->NumMyRowEntries(MyRow, NumEntries));
100 return(A_->MaxNumEntries());
103 inline virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int& NumEntries,
104 double* Values,
int* Indices)
const;
106 virtual int ExtractDiagonalCopy(Epetra_Vector & Diagonal)
const 108 int ierr = A_->ExtractDiagonalCopy(Diagonal);
112 virtual int Multiply(
bool TransA,
const Epetra_MultiVector& X,
113 Epetra_MultiVector& Y)
const;
115 virtual int Solve(
bool Upper,
bool Trans,
bool UnitDiagonal,
116 const Epetra_MultiVector& X,
117 Epetra_MultiVector& Y)
const 122 virtual int Apply(
const Epetra_MultiVector& X,
123 Epetra_MultiVector& Y)
const 125 int ierr = Multiply(UseTranspose(),X,Y);
129 virtual int ApplyInverse(
const Epetra_MultiVector& X,
130 Epetra_MultiVector& Y)
const 135 virtual int InvRowSums(Epetra_Vector& x)
const 140 virtual int LeftScale(
const Epetra_Vector& x)
142 return(A_->LeftScale(x));
145 virtual int InvColSums(Epetra_Vector& x)
const 150 virtual int RightScale(
const Epetra_Vector& x)
152 return(A_->RightScale(x));
155 virtual bool Filled()
const 157 return(A_->Filled());
172 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 173 virtual int NumGlobalNonzeros()
const 175 return(A_->NumGlobalNonzeros());
178 virtual int NumGlobalRows()
const 180 return(A_->NumGlobalRows());
183 virtual int NumGlobalCols()
const 185 return(A_->NumGlobalCols());
188 virtual int NumGlobalDiagonals()
const 190 return(A_->NumGlobalDiagonals());
194 virtual long long NumGlobalNonzeros64()
const 196 return(A_->NumGlobalNonzeros64());
199 virtual long long NumGlobalRows64()
const 201 return(A_->NumGlobalRows64());
204 virtual long long NumGlobalCols64()
const 206 return(A_->NumGlobalCols64());
209 virtual long long NumGlobalDiagonals64()
const 211 return(A_->NumGlobalDiagonals64());
214 virtual int NumMyNonzeros()
const 216 return(A_->NumMyNonzeros());
219 virtual int NumMyRows()
const 221 return(A_->NumMyRows());
224 virtual int NumMyCols()
const 226 return(A_->NumMyCols());
229 virtual int NumMyDiagonals()
const 231 return(A_->NumMyDiagonals());
234 virtual bool LowerTriangular()
const 236 return(A_->LowerTriangular());
239 virtual bool UpperTriangular()
const 241 return(A_->UpperTriangular());
244 virtual const Epetra_Map& RowMatrixRowMap()
const 246 return(A_->RowMatrixRowMap());
249 virtual const Epetra_Map& RowMatrixColMap()
const 251 return(A_->RowMatrixColMap());
254 virtual const Epetra_Import* RowMatrixImporter()
const 256 return(A_->RowMatrixImporter());
259 int SetUseTranspose(
bool UseTranspose_in)
261 return(A_->SetUseTranspose(UseTranspose_in));
264 bool UseTranspose()
const 266 return(A_->UseTranspose());
275 const Epetra_Comm& Comm()
const 280 const Epetra_Map& OperatorDomainMap()
const 282 return(A_->OperatorDomainMap());
285 const Epetra_Map& OperatorRangeMap()
const 287 return(A_->OperatorRangeMap());
290 const Epetra_BlockMap& Map()
const 295 const char* Label()
const{
302 Teuchos::RefCountPtr<Epetra_RowMatrix> A_;
304 double AbsoluteThreshold_;
306 double RelativeThreshold_;
308 std::vector<int> pos_;
310 std::vector<double> val_;
virtual double NormInf() const
Not implemented for efficiency reasons.
Ifpack_DiagonalFilter: Filter to modify the diagonal entries of a given Epetra_RowMatrix.
virtual int MaxNumEntries() const
Returns the maximum number of entries.
virtual ~Ifpack_DiagonalFilter()
Destructor.
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
Ifpack_DiagonalFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix, double AbsoluteThreshold, double RelativeThreshold)
Constructor.
bool HasNormInf() const
Not implemented for efficiency reasons.
virtual double NormOne() const
Not implemented for efficiency reasons.