Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

SparseGenMatrix.h

00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004 
00005 #ifndef SPARSEGENMATRIX_H
00006 #define SPARSEGENMATRIX_H
00007 
00008 #include "OoqpVectorHandle.h"
00009 #include "DoubleMatrix.h"
00010 #include "SparseStorageHandle.h"
00011 
00012 
00017 class SparseGenMatrix : public GenMatrix {
00018 protected:
00019   SparseStorageHandle mStorage;
00020   int size;
00021 
00022 public:
00023   SparseGenMatrix( int rows, int cols, int nnz );
00024   SparseGenMatrix( int rows, int cols, int nnz,
00025                        int krowM[], int jcolM[], double M[]);
00026   
00027   virtual void getSize( int& m, int& n );
00028 
00033   virtual int numberOfNonZeros();
00034 
00035   virtual int isKindOf( int matType );
00036 
00037   virtual void atPutDense( int row, int col, double * A, int lda,
00038                            int rowExtent, int colExtent );
00039   virtual void fromGetDense( int row, int col, double * A, int lda,
00040                              int rowExtent, int colExtent );
00041   virtual void ColumnScale( OoqpVector& vec );
00042   virtual void RowScale( OoqpVector& vec );
00043   virtual void SymmetricScale( OoqpVector &vec);
00044   virtual void scalarMult( double num);
00045   virtual void fromGetSpRow( int row, int col,
00046                              double A[], int lenA, int jcolA[], int& nnz,
00047                              int colExtent, int& info );
00048   virtual void atPutSubmatrix( int destRow, int destCol, DoubleMatrix& M,
00049                                int srcRow, int srcCol,
00050                                int rowExtent, int colExtent );
00051   virtual void atPutSpRow( int col, double A[], int lenA, int jcolA[],
00052                            int& info );
00053 
00054   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00055                                 int& info );
00056 
00057   virtual void getDiagonal( OoqpVector& vec );
00058   virtual void setToDiagonal( OoqpVector& vec );
00059 
00060   virtual void mult ( double beta,  OoqpVector& y,
00061                       double alpha, OoqpVector& x );
00062 
00063   virtual void transMult ( double beta,   OoqpVector& y,
00064                            double alpha,  OoqpVector& x );
00065 
00066   virtual double abmaxnorm();
00067 
00068   virtual void writeToStream(ostream& out) const;
00069 
00075   virtual void symmetrize( int& info );
00076 
00077   virtual void randomize( double alpha, double beta, double * seed );
00078 
00079   virtual void atPutDiagonal( int idiag, OoqpVector& v );
00080   virtual void fromGetDiagonal( int idiag, OoqpVector& v );
00081 
00082   SparseStorage * getStorage() { return mStorage.ptr(); }
00083   int * krowM() { return mStorage->krowM; }
00084   int * jcolM() { return mStorage->jcolM; }
00085   double * M() { return mStorage->M; }
00086 
00087   virtual ~SparseGenMatrix() {};
00088 };
00089 
00090 #endif

Generated on Mon May 24 17:40:46 2004 for OOQP by doxygen1.2.18