43 #ifndef IFPACK_DIAGONALFILTER_H 44 #define IFPACK_DIAGONALFILTER_H 47 #include "Epetra_ConfigDefs.h" 48 #include "Epetra_RowMatrix.h" 49 #include "Epetra_Time.h" 50 #include "Teuchos_RefCountPtr.hpp" 85 double AbsoluteThreshold,
86 double RelativeThreshold);
94 return(
A_->NumMyRowEntries(MyRow, NumEntries));
100 return(
A_->MaxNumEntries());
104 double* Values,
int* Indices)
const;
108 int ierr =
A_->ExtractDiagonalCopy(Diagonal);
115 virtual int Solve(
bool ,
bool ,
bool ,
142 return(
A_->LeftScale(x));
152 return(
A_->RightScale(x));
157 return(
A_->Filled());
172 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 175 return(
A_->NumGlobalNonzeros());
180 return(
A_->NumGlobalRows());
185 return(
A_->NumGlobalCols());
190 return(
A_->NumGlobalDiagonals());
196 return(
A_->NumGlobalNonzeros64());
201 return(
A_->NumGlobalRows64());
206 return(
A_->NumGlobalCols64());
211 return(
A_->NumGlobalDiagonals64());
216 return(
A_->NumMyNonzeros());
221 return(
A_->NumMyRows());
226 return(
A_->NumMyCols());
231 return(
A_->NumMyDiagonals());
236 return(
A_->LowerTriangular());
241 return(
A_->UpperTriangular());
246 return(
A_->RowMatrixRowMap());
251 return(
A_->RowMatrixColMap());
256 return(
A_->RowMatrixImporter());
261 return(
A_->SetUseTranspose(UseTranspose_in));
266 return(
A_->UseTranspose());
282 return(
A_->OperatorDomainMap());
287 return(
A_->OperatorRangeMap());
302 Teuchos::RefCountPtr<Epetra_RowMatrix>
A_;
virtual int Solve(bool, bool, bool, const Epetra_MultiVector &, Epetra_MultiVector &) const
std::vector< int > pos_
Stores the position of the diagonal element, or -1 if not present.
virtual bool Filled() const
virtual long long NumGlobalNonzeros64() const
Teuchos::RefCountPtr< Epetra_RowMatrix > A_
Pointer to the matrix to be filtered.
virtual long long NumGlobalRows64() const
virtual int MaxNumEntries() const
Returns the maximum number of entries.
virtual int NumGlobalCols() const
virtual int NumMyNonzeros() const
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const
int SetUseTranspose(bool UseTranspose_in)
virtual int RightScale(const Epetra_Vector &x)
double RelativeThreshold_
Multiplies A(i,i) by this value.
Ifpack_DiagonalFilter: Filter to modify the diagonal entries of a given Epetra_RowMatrix.
bool UseTranspose() const
virtual int InvRowSums(Epetra_Vector &) const
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual bool LowerTriangular() const
virtual int ApplyInverse(const Epetra_MultiVector &, Epetra_MultiVector &) const
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
virtual int NumGlobalNonzeros() const
virtual int NumMyRows() const
virtual double NormInf() const
Not implemented for efficiency reasons.
const Epetra_Map & OperatorRangeMap() const
bool HasNormInf() const
Not implemented for efficiency reasons.
const Epetra_BlockMap & Map() const
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
const Epetra_Comm & Comm() const
virtual ~Ifpack_DiagonalFilter()
Destructor.
virtual int NumGlobalRows() const
virtual int NumMyCols() const
virtual const Epetra_Import * RowMatrixImporter() const
virtual int InvColSums(Epetra_Vector &) const
virtual int LeftScale(const Epetra_Vector &x)
Ifpack_DiagonalFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix, double AbsoluteThreshold, double RelativeThreshold)
Constructor.
virtual const Epetra_Map & RowMatrixRowMap() const
#define IFPACK_RETURN(ifpack_err)
virtual const Epetra_Map & RowMatrixColMap() const
virtual long long NumGlobalDiagonals64() const
const Epetra_Map & OperatorDomainMap() const
virtual long long NumGlobalCols64() const
double AbsoluteThreshold_
This value (times the sgn(A(i,i)) is added to the diagonal elements.
virtual bool UpperTriangular() const
virtual double NormOne() const
Not implemented for efficiency reasons.
virtual int NumMyDiagonals() const
const char * Label() const
#define IFPACK_CHK_ERR(ifpack_err)
std::vector< double > val_
Stores as additional diagonal contribution due to the filter.
virtual int NumGlobalDiagonals() const