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

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