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_;
#define IFPACK_RETURN(ifpack_err)
#define IFPACK_CHK_ERR(ifpack_err)
Ifpack_DiagonalFilter: Filter to modify the diagonal entries of a given Epetra_RowMatrix.
virtual bool Filled() const
virtual int NumGlobalCols() const
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
const Epetra_Map & OperatorDomainMap() const
virtual long long NumGlobalCols64() const
std::vector< double > val_
Stores as additional diagonal contribution due to the filter.
bool HasNormInf() const
Not implemented for efficiency reasons.
const Epetra_BlockMap & Map() const
virtual int LeftScale(const Epetra_Vector &x)
double RelativeThreshold_
Multiplies A(i,i) by this value.
virtual int Solve(bool, bool, bool, const Epetra_MultiVector &, Epetra_MultiVector &) const
virtual double NormInf() const
Not implemented for efficiency reasons.
virtual long long NumGlobalDiagonals64() const
const Epetra_Comm & Comm() const
virtual int NumMyCols() const
std::vector< int > pos_
Stores the position of the diagonal element, or -1 if not present.
virtual int RightScale(const Epetra_Vector &x)
virtual int NumMyNonzeros() const
int SetUseTranspose(bool UseTranspose_in)
virtual int ApplyInverse(const Epetra_MultiVector &, Epetra_MultiVector &) const
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual bool LowerTriangular() const
virtual ~Ifpack_DiagonalFilter()
Destructor.
virtual int NumMyDiagonals() const
Teuchos::RefCountPtr< Epetra_RowMatrix > A_
Pointer to the matrix to be filtered.
virtual int NumGlobalNonzeros() const
virtual double NormOne() const
Not implemented for efficiency reasons.
virtual int MaxNumEntries() const
Returns the maximum number of entries.
const Epetra_Map & OperatorRangeMap() const
virtual bool UpperTriangular() const
double AbsoluteThreshold_
This value (times the sgn(A(i,i)) is added to the diagonal elements.
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const
virtual int InvRowSums(Epetra_Vector &) const
virtual const Epetra_Map & RowMatrixRowMap() const
virtual const Epetra_Import * RowMatrixImporter() const
virtual int NumGlobalRows() const
virtual long long NumGlobalRows64() const
const char * Label() const
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const
virtual long long NumGlobalNonzeros64() const
virtual int NumGlobalDiagonals() const
bool UseTranspose() const
virtual int NumMyRows() const
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual const Epetra_Map & RowMatrixColMap() const
virtual int InvColSums(Epetra_Vector &) const