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
00041 #ifndef AMESOS_MC64_H
00042 #define AMESOS_MC64_H
00043
00044 #include "Amesos_ConfigDefs.h"
00045 #if defined(HAVE_AMESOS_MC64)
00046 #include "Amesos_Scaling.h"
00047 #include "Amesos_Reordering.h"
00048
00049 class Epetra_RowMatrix;
00050
00052
00061 class Amesos_MC64 : public Amesos_Scaling, public Amesos_Reordering
00062 {
00063 public:
00065 Amesos_MC64(const Epetra_RowMatrix& A, int JOB,
00066 const bool StoreTranspose = false,
00067 const bool analyze = false);
00068
00070 ~Amesos_MC64() {}
00071
00073 int GetINFO(const int pos) const
00074 {
00075 if (pos <= 0 || pos > 10)
00076 throw(-1);
00077
00078 return(INFO_[pos - 1]);
00079 }
00080
00082 int* GetRowPerm()
00083 {
00084 return(0);
00085 }
00086
00088 int* GetColPerm()
00089 {
00090 return((int*)&CPERM_[0]);
00091 }
00092
00094 double* GetRowScaling()
00095 {
00096 return((double*)&DW_[0]);
00097 }
00098
00100 double* GetColScaling();
00101
00103 int* GetCPERM()
00104 {
00105 return((int*)&CPERM_[0]);
00106 }
00107
00109 double* GetDW()
00110 {
00111 return((double*)&DW_[0]);
00112 }
00113
00114 private:
00115
00117 int Compute(int JOB, const bool StoreTranspose, const bool analyze);
00118
00119 const Epetra_RowMatrix& A_;
00120 int ICNTL_[10];
00121 int INFO_[10];
00122 std::vector<int> CPERM_;
00123 std::vector<double> DW_;
00124 };
00125
00126 #endif
00127 #endif