Actual source code: taomat_petsc.h

  1: #ifndef TAOPETSCMAT_H
  2: #define TAOPETSCMAT_H

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

  7: class TaoMatPetsc: public TaoMat{

  9:  protected:

 11:   Mat pm;
 12:   MatStructure preflag;
 13:   Mat pm_pre;
 14:   PetscViewer pmatviewer;

 16:  public:

 18:   TaoMatPetsc( Mat M );
 19:   ~TaoMatPetsc();

 21:   int SetPetscViewer(PetscViewer);
 22:   int SetMatrix(Mat, Mat, MatStructure);
 23:   int GetMatrix(Mat*, Mat*, MatStructure*);

 25: 
 26:   /*
 27:      The following methods are implementations of 
 28:      the virtual methods in the base class 
 29:   */

 31:   int Compatible(TaoVec*, TaoVec*, TaoTruth*);

 33:   int GetDimensions( int*, int * );
 34:   int Multiply(TaoVec*,TaoVec*);
 35:   int MultiplyTranspose(TaoVec*,TaoVec*);

 37:   int SetDiagonal(TaoVec*);
 38:   int AddDiagonal(TaoVec*);
 39:   int GetDiagonal(TaoVec*);
 40:   int ShiftDiagonal(double);

 42:   int RowScale(TaoVec*);
 43:   int ColScale(TaoVec*);

 45:   int CreateReducedMatrix(TaoIndexSet*,TaoIndexSet*,TaoMat**);
 46:   int SetReducedMatrix(TaoMat*,TaoIndexSet*,TaoIndexSet*);

 48:   int D_Fischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *,
 49:                 TaoVec *, TaoVec *, TaoVec *, TaoVec *);
 50:   int D_SFischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *, double,
 51:                  TaoVec *, TaoVec *, TaoVec *, TaoVec *, TaoVec *);

 53:   int Norm1(double*);

 55:   int View();

 57:   /* 
 58:      The following methods are not currently needed by TAO
 59:      but may be needed in the future.
 60:   */
 61:   int Clone(TaoMat**);
 62:   int CopyFrom(TaoMat*);
 63:   int MultiplyAdd(TaoVec*,TaoVec*,TaoVec*);
 64:   int MultiplyTransposeAdd(TaoVec*,TaoVec*,TaoVec*);

 66: };

 68: #endif