43#ifndef IFPACK_DIAGONALFILTER_H
44#define IFPACK_DIAGONALFILTER_H
46#if defined(Ifpack_SHOW_DEPRECATED_WARNINGS)
48#warning "The Ifpack package is deprecated"
52#include "Ifpack_ConfigDefs.h"
53#include "Epetra_ConfigDefs.h"
54#include "Epetra_RowMatrix.h"
55#include "Epetra_Time.h"
56#include "Teuchos_RefCountPtr.hpp"
91 double AbsoluteThreshold,
92 double RelativeThreshold);
100 return(A_->NumMyRowEntries(MyRow, NumEntries));
106 return(A_->MaxNumEntries());
109 inline virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int& NumEntries,
110 double* Values,
int* Indices)
const;
112 virtual int ExtractDiagonalCopy(
Epetra_Vector & Diagonal)
const
114 int ierr = A_->ExtractDiagonalCopy(Diagonal);
118 virtual int Multiply(
bool TransA,
const Epetra_MultiVector& X,
119 Epetra_MultiVector& Y)
const;
121 virtual int Solve(
bool ,
bool ,
bool ,
122 const Epetra_MultiVector& ,
123 Epetra_MultiVector& )
const
128 virtual int Apply(
const Epetra_MultiVector& X,
129 Epetra_MultiVector& Y)
const
135 virtual int ApplyInverse(
const Epetra_MultiVector& ,
136 Epetra_MultiVector& )
const
141 virtual int InvRowSums(Epetra_Vector& )
const
146 virtual int LeftScale(
const Epetra_Vector& x)
148 return(A_->LeftScale(x));
151 virtual int InvColSums(Epetra_Vector& )
const
156 virtual int RightScale(
const Epetra_Vector& x)
158 return(A_->RightScale(x));
161 virtual bool Filled()
const
163 return(A_->Filled());
178#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
181 return(A_->NumGlobalNonzeros());
186 return(A_->NumGlobalRows());
191 return(A_->NumGlobalCols());
196 return(A_->NumGlobalDiagonals());
200 virtual long long NumGlobalNonzeros64()
const
202 return(A_->NumGlobalNonzeros64());
205 virtual long long NumGlobalRows64()
const
207 return(A_->NumGlobalRows64());
210 virtual long long NumGlobalCols64()
const
212 return(A_->NumGlobalCols64());
215 virtual long long NumGlobalDiagonals64()
const
217 return(A_->NumGlobalDiagonals64());
222 return(A_->NumMyNonzeros());
227 return(A_->NumMyRows());
232 return(A_->NumMyCols());
237 return(A_->NumMyDiagonals());
242 return(A_->LowerTriangular());
247 return(A_->UpperTriangular());
252 return(A_->RowMatrixRowMap());
257 return(A_->RowMatrixColMap());
262 return(A_->RowMatrixImporter());
265 int SetUseTranspose(
bool UseTranspose_in)
267 return(A_->SetUseTranspose(UseTranspose_in));
272 return(A_->UseTranspose());
288 return(A_->OperatorDomainMap());
293 return(A_->OperatorRangeMap());
296 const Epetra_BlockMap&
Map()
const
301 const char*
Label()
const{
308 Teuchos::RefCountPtr<Epetra_RowMatrix> A_;
310 double AbsoluteThreshold_;
312 double RelativeThreshold_;
314 std::vector<int> pos_;
316 std::vector<double> val_;
virtual const Epetra_Comm & Comm() const=0
virtual const char * Label() const=0
virtual const Epetra_Map & OperatorDomainMap() const=0
virtual const Epetra_Map & OperatorRangeMap() const=0
virtual bool UseTranspose() const=0
virtual int NumMyRows() const=0
virtual int NumMyCols() const=0
virtual int NumGlobalCols() const=0
virtual int NumGlobalNonzeros() const=0
virtual const Epetra_Map & RowMatrixColMap() const=0
virtual const Epetra_Map & RowMatrixRowMap() const=0
virtual int NumMyNonzeros() const=0
virtual int NumMyDiagonals() const=0
virtual int NumGlobalRows() const=0
virtual bool LowerTriangular() const=0
virtual int NumGlobalDiagonals() const=0
virtual const Epetra_Import * RowMatrixImporter() const=0
virtual bool UpperTriangular() const=0
virtual bool Filled() const=0
virtual const Epetra_BlockMap & Map() const=0
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
bool HasNormInf() const
Not implemented for efficiency reasons.
virtual double NormInf() const
Not implemented for efficiency reasons.
Ifpack_DiagonalFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix, double AbsoluteThreshold, double RelativeThreshold)
Constructor.
virtual ~Ifpack_DiagonalFilter()
Destructor.
virtual double NormOne() const
Not implemented for efficiency reasons.
virtual int MaxNumEntries() const
Returns the maximum number of entries.