Ifpack_RCMReordering.h

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

Generated on Thu Sep 18 12:37:08 2008 for IFPACK by doxygen 1.3.9.1