38 #ifndef IFPACK_SUBDOMAINFILTER_H
39 #define IFPACK_SUBDOMAINFILTER_H
43 #ifdef HAVE_IFPACK_PARALLEL_SUBDOMAIN_SOLVERS
46 #include "Epetra_MpiComm.h"
48 #include "Epetra_SerialComm.h"
50 #include "Epetra_RowMatrix.h"
51 #include "Epetra_CrsMatrix.h"
52 #include "Epetra_IntVector.h"
53 #include "Teuchos_RCP.hpp"
87 ~Ifpack_SubdomainFilter();
104 NumEntries = NumEntries_[MyRow];
111 return(MaxNumEntries_);
129 virtual inline int ExtractMyRowCopy(
int MyRow,
int Length,
int & NumEntries,
double *Values,
int * Indices)
const;
156 if (TransA ==
true) {
206 virtual bool Filled()
const
229 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
233 return(NumGlobalNonzeros_);
240 return(NumGlobalRows_);
246 return(NumGlobalCols_);
252 return(NumGlobalRows_);
259 return(NumGlobalNonzeros_);
265 return(NumGlobalRows_);
271 return(NumGlobalRows_);
277 return(NumGlobalRows_);
283 return(NumMyNonzeros_);
307 return(Matrix_->LowerTriangular());
313 return(Matrix_->UpperTriangular());
335 virtual const Epetra_Import* Importer()
const {
return(&*Importer_);}
337 virtual const Epetra_Export* Exporter()
const {
return(&*Exporter_);}
342 int SetOwnership(
bool ownership)
350 UseTranspose_ = UseTranspose_in;
357 return(UseTranspose_);
387 const char*
Label()
const{
392 void UpdateImportVector(
int NumVectors)
const;
393 void UpdateExportVector(
int NumVectors)
const;
401 MPI_Comm subdomainMPIComm_;
421 int NumGlobalNonzeros_;
427 std::vector<int> NumEntries_;
429 mutable std::vector<int> Indices_;
431 mutable std::vector<double> Values_;
461 #endif //ifdef HAVE_IFPACK_PARALLEL_SUBDOMAIN_SOLVERS
464 #if defined(Ifpack_SHOW_DEPRECATED_WARNINGS)
466 #warning "The Ifpack package is deprecated"
virtual long long NumGlobalDiagonals64() const =0
virtual int RightScale(const Epetra_Vector &x)=0
virtual const Epetra_Map & RowMatrixRowMap() const =0
virtual int SetUseTranspose(bool UseTranspose)=0
virtual double NormOne() const =0
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
virtual const Epetra_Map & OperatorDomainMap() const =0
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const =0
virtual const char * Label() const =0
virtual int LeftScale(const Epetra_Vector &x)=0
virtual int InvRowSums(Epetra_Vector &x) const =0
virtual int NumGlobalNonzeros() const =0
virtual bool LowerTriangular() const =0
virtual int NumMyCols() const =0
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const =0
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
virtual int MaxNumEntries() const =0
virtual const Epetra_Map & OperatorRangeMap() const =0
virtual const Epetra_Comm & Comm() const =0
virtual const Epetra_Import * RowMatrixImporter() const =0
virtual bool UseTranspose() const =0
virtual const Epetra_BlockMap & Map() const =0
virtual double NormInf() const =0
virtual int NumMyRows() const =0
virtual bool Filled() const =0
Ifpack_OverlappingRowMatrix: matrix with ghost rows, based on Epetra_RowMatrix.
virtual int NumGlobalDiagonals() const =0
virtual int NumGlobalCols() const =0
virtual long long NumGlobalCols64() const =0
virtual long long NumGlobalNonzeros64() const =0
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
#define IFPACK_RETURN(ifpack_err)
virtual int NumMyDiagonals() const =0
virtual bool HasNormInf() const =0
virtual bool UpperTriangular() const =0
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const =0
virtual const Epetra_Map & RowMatrixColMap() const =0
virtual int InvColSums(Epetra_Vector &x) const =0
#define IFPACK_CHK_ERR(ifpack_err)
virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
virtual int NumGlobalRows() const =0
virtual int NumMyNonzeros() const =0
virtual long long NumGlobalRows64() const =0