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();
 46:   int Sqrt();
 47:   int Pow(double);

 49:   int GetDimension(int *);

 51:   int Axpy( double, TaoVec* );
 52:   int Aypx( double, TaoVec* );
 53:   int Axpby( double , TaoVec*, double  );

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

 57:   int AbsoluteValue( );
 58:   int MinElement(double*);

 60:   int PointwiseMultiply( TaoVec*, TaoVec* );
 61:   int PointwiseDivide( TaoVec*, TaoVec* ); 

 63:   int PointwiseMinimum( TaoVec*, TaoVec* );
 64:   int PointwiseMaximum( TaoVec*, TaoVec* ); 
 65:   int Median( TaoVec* , TaoVec*, TaoVec* );

 67:   int Fischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *);
 68:   int SFischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *, double);

 70:   int View();
 71:   int StepMax( TaoVec* , double* );
 72:   int StepMax2( TaoVec* , TaoVec* , TaoVec* , double* );
 73:   int StepBoundInfo(TaoVec* ,TaoVec*,TaoVec*,double*,double*,double*);

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

 77:   int GetArray(TaoScalar **, int*);
 78:   int RestoreArray(TaoScalar **, int*);


 81:   int CreateIndexSet(TaoIndexSet**S);

 83:   int SetReducedVec(TaoVec*, TaoIndexSet*);
 84:   int ReducedCopyFromFull(TaoVec*, TaoIndexSet*);
 85:   int ReducedXPY(TaoVec*, TaoIndexSet*);

 87: };

 89: #endif