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

PetscSpSymMatrix.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 PETSCSPSYMMATRIX_H
00006 #define PETSCSPSYMMATRIX_H
00007 
00008 #include "DoubleMatrix.h"
00009 #include "PetscSparseStorageHandle.h"
00010 
00011 class DenseSymMatrix;
00012 
00013 class PetscSpSymMatrix : public SymMatrix {
00014 protected:
00015   PetscSparseStorageHandle mStorage;
00016 public:
00017   PetscSpSymMatrix( int size, int nnz );
00018   PetscSpSymMatrix( int lm, int ln, int size, int nnz );
00019   PetscSpSymMatrix( Mat M );
00020 
00021   PetscSparseStorage * getStorage() { return mStorage.ptr(); };
00022   PetscSparseStorage& storage() { return *mStorage; }
00023 
00024   virtual int isKindOf( int type );
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 
00030   virtual void symAtPutSpRow( int row, double A[], int lenA, int jcolA[],
00031                               int& info );
00032 
00033   virtual void fsymAtPutSpRow( int row, double A[], int lenA, int jcolA[],
00034                                int& info );
00035 
00036   virtual void getSize( int& m, int& n );
00037 
00038   virtual int size();
00039 
00040   virtual void symAtPutSubmatrix( int destRow, int destCol,
00041                                   DoubleMatrix& M,
00042                                   int srcRow, int srcCol,
00043                                   int rowExtent, int colExtent );
00044 
00045   virtual void fromGetSpRow( int row, int col,
00046                              double A[], int lenA, int irowA[], int& nnz,
00047                              int rowExtent, int& info );
00048 
00049   virtual void atPutZeros( int row, int col,
00050                            int rowExtent, int colExtent );
00051   virtual void mult ( double beta,  OoqpVector& y,
00052                       double alpha, OoqpVector& x );
00053   virtual void transMult ( double beta,  OoqpVector& y,
00054                            double alpha, OoqpVector& x );
00055   
00056   virtual double abmaxnorm();
00057   
00058   virtual void writeToStream(ostream& out) const;
00059 
00060   virtual void randomizePSD(double * seed);
00061   
00062   virtual void getDiagonal( OoqpVector& vec );
00063   virtual void setToDiagonal( OoqpVector& vec );
00064   virtual void atPutDiagonal( int idiag, OoqpVector& v );
00065   virtual void fromGetDiagonal( int idiag, OoqpVector& x );
00066 
00067   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00068                                 int& info );
00069 
00070   virtual ~PetscSpSymMatrix() {};
00071 };
00072 
00073 typedef SmartPointer<PetscSpSymMatrix> PetscSpSymMatrixHandle;
00074 
00075 #endif

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