Hi, I'm trying to set the maximum number of iterations in a minres preconditioner for the lobpcg eigensolver from SLEPc. Using KSPSetTolerances, I can change the minres tolerance, but not maxit (it's always 5).
ierr = EPSCreate( PETSC_COMM_WORLD , &eps ) ; CHKERRQ( ierr ) ; ... ST st; KSP ksp; PC pc; ierr = EPSGetST( eps , &st ) ; CHKERRQ( ierr ) ; ierr = STSetType( st, STPRECOND ) ; CHKERRQ( ierr ) ; ierr = STGetKSP( st , &ksp ) ; CHKERRQ( ierr ) ; ierr = KSPSetType( ksp , KSPMINRES ) ; CHKERRQ( ierr ) ; ierr = KSPGetPC( ksp , &pc ) ; CHKERRQ( ierr ) ; ierr = PCSetType( pc , PCNONE ) ; CHKERRQ( ierr ) ; * ierr = KSPSetTolerances* * ( ksp , /*tol_prec*/ 1e-10 , PETSC_DEFAULT , PETSC_DEFAULT , /*maxit_prec*/ 7 ) ;* CHKERRQ( ierr ) ; ierr = KSPSetFromOptions( ksp ) ; CHKERRQ( ierr ) ; ierr = STSetFromOptions( st ) ; CHKERRQ( ierr ) ; ierr = EPSSetFromOptions( eps ) ; CHKERRQ( ierr ) ; ... ierr = EPSSetOperators( eps , mat , NULL ) ; CHKERRQ( ierr ) ; ierr = EPSSolve( eps ) ; CHKERRQ( ierr ) ; When I run with -eps_view, I see: ... EPS Object: 4 MPI processes type: lobpcg ... ST Object: 4 MPI processes type: precond shift: 0. number of matrices: 1 KSP Object: (st_) 4 MPI processes type: minres * maximum iterations=5, initial guess is zero* * tolerances: relative=1e-10, absolute=1e-50, divergence=10000.* left preconditioning using PRECONDITIONED norm type for convergence test PC Object: (st_) 4 MPI processes type: none ...