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

PetscSpGenMatrix.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 PETSCSPGENMATRIXBODY 
00006 #define PETSCSPGENMATRIXBODY
00007 
00008 #include "DoubleMatrix.h"
00009 #include "PetscSpGenMatrixHandle.h"
00010 #include "PetscSparseStorageHandle.h"
00011 
00012 class DenseSymMatrix;
00013 
00014 class PetscSpGenMatrix : public GenMatrix {
00015 protected:
00016   PetscSparseStorageHandle mStorage;
00017 public:
00018   PetscSparseStorage * getStorage() { return mStorage.ptr(); };
00019   PetscSparseStorage& storage() { return *mStorage; }
00020   PetscSpGenMatrix( int m, int n, int nnz );
00021   PetscSpGenMatrix( Mat M );
00022 
00023   virtual int isKindOf( int type );
00024 
00025   virtual void atPutDense( int row, int col, double * A, int lda,
00026                            int rowExtent, int colExtent );
00027   virtual void fromGetDense( int row, int col, double * A, int lda,
00028                              int rowExtent, int colExtent );
00029   virtual void fromGetSpRow( int row, int col,
00030                              double A[], int lenA, int jcolA[], int& nnz,
00031                              int colExtent, int& info );
00032   virtual void atPutSpRow( int row, double A[], int lenA, int jcolA[],
00033                            int& info );
00034 
00035   virtual void getSize( int& m, int& n );
00036 
00037   virtual void atPutSubmatrix( int destRow, int destCol, DoubleMatrix& M,
00038                                int srcRow, int srcCol,
00039                                int rowExtent, int colExtent );
00040 
00041   virtual void mult ( double beta,  OoqpVector& y,
00042                       double alpha, OoqpVector& x );
00043 
00044   virtual void transMult ( double beta,  OoqpVector& y,
00045                            double alpha, OoqpVector& x );
00046 
00047   virtual void getDiagonal( OoqpVector& vec );
00048   virtual void setToDiagonal( OoqpVector& vec );
00049 
00050   virtual void atPutDiagonal( int idiag, OoqpVector& v );
00051   virtual void fromGetDiagonal( int idiag, OoqpVector& v );
00052 
00053   virtual double abmaxnorm();
00054 
00055   virtual void writeToStream(ostream& out) const;
00056 
00057   virtual void randomize(double alpha, double beta, double * seed);
00058 
00059   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00060                                 int& info );
00061 
00062 };
00063 
00064 typedef SmartPointer<PetscSpGenMatrix> PetscSpGenMatrixHandle;
00065 
00066 #endif
00067 

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