Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

SparseSymMatrix.hh

Go to the documentation of this file.
00001 #ifndef SPARSESYMMATRIX
00002 #define SPARSESYMMATRIX
00003 
00014 #include "SymMatrix.hh"
00015 #include "IotrRefCount.hh"
00016 #include "SimpleArrayData.hh"
00017 #include "SimpleIntData.hh"
00018 
00024 class SparseSymMatrix : public SymMatrix {
00025 protected:
00027   SimpleArrayDataHandle mDataArray;
00028   SimpleIntDataHandle   mIrowArray;
00029   SimpleIntDataHandle   mKcolArray;
00032   double * mElements;
00033   int    * mIrow;
00034   int    * mKcol;
00035   int mLeadingDimension;
00036   /* NXN matrix with mz nonzeros */
00037   int mMz;
00038 public:
00040   SparseSymMatrix( int n, int mz );
00042   SparseSymMatrix( double * v, int * irow, int * kcol,
00043                    int n, int mz );
00045   virtual ~SparseSymMatrix();
00046   bool operator==( const SparseSymMatrix & MM ) const;
00047   bool operator!=( const SparseSymMatrix & MM ) const
00048   {
00049     return !(*this == MM);
00050   }
00051 
00052   double * elements() { return mElements; };
00053   const double * elements() const { return mElements; };
00054   int * irow() { return mIrow; };
00055   const int * irow() const { return mIrow; };
00056   int * kcol() { return mKcol; };
00057   const int * kcol() const { return mKcol; };
00059   int leadingDimension() const { return mLeadingDimension; };
00060 
00062   virtual int rows() const { return mN; };
00064   virtual int columns() const { return mN; };
00066   int maxNonZeros() const { return mMz; };
00068   virtual void setToZero();
00081   virtual void writefToStream( std::ostream& out,
00082                                const char format[] ) const;
00084   virtual void mult( double alpha, const IotrVector & x,
00085                      double beta,  IotrVector & y ) const;
00086   virtual void symMaskedMult( double alpha, const IotrMask & mask,
00087                               const IotrVector & x,
00088                               double beta,  IotrVector & y ) const;
00091   virtual void symCopyFromSparseCols( const int irow[], const int kcol[],
00092                                       const double M[], int & has_upper );
00093   virtual void symCopyToSparseCols( int irow[], int len, 
00094                                     int kcol[],
00095                                     double M[], int & morei ) const;
00096   
00097   virtual void copyFromCuteSymmetric( double * M, int * irow,
00098                                       int * jcol, int nz );
00099   virtual void copyFromDenseSymmetric( const double *v, int vlength );
00100 //   virtual void atPutSpCol( int col, const double A[], int lenA,
00101 //                         const int irowA[], int& info );
00102 //   virtual void shiftCols( int col, int shift, int& info );
00103 //   virtual void fromGetSpRow( int row, int col,
00104 //                           double A[], int lenA,
00105 //                           int jcolA[], int& nnz,
00106 //                           int colExtent, int& info ) const;
00107   virtual void inspect(const char * name_in = 0,
00108                        const char * filename = 0 ) const;
00109   virtual void inspectAsMatlab(const char * name_in = 0,
00110                                const char * filename = 0 ) const;
00111   virtual double lowerBoundEigenvalue() const;
00112 };
00113 
00114 typedef Handle<SparseSymMatrix> SparseSymMatrixHandle;
00115 
00116 #endif

Generated on Wed Aug 27 10:03:41 2003 for iotr by doxygen1.2.18