00001 #ifndef IFPACK_RCMREORDERING_H 00002 #define IFPACK_RCMREORDERING_H 00003 00004 #include "Ifpack_ConfigDefs.h" 00005 #if defined(HAVE_IFPACK_TEUCHOS) 00006 #include "Ifpack_Reordering.h" 00007 00008 namespace Teuchos { 00009 class ParameterList; 00010 } 00011 class Ifpack_Graph; 00012 class Epetra_MultiVector; 00013 00015 00016 class Ifpack_RCMReordering : public Ifpack_Reordering { 00017 00018 public: 00019 00021 Ifpack_RCMReordering(); 00022 00024 Ifpack_RCMReordering(const Ifpack_RCMReordering& RHS); 00025 00027 Ifpack_RCMReordering& operator=(const Ifpack_RCMReordering& RHS); 00028 00030 virtual ~Ifpack_RCMReordering(); 00031 00033 virtual int SetParameter(const string Name, const int Value); 00034 00036 virtual int SetParameter(const string Name, const double Value); 00037 00039 virtual int SetParameters(Teuchos::ParameterList& List); 00040 00042 virtual int Compute(const Ifpack_Graph& Graph); 00043 00045 virtual int Compute(const Epetra_RowMatrix& Matrix); 00046 00048 virtual bool IsComputed() const 00049 { 00050 return(IsComputed_); 00051 } 00052 00054 virtual inline int Reorder(const int i) const; 00055 00057 virtual inline int InvReorder(const int i) const; 00058 00060 virtual int P(const Epetra_MultiVector& Xorig, 00061 Epetra_MultiVector& Xreord) const; 00062 00064 virtual int Pinv(const Epetra_MultiVector& Xorig, 00065 Epetra_MultiVector& Xinvreord) const; 00066 00067 00069 virtual ostream& Print(std::ostream& os) const; 00070 00072 virtual int NumMyRows() const 00073 { 00074 return(NumMyRows_); 00075 } 00076 00078 virtual int RootNode() const 00079 { 00080 return(RootNode_); 00081 } 00082 00083 private: 00085 int RootNode_; 00087 int NumMyRows_; 00089 bool IsComputed_; 00091 vector<int> Reorder_; 00093 vector<int> InvReorder_; 00094 }; 00095 00096 #endif 00097 #endif
1.3.9.1