1: /*
2: Private data structure for Chebyshev Iteration
3: */
8: typedef struct {
9: PetscReal emin,emax; /* store user provided estimates of extreme eigenvalues */
10: KSP kspest; /* KSP used to estimate eigenvalues */
11: PC pcnone; /* Dummy PC to drop in so PCSetFromOptions doesn't get called extra times */
12: PetscReal tform[4]; /* transform from Krylov estimates to Chebyshev bounds */
13: PetscBool estimate_current;
14: PetscBool hybrid; /* flag for using Hybrid Chebyshev */
15: PetscInt chebysteps; /* number of Chebyshev steps in Hybrid Chebyshev */
16: PetscInt its; /* total hybrid iterations, used to determine when to call GMRES step in hybrid impl */
17: PetscInt purification;/* the hybrid method uses the GMRES steps to imporve the approximate solution
18: purification <= 0: no purification
19: = 1: purification only for new matrix (See case cheb->its = 0 in KSPSolve_Chebyshev())
20: >1 : purification */
21: } KSP_Chebyshev;
23: #endif