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

PetscSparseStorage.h

00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004  
00005 /*
00006  * Edited by: Quan H. Nguyen 
00007  */
00008 #ifndef PETSCSPARSESTORAGE_H
00009 #define PETSCSPARSESTORAGE_H
00010 
00011 #include "petscmat.h"
00012 #include "DoubleMatrix.h"
00013 #include "OoqpVectorHandle.h"
00014 #include "PetscVectorHandle.h"
00015 
00016 class PetscSparseStorage : public DoubleStorage {
00017 protected:
00018   int preserveMat;
00019 public:
00020   Mat M;
00021 
00022   PetscSparseStorage( int lm, int ln, int m, int n, int nnz );
00023   PetscSparseStorage( Mat M_ );
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 fromGetSpCol( int row, int col,
00030                              double A[], int lenA, int irowA[], int& nnz,
00031                              int rowExtent, int& info );
00032   virtual void fromGetSpRow( int row, int col,
00033                              double A[], int lenA, int jcolA[], int& nnz,
00034                              int colExtent, int& info );
00035   virtual void atPutSpCol( int col, double A[], int lenA, int irowA[],
00036                            int& info );
00037   virtual void atPutSpRow( int col, double A[], int lenA, int irowA[],
00038                            int& info );
00039   
00040   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00041                                 int& info );
00042 
00043   virtual void fatPutSpCol( int col, double A[], int lenA, int irowA[],
00044                             int& info );
00045   virtual void fatPutSpRow( int col, double A[], int lenA, int irowA[],
00046                             int& info );
00047   virtual void atPutZeros( int row, int col, int rowExtent, int colExtent );
00048 
00049   virtual void getSize( int& m, int& n );
00050 
00051   virtual void getDiagonal( OoqpVector& vec );
00052   virtual void setToDiagonal( OoqpVector& vec );
00053 
00054   virtual void genmult ( double beta,  PetscVector& y,
00055                          double alpha, PetscVector& x,
00056                          int trans );
00057 
00058   virtual void atPutDiagonal( int idiag, OoqpVector& v );
00059   virtual void fromGetDiagonal( int idiag, OoqpVector& v );
00060   virtual void writeToStream(ostream& out) const;
00061 
00062   virtual void SymmetricScale ( OoqpVector& vec ){};
00063   virtual void ColumnScale ( OoqpVector& vec ){};
00064   virtual void RowScale ( OoqpVector& vec ){};
00065   virtual void scalarMult( double num){};
00066   virtual ~PetscSparseStorage();
00067 };
00068 
00069 typedef SmartPointer<PetscSparseStorage> PetscSparseStorageHandle;
00070 
00071 #endif

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