00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef IFPACK_OVERLAPGRAPH_H
00031 #define IFPACK_OVERLAPGRAPH_H
00032
00033 #include "Ifpack_ConfigDefs.h"
00034 #include "Epetra_Object.h"
00035 #include "Epetra_CrsGraph.h"
00036 class Epetra_Comm;
00037 class Epetra_BlockMap;
00038 class Epetra_RowMatrix;
00039 class Epetra_Import;
00040
00041 #ifdef HAVE_IFPACK_TEUCHOS
00042 namespace Teuchos {
00043 class ParameterList;
00044 }
00045 #endif
00046
00048
00049 class Ifpack_OverlapGraph: public Epetra_Object {
00050
00051 public:
00053
00054
00058 Ifpack_OverlapGraph(const Epetra_CrsGraph * UserMatrixGraph, int OverlapLevel);
00059
00061
00066 Ifpack_OverlapGraph(const Epetra_RowMatrix * UserMatrix, int OverlapLevel);
00067
00069 Ifpack_OverlapGraph(const Ifpack_OverlapGraph & Source);
00070
00072 virtual ~Ifpack_OverlapGraph();
00074
00076
00077 #ifdef HAVE_IFPACK_TEUCHOS
00078
00079
00080
00081
00082
00083
00084 int SetParameters(const Teuchos::ParameterList& parameterlist,
00085 bool cerr_warning_if_unused=false);
00086 #endif
00087
00089 const Epetra_CrsGraph & OverlapGraph() const {return(*OverlapGraph_);}
00090
00092 const Epetra_BlockMap & OverlapRowMap() const {return(*OverlapRowMap_);}
00093
00095 const Epetra_Import & OverlapImporter() const {return(*OverlapImporter_);}
00096
00098
00103 int OverlapLevel() const {return(OverlapLevel_);}
00105
00107
00108 void Print(ostream& os) const {
00109
00110 os << endl;
00111 if (UserMatrix_!=0)
00112 os << "Overlap Graph created using the user's Epetra_RowMatrix object" << endl;
00113 else
00114 os << "Overlap Graph created using the user's Epetra_CrsGraph object" << endl;
00115
00116 os << " Level of Overlap = " << OverlapLevel_ << endl;
00117 OverlapGraph_->Print(os);
00118 return;
00119 }
00121
00122 protected:
00123
00124 int ConstructOverlapGraph(const Epetra_CrsGraph * UserMatrixGraph);
00125 Epetra_CrsGraph * OverlapGraph_;
00126 const Epetra_CrsGraph * UserMatrixGraph_;
00127 const Epetra_RowMatrix * UserMatrix_;
00128 Epetra_BlockMap * OverlapRowMap_;
00129 Epetra_Import * OverlapImporter_;
00130 int OverlapLevel_;
00131 bool IsOverlapped_;
00132 };
00133 #endif // IFPACK_OVERLAPGRAPH_H