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 eststeps; /* number of adaptive/est steps in Hybrid Chebyshev */
17: PetscInt its; /* total hybrid iterations, used to determine when toGMRES step in hybrid impl */
18: PetscBool purification; /* Hybrid method uses the GMRES/adaptive/est steps to imporve the approximate solution */
19: PetscRandom random;
20: } KSP_Chebyshev;
22: #endif