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_REORDERING_H
00031 #define IFPACK_REORDERING_H
00032
00033 #include "Ifpack_ConfigDefs.h"
00034
00035 namespace Teuchos {
00036 class ParameterList;
00037 }
00038 class Epetra_MultiVector;
00039 class Ifpack_Graph;
00040 class Epetra_RowMatrix;
00041
00043
00088 class Ifpack_Reordering {
00089
00090 public:
00091
00093 virtual ~Ifpack_Reordering() {};
00094
00096 virtual int SetParameter(const string Name, const int Value) = 0;
00097
00099 virtual int SetParameter(const string Name, const double Value) = 0;
00100
00102 virtual int SetParameters(Teuchos::ParameterList& List) = 0;
00103
00105 virtual int Compute(const Ifpack_Graph& Graph) = 0;
00106
00108 virtual int Compute(const Epetra_RowMatrix& Matrix) = 0;
00109
00111 virtual bool IsComputed() const = 0;
00112
00114 virtual int Reorder(const int i) const = 0;
00115
00117 virtual int InvReorder(const int i) const = 0;
00118
00120 virtual int P(const Epetra_MultiVector& Xorig,
00121 Epetra_MultiVector& X) const = 0;
00122
00124 virtual int Pinv(const Epetra_MultiVector& Xorig,
00125 Epetra_MultiVector& X) const = 0;
00126
00128 virtual ostream& Print(std::ostream& os) const = 0;
00129
00130 };
00131
00132 inline ostream& operator<<(ostream& os, const Ifpack_Reordering& obj)
00133 {
00134 return(obj.Print(os));
00135 }
00136
00137 #endif