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

SparseGenMatrix.hh

Go to the documentation of this file.
00001 #ifndef SPARSEGENMATRIX
00002 #define SPARSEGENMATRIX
00003 
00016 #include "GenMatrix.hh"
00017 #include "IotrRefCount.hh" 
00018 #include "SimpleArrayData.hh"
00019 #include "ElementGatherSeq.hh"
00020 #include "IotrHandle.hh"
00021 #include "SimpleArrayData.hh"
00022 #include "SimpleIntData.hh"
00023 
00028 class SparseGenMatrix : public GenMatrix {
00029 protected:
00031   SimpleArrayDataHandle mDataArray;
00032   SimpleIntDataHandle   mIrowArray;
00033   SimpleIntDataHandle   mKcolArray;
00034   double * mElements;
00035   int * mIrow;
00036   int * mKcol;
00037   int mLeadingDimension;
00038   int mCapacity;  // Capacity of this matrix
00039   int mM;   //Number of rows.
00040   int mN;   //Number of cols.
00041   /* my changes */
00042 
00043   SparseGenMatrix() {};
00044 public:
00045   SparseGenMatrix( int m, int n, int mz);
00046   SparseGenMatrix( double * v, int * irow, int * kcol,
00047                    int m, int n, int mz );
00048   virtual ~SparseGenMatrix();
00049 
00050   double * elements() { return mElements; };
00051   const double * elements() const { return mElements; };
00052   const int * irow() const { return mIrow; };
00053   int * irow() { return mIrow; };
00054   const int * kcol() const { return mKcol; };
00055   int * kcol() { return mKcol; };
00056 
00057   int leadingDimension() const { return mLeadingDimension; };
00058 
00060   virtual int rows() const { return mM; };
00062   virtual int columns() const { return mN; };
00064   virtual int maxNonZeros() const { return mCapacity; };
00074   virtual void writefToStream( std::ostream& out,
00075                                const char format[] ) const;
00077   virtual void mult( double alpha, const IotrVector & x,
00078                      double beta,  IotrVector & y ) const;
00079 
00080   virtual void filteredMult( double alpha, const ElementGather & filter,
00081                              const IotrVector & x,
00082                              double beta,  IotrVector & y ) const;
00084   virtual void transposeMult( double alpha, const IotrVector & x,
00085                               double beta,  IotrVector & y ) const;
00086   virtual void filteredTransposeMult( double alpha, const IotrVector & x,
00087                                       double beta,  const ElementGather& filt,
00088                                       IotrVector & y ) const;
00092 //   virtual void multSelect( double alpha, IotrVector & x,
00093 //                         double beta, IotrVector & y,
00094 //                         ElementGatherSeq & iequality);
00095   virtual void copyFromSparseCols( const int irow[], const int kcol[],
00096                                    const double M[] );
00097   virtual void copyFromCute( double M[], int irow[], 
00098                              int jcol[], int nz );
00099   virtual void copyToSparseCols( int irow[], int len, 
00100                                  int kcol[], double M[],
00101                                  int & morei ) const;
00102   virtual void inspect( const char * name = 0,
00103                         const char * filename = 0) const;
00104   virtual void inspectAsMatlab( const char * name = 0,
00105                                 const char * filename = 0) const;
00106 };
00107 
00108 typedef Handle<SparseGenMatrix> SparseGenMatrixHandle;
00109 
00114 #endif

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