|
IFPACK Development
|
00001 #ifndef IFPACK_PARTITIONER_H 00002 #define IFPACK_PARTITIONER_H 00003 00004 #include "Ifpack_ConfigDefs.h" 00005 #include "Teuchos_ParameterList.hpp" 00006 class Epetra_Comm; 00007 class Ifpack_Graph; 00008 class Epetra_Map; 00009 class Epetra_BlockMap; 00010 class Epetra_Import; 00011 00013 00119 class Ifpack_Partitioner { 00120 00121 public: 00122 00124 virtual ~Ifpack_Partitioner() {}; 00125 00127 virtual int NumLocalParts() const = 0; 00128 00130 virtual int OverlappingLevel() const = 0; 00131 00133 00140 virtual int operator() (int MyRow) const = 0; 00141 00143 virtual int operator() (int i, int j) const = 0; 00144 00146 virtual int NumRowsInPart(const int Part) const = 0; 00147 00149 virtual int RowsInPart(const int Part, int* List) const = 0; 00150 00152 virtual const int* NonOverlappingPartition() const = 0; 00153 00155 virtual int SetParameters(Teuchos::ParameterList& List) = 0; 00156 00158 virtual int Compute() = 0; 00159 00161 virtual bool IsComputed() = 0; 00162 00164 virtual ostream& Print(std::ostream& os) const = 0; 00165 00166 }; // class Ifpack_Partitioner 00167 00168 inline ostream& operator<<(ostream& os, const Ifpack_Partitioner& obj) 00169 { 00170 return(obj.Print(os)); 00171 } 00172 00173 #endif // IFPACK_PARTITIONER_H
1.7.4