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

Generated on Wed Mar 22 13:58:33 2006 for OOQP by doxygen 1.3.5