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 };
00167
00168 inline ostream& operator<<(ostream& os, const Ifpack_Partitioner& obj)
00169 {
00170 return(obj.Print(os));
00171 }
00172
00173 #endif // IFPACK_PARTITIONER_H