Actual source code: taolinearsolver_petsc.h

  1: #ifndef TAOPETSCSOLVER_H
  2: #define TAOPETSCSOLVER_H

  4: #define TAO_USE_PETSC

 6:  #include taolinearsolver.h

  8: #include "petscksp.h"


 11: class TaoLinearSolverPetsc : public TaoLinearSolver {

 13:  protected:
 14: 
 15:     KSP ksp;
 16:     PetscViewer pkspviewer;
 17:     PetscMap rrmap, rcmap;
 18:     int linear_its;

 20:  public:

 22:     TaoLinearSolverPetsc(KSP);
 23:     ~TaoLinearSolverPetsc();
 24: 
 25:     inline KSP GetKSP(){return ksp;}
 26:     int SetKSP(KSP);
 27:     int GetKSP(KSP*);
 28: 
 29:     /*
 30:       The following methods are implementations of 
 31:       the virtual methods in the base class 
 32:     */

 34:     /* These ones are necessary */
 35:     int PreSolve(TaoMat*);
 36:     int Solve(TaoVec*,TaoVec*, TaoTruth*);

 38:     /* Some methods need this */
 39:     int MinQuadraticTrustRegion(TaoVec*,TaoVec*,double, TaoTruth*);

 41:     /* These ones are nice to have, but not necessary */
 42:     int GetNumberIterations(int *);
 43:     int View();
 44:     int SetOptions();
 45:     int SetTolerances(double, double, double, int);

 47:     /* These ones are extra, not virtual in base class */
 48:     int Duplicate(TaoLinearSolver**);
 49:     int SetTrustRadius(double);

 51: };

 53: #endif