[petsc-users] Slepc JD and GD converge to wrong eigenpair

Jose E. Roman jroman at dsic.upv.es
Wed Mar 29 02:54:33 CDT 2017


> El 29 mar 2017, a las 9:08, Toon Weyens <toon.weyens at gmail.com> escribió:
> 
> I started looking for alternatives from the standard Krylov-Schur method to solve the generalized eigenvalue problem Ax = kBx in my code. These matrices have a block-band structure (typically 5, 7 or 9 blocks wide, with block sizes of the order 20) of size typically 1000 blocks. This eigenvalue problem results from the minimization of the energy of a perturbed plasma-vacuum system in order to investigate its stability. So far, I've not taken advantage of the Hermiticity of the problem.
> 
> For "easier" problems, especially the Generalized Davidson method converges like lightning, sometimes up to 100 times faster than Krylov-Schur. 
> 
> However, for slightly more complicated problems, GD converges to the wrong eigenpair: There is certainly an eigenpair with an eigenvalue lower than 0 (i.e. unstable), but the solver never gets below some small, positive value, to which it wrongly converges.

I would need to know the settings you are using. Are you doing smallest_real? Maybe you can try target_magnitude with harmonic extraction.

> 
> Is it possible to improve this behavior? I tried changing the preconditioner, but it did not work.
> 
> Might it be possible to use Krylov-Schur until reaching some precision, and then switching to JD to quickly converge?

Yes, you can do this, using EPSSetInitialSpace() in the second solve. But, depending on the settings, this may not buy you much.

Jose

> 
> Thanks!




More information about the petsc-users mailing list