Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound 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 #ifndef PETSCSPARSESTORAGE_H
00006 #define PETSCSPARSESTORAGE_H
00007 
00008 #include "petscmat.h"
00009 #include "DoubleMatrix.h"
00010 #include "OoqpVectorHandle.h"
00011 #include "PetscVectorHandle.h"
00012 
00013 class PetscSparseStorage : public DoubleStorage {
00014 protected:
00015   int preserveMat;
00016 public:
00017   Mat M;
00018 
00019   PetscSparseStorage( int lm, int ln, int m, int n, int nnz );
00020   PetscSparseStorage( Mat M_ );
00021 
00022   virtual void atPutDense( int row, int col, double * A, int lda,
00023                            int rowExtent, int colExtent );
00024   virtual void fromGetDense( int row, int col, double * A, int lda,
00025                              int rowExtent, int colExtent );
00026   virtual void fromGetSpCol( int row, int col,
00027                              double A[], int lenA, int irowA[], int& nnz,
00028                              int rowExtent, int& info );
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 atPutSpCol( int col, double A[], int lenA, int irowA[],
00033                            int& info );
00034   virtual void atPutSpRow( int col, double A[], int lenA, int irowA[],
00035                            int& info );
00036   
00037   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00038                                 int& info );
00039 
00040   virtual void fatPutSpCol( int col, double A[], int lenA, int irowA[],
00041                             int& info );
00042   virtual void fatPutSpRow( int col, double A[], int lenA, int irowA[],
00043                             int& info );
00044   virtual void atPutZeros( int row, int col, int rowExtent, int colExtent );
00045 
00046   virtual void getSize( int& m, int& n );
00047 
00048   virtual void getDiagonal( OoqpVector& vec );
00049   virtual void setToDiagonal( OoqpVector& vec );
00050 
00051   virtual void genmult ( double beta,  PetscVector& y,
00052                          double alpha, PetscVector& x,
00053                          int trans );
00054 
00055   virtual void atPutDiagonal( int idiag, OoqpVector& v );
00056   virtual void fromGetDiagonal( int idiag, OoqpVector& v );
00057   virtual void writeToStream(ostream& out) const;
00058 
00059   virtual ~PetscSparseStorage();
00060 };
00061 
00062 typedef SmartPointer<PetscSparseStorage> PetscSparseStorageHandle;
00063 
00064 #endif

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