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

PetscVector.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 PETSCVECTOR_H
00006 #define PETSCVECTOR_H
00007 
00008 #include <string.h>
00009 #include <iostream.h>
00010 #include "PetscVectorHandle.h"
00011 #include "assert.h"
00012 #include "OoqpVector.h"
00013 #include "petscvec.h"
00014 #include "petsc.h"
00015 #include "petscversion.h"
00016 
00017 class PetscVector : public OoqpVector {
00018 protected:
00019   int m;
00020   int preserveVec;
00021 public:
00022   static int instances;
00023   Vec pv;
00024 
00025   PetscVector( int n_ );
00026   PetscVector( Vec v );
00027   PetscVector( int m_, int n_ );
00028 
00029   virtual ~PetscVector();
00030 
00031   virtual int isKindOf( int kind );
00032   virtual void setToZero();
00033   virtual void setToConstant( double c );
00034   virtual void randomize( double alpha, double beta, double *ix );
00035   virtual void copyFrom( OoqpVector& v );
00036   virtual double infnorm();
00037   virtual double onenorm();
00038   virtual void min( double& m, int& index );
00039   virtual double stepbound(OoqpVector & v, double maxStep );
00040   virtual double findBlocking(OoqpVector & wstep_vec, 
00041                               OoqpVector & u_vec, 
00042                               OoqpVector & ustep_vec, 
00043                               double maxStep,
00044                               double *w_elt, 
00045                               double *wstep_elt,
00046                               double *u_elt, 
00047                               double *ustep_elt,
00048                               int& first_or_second);
00049 
00050   virtual void componentMult( OoqpVector& v );
00051   virtual void componentDiv ( OoqpVector& v );
00052   virtual void writeToStream(ostream& out) const;
00053   virtual void writefToStream( ostream& out,
00054                                const char format[] ) const;
00055 
00056   virtual void scale( double alpha );
00057 
00058   virtual void axpy  ( double alpha, OoqpVector& x );
00059   virtual void axzpy ( double alpha, OoqpVector& x, OoqpVector& z );
00060   virtual void axdzpy( double alpha, OoqpVector& x, OoqpVector& z );
00061 
00062   virtual void addConstant( double c );
00063   virtual void gondzioProjection( double rmin, double rmax );
00064   virtual double dotProductWith( OoqpVector& v );
00065   virtual double shiftedDotProductWith( double alpha, OoqpVector& mystep,
00066                                         OoqpVector& yvec,
00067                                         double beta,  OoqpVector& ystep );
00068   virtual void negate();
00069   virtual void invert();
00070   virtual int allPositive();
00071 
00072   virtual int matchesNonZeroPattern( OoqpVector& select );
00073   virtual void selectNonZeros( OoqpVector& select );
00074   virtual int numberOfNonzeros();
00075   virtual void addSomeConstants( double c, OoqpVector& select );
00076   virtual void writefSomeToStream( ostream& out,
00077                                    const char format[],
00078                                    OoqpVector& select ) const;
00079   virtual void axdzpy( double alpha, OoqpVector& x,
00080                        OoqpVector& z, OoqpVector& select );
00081 
00082   virtual int somePositive( OoqpVector& select );
00083   virtual void divideSome( OoqpVector& div, OoqpVector& select );
00084   virtual void copyIntoArray( double v[] ) const;
00085   virtual void copyFromArray( double v[] );
00086   virtual void copyFromArray( char v[] );
00087 
00088   int getSize() { return n; };
00089   int getLocalSize() { return m; };
00090 };
00091 
00092 #endif
00093 

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