Actual source code: taovec_petsc.h

  1: #ifndef TAOPETSCVECTOR_H
  2: #define TAOPETSCVECTOR_H

 4:  #include taovec.h
  5: #include "petscksp.h"


  8: class TaoVecPetsc: public TaoVec{

 10:  protected:

 12:   Vec pv;
 13:   PetscViewer pvecviewer;

 15:  public:

 17:   TaoVecPetsc( Vec);
 18:   ~TaoVecPetsc();

 20:   inline Vec GetVec(){return pv;}
 21:   int SetVec(Vec);
 22:   int SetPetscViewer(PetscViewer);

 24:   /* 
 25:      The following methods are implementations of 
 26:      the virtual method in the base class 
 27:   */
 28:   int Clone(TaoVec**);
 29: 
 30:   int Compatible (TaoVec *v, TaoTruth*);

 32:   int SetToZero();
 33:   int SetToConstant( double );
 34:   int Norm1(double *);
 35:   int Norm2(double *);
 36:   int Norm2squared(double *);
 37:   int NormInfinity(double *);
 38:   int Dot( TaoVec*, double *);

 40:   int CopyFrom( TaoVec* );
 41:   int ScaleCopyFrom( double, TaoVec* );
 42:   int Scale( double );
 43:   int AddConstant( double );
 44:   int Negate();
 45:   int Reciprocal();

 47:   int GetDimension(int *);

 49:   int Axpy( double, TaoVec* );
 50:   int Aypx( double, TaoVec* );
 51:   int Axpby( double , TaoVec*, double  );

 53:   int Waxpby( double , TaoVec*, double , TaoVec* );

 55:   int AbsoluteValue( );
 56:   int MinElement(double*);

 58:   int PointwiseMultiply( TaoVec*, TaoVec* );
 59:   int PointwiseDivide( TaoVec*, TaoVec* );

 61:   int PointwiseMinimum( TaoVec*, TaoVec* );
 62:   int PointwiseMaximum( TaoVec*, TaoVec* );
 63:   int Median( TaoVec* , TaoVec*, TaoVec* );

 65:   int Fischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *);
 66:   int SFischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *, double);

 68:   int View();
 69:   int StepMax( TaoVec* , double* );
 70:   int StepMax2( TaoVec* , TaoVec* , TaoVec* , double* );
 71:   int StepBoundInfo(TaoVec* ,TaoVec*,TaoVec*,double*,double*,double*);

 73:   int BoundGradientProjection(TaoVec*,TaoVec*,TaoVec*, TaoVec*);

 75:   int GetArray(TaoScalar **, int*);
 76:   int RestoreArray(TaoScalar **, int*);


 79:   int CreateIndexSet(TaoIndexSet**S);

 81:   int SetReducedVec(TaoVec*, TaoIndexSet*);
 82:   int ReducedCopyFromFull(TaoVec*, TaoIndexSet*);
 83:   int ReducedXPY(TaoVec*, TaoIndexSet*);

 85: };

 87: #endif