00001 #ifndef IFPACK_PARTITIONER_H
00002 #define IFPACK_PARTITIONER_H
00003
00004 #include "Ifpack_ConfigDefs.h"
00005 #ifdef HAVE_IFPACK_TEUCHOS
00006 #include "Teuchos_ParameterList.hpp"
00007 class Epetra_Comm;
00008 class Ifpack_Graph;
00009 class Epetra_Map;
00010 class Epetra_BlockMap;
00011 class Epetra_Import;
00012
00014
00120 class Ifpack_Partitioner {
00121
00122 public:
00123
00125 virtual ~Ifpack_Partitioner() {};
00126
00128 virtual int NumLocalParts() const = 0;
00129
00131 virtual int OverlappingLevel() const = 0;
00132
00134
00141 virtual int operator() (int MyRow) const = 0;
00142
00144 virtual int operator() (int i, int j) const = 0;
00145
00147 virtual int NumRowsInPart(const int Part) const = 0;
00148
00150 virtual int RowsInPart(const int Part, int* List) const = 0;
00151
00153 virtual const int* NonOverlappingPartition() const = 0;
00154
00156 virtual int SetParameters(Teuchos::ParameterList& List) = 0;
00157
00159 virtual int Compute() = 0;
00160
00162 virtual bool IsComputed() = 0;
00163
00165 virtual ostream& Print(std::ostream& os) const = 0;
00166
00167 };
00168
00169 inline ostream& operator<<(ostream& os, const Ifpack_Partitioner& obj)
00170 {
00171 return(obj.Print(os));
00172 }
00173
00174 #endif // HAVE_IFPACK_TEUCHOS
00175 #endif // IFPACK_PARTITIONER_H