43 #ifndef IFPACK_SINGLETONFILTER_H 44 #define IFPACK_SINGLETONFILTER_H 47 #include "Epetra_RowMatrix.h" 48 #include "Teuchos_RefCountPtr.hpp" 52 class Epetra_MultiVector;
54 class Epetra_BlockMap;
79 virtual int ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
double *Values,
int * Indices)
const;
83 virtual int Multiply(
bool TransA,
const Epetra_MultiVector& X,
84 Epetra_MultiVector& Y)
const;
86 virtual int Solve(
bool Upper,
bool Trans,
bool UnitDiagonal,
87 const Epetra_MultiVector& X,
88 Epetra_MultiVector& Y)
const;
90 virtual int Apply(
const Epetra_MultiVector& X,
91 Epetra_MultiVector& Y)
const;
94 Epetra_MultiVector& Y)
const;
118 return(
A_->Filled());
131 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 215 return(
A_->RowMatrixImporter());
220 return(
A_->SetUseTranspose(UseTranspose_in));
225 return(
A_->UseTranspose());
233 const Epetra_Comm &
Comm()
const 248 const Epetra_BlockMap&
Map()
const 250 return(*(
const Epetra_BlockMap*)(&*
Map_));
258 Epetra_MultiVector& LHS);
261 const Epetra_MultiVector&
RHS,
262 Epetra_MultiVector& ReducedRHS);
264 int UpdateLHS(
const Epetra_MultiVector& ReducedLHS,
265 Epetra_MultiVector& LHS);
270 Teuchos::RefCountPtr<Epetra_RowMatrix>
A_;
292 Teuchos::RefCountPtr<Epetra_Map>
Map_;
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const
virtual int InvColSums(Epetra_Vector &x) const
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Ifpack_SingletonFilter(const Teuchos::RefCountPtr< Epetra_RowMatrix > &Matrix)
Constructor.
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
virtual bool UpperTriangular() const
int SolveSingletons(const Epetra_MultiVector &RHS, Epetra_MultiVector &LHS)
std::vector< int > NumEntries_
const Epetra_Comm & Comm() const
virtual int MaxNumEntries() const
Returns the maximum number of entries.
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
bool UseTranspose() const
virtual bool Filled() const
virtual double NormOne() const
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const
virtual int NumMyNonzeros() const
Teuchos::RefCountPtr< Epetra_Vector > Diagonal_
virtual int NumGlobalNonzeros() const
virtual const Epetra_Import * RowMatrixImporter() const
virtual int RightScale(const Epetra_Vector &x)
virtual int NumMyCols() const
std::vector< int > SingletonIndex_
std::vector< double > Values_
Used in ExtractMyRowCopy, to avoid allocation each time.
virtual const Epetra_Map & RowMatrixRowMap() const
virtual int LeftScale(const Epetra_Vector &x)
virtual double NormInf() const
virtual ~Ifpack_SingletonFilter()
Destructor.
virtual int InvRowSums(Epetra_Vector &x) const
char Label_[80]
Label for this object.
std::vector< int > Indices_
Used in ExtractMyRowCopy, to avoid allocation each time.
std::vector< int > Reorder_
Ifpack_SingletonFilter: Filter based on matrix entries.
virtual int NumGlobalDiagonals() const
virtual int NumGlobalCols() const
virtual int NumGlobalRows() const
int CreateReducedRHS(const Epetra_MultiVector &LHS, const Epetra_MultiVector &RHS, Epetra_MultiVector &ReducedRHS)
const char * Label() const
virtual long long NumGlobalNonzeros64() const
Teuchos::RefCountPtr< Epetra_RowMatrix > A_
Pointer to the matrix to be preconditioned.
virtual int NumMyDiagonals() const
const Epetra_BlockMap & Map() const
const Epetra_Map & OperatorRangeMap() const
virtual long long NumGlobalCols64() const
virtual long long NumGlobalRows64() const
Teuchos::RefCountPtr< Epetra_Map > Map_
virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
std::vector< int > InvReorder_
virtual int NumMyRows() const
int SetUseTranspose(bool UseTranspose_in)
int UpdateLHS(const Epetra_MultiVector &ReducedLHS, Epetra_MultiVector &LHS)
virtual bool LowerTriangular() const
virtual long long NumGlobalDiagonals64() const
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const
Returns the number of entries in MyRow.
const Epetra_Map & OperatorDomainMap() const
virtual const Epetra_Map & RowMatrixColMap() const