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_ILUK_GRAPH_H_
00031 #define _IFPACK_ILUK_GRAPH_H_
00032
00033 #include "Ifpack_ConfigDefs.h"
00034 #include "Epetra_Object.h"
00035 #include "Epetra_CrsGraph.h"
00036 #include "Epetra_Import.h"
00037
00038 #include "Teuchos_RefCountPtr.hpp"
00039
00040 namespace Teuchos {
00041 class ParameterList;
00042 }
00043
00045
00064 class Ifpack_IlukGraph {
00065
00066
00067
00068 friend ostream& operator << (ostream& os, const Ifpack_IlukGraph& A);
00069
00070 public:
00071
00073
00086 Ifpack_IlukGraph(const Epetra_CrsGraph & Graph_in, int LevelFill_in, int LevelOverlap_in);
00087
00089 Ifpack_IlukGraph(const Ifpack_IlukGraph & Graph_in);
00090
00092 virtual ~Ifpack_IlukGraph();
00093
00095
00096
00097
00098
00099
00100 int SetParameters(const Teuchos::ParameterList& parameterlist,
00101 bool cerr_warning_if_unused=false);
00102
00104
00105
00106
00107
00108 virtual int ConstructFilledGraph();
00109
00111
00112
00113
00114
00115 virtual int ConstructOverlapGraph();
00116
00118 virtual int LevelFill() const {return(LevelFill_);};
00119
00121 virtual int LevelOverlap() const {return(LevelOverlap_);};
00122
00124 int NumGlobalBlockRows() const {return(NumGlobalBlockRows_);};
00125
00127 int NumGlobalBlockCols() const {return(NumGlobalBlockCols_);};
00128
00129
00131 int NumGlobalRows() const {return(NumGlobalRows_);};
00132
00134 int NumGlobalCols() const {return(NumGlobalCols_);};
00136 int NumGlobalNonzeros() const {return(NumGlobalNonzeros_);};
00137
00139 virtual int NumGlobalBlockDiagonals() const {return(NumGlobalBlockDiagonals_);};
00140
00142 int NumMyBlockRows() const {return(NumMyBlockRows_);};
00143
00145 int NumMyBlockCols() const {return(NumMyBlockCols_);};
00146
00147
00149 int NumMyRows() const {return(NumMyRows_);};
00150
00152 int NumMyCols() const {return(NumMyCols_);};
00153
00155 int NumMyNonzeros() const {return(NumMyNonzeros_);};
00156
00158 virtual int NumMyBlockDiagonals() const {return(NumMyBlockDiagonals_);};
00159
00161 int IndexBase() const {return(IndexBase_);};
00162
00164 virtual Epetra_CrsGraph & L_Graph() {return(*L_Graph_);};
00165
00167 virtual Epetra_CrsGraph & U_Graph() {return(*U_Graph_);};
00168
00170 virtual Epetra_CrsGraph & L_Graph() const {return(*L_Graph_);};
00171
00173 virtual Epetra_CrsGraph & U_Graph() const {return(*U_Graph_);};
00174
00176 virtual Epetra_Import * OverlapImporter() const {return(&*OverlapImporter_);};
00177
00179 virtual Epetra_CrsGraph * OverlapGraph() const {return(&*OverlapGraph_);};
00180
00182 virtual const Epetra_BlockMap & DomainMap() const {return(DomainMap_);};
00183
00185 virtual const Epetra_BlockMap & RangeMap() const{return(RangeMap_);};
00186
00188 virtual const Epetra_Comm & Comm() const{return(Comm_);};
00189
00190 private:
00191
00192
00193 const Epetra_CrsGraph & Graph_;
00194 const Epetra_BlockMap & DomainMap_;
00195 const Epetra_BlockMap & RangeMap_;
00196 const Epetra_Comm & Comm_;
00197 Teuchos::RefCountPtr<Epetra_CrsGraph> OverlapGraph_;
00198 Teuchos::RefCountPtr<Epetra_BlockMap> OverlapRowMap_;
00199 Teuchos::RefCountPtr<Epetra_Import> OverlapImporter_;
00200 int LevelFill_;
00201 int LevelOverlap_;
00202 Teuchos::RefCountPtr<Epetra_CrsGraph> L_Graph_;
00203 Teuchos::RefCountPtr<Epetra_CrsGraph> U_Graph_;
00204 int IndexBase_;
00205 int NumGlobalRows_;
00206 int NumGlobalCols_;
00207 int NumGlobalBlockRows_;
00208 int NumGlobalBlockCols_;
00209 int NumGlobalBlockDiagonals_;
00210 int NumGlobalNonzeros_;
00211 int NumGlobalEntries_;
00212 int NumMyBlockRows_;
00213 int NumMyBlockCols_;
00214 int NumMyRows_;
00215 int NumMyCols_;
00216 int NumMyBlockDiagonals_;
00217 int NumMyNonzeros_;
00218 int NumMyEntries_;
00219
00220
00221 };
00222
00224 ostream& operator << (ostream& os, const Ifpack_IlukGraph& A);
00225
00226 #endif