[petsc-users] SLEPc - Davidson-type solvers options

Jose E. Roman jroman at dsic.upv.es
Mon Aug 6 11:23:11 CDT 2018



> El 6 ago 2018, a las 14:44, Michael Werner <michael.werner at dlr.de> escribió:
> 
> 
> Michael Werner writes:
> 
>> Hello, I want to use a Davidson-type solver (probably jd) to find the eigenvalues with the smallest real part, but so far I'm strugglung to get them to converge. So I was hoping to get some advice on the various  options available for those solvers.
>> 
>> For my test case, I know the smallest eigenvalue is -0.04+0.71i (calculated with shift-and-invert and lu preconditioner). However, when I try to use jd or gd, the eigensolver never converges. After a few iterations, the "first unconverged value" is more or less as expected, but it fluctuates around the correct value, and the residual never drops below 1e-2. The best results so far were achieved with the following set of commandline options:
>> 
>> -st_type precond -st_pc_type asm -st_sub_pc_type ilu  -st_sub_pc_factor_levels 2 -st_ksp_max_it 15 -st_ksp_rtol 1e-2  -eps_type jd -eps_tol 1e-4 -eps_monitor -eps_nev 5 -eps_target  -0.08 -eps_target_real -eps_harmonic_largest
>> 
>> I also tried using more ksp iterations or different st_sub_pc_factor_levels. I also tried using eps_smallest_real instead of a target value, without any success. So far, I noticed that the extraction type had the largest influence. Only for eps_harmonic_largest could I observe any eigenvalues with negative real part, for all the other extraction types I only got eigenvalues with positive real parts.
>> 
>> I also had a look at the available options for the Davidson solvers, but I couldn't find a good explanation for 
> 
> Sorry, I didn't mean to send it already. What I wanted to say:
> 
> I also had a look at the available options for the Davidson solvers, but I couldn't find a good explanation for many of the additional options. Is there any recommendation to chose -eps_mpd or -eps_jd_minv? And can -eps_jd_plusk be used for GNHEP-type problems? I already had a look at the paper of E. Romero and J. E. Roman concerning the implementation of the Davidson-type solvers in SLEPc, but it didn't answer all my questions.
> 
> Kind regards,
> Michael

You may need to enforce more accuracy on the KSP. Try replacing
-st_ksp_max_it 15 -st_ksp_rtol 1e-2 
by
-st_ksp_rtol 1e-5

Normally, you don't need to set the -eps_mpd parameter, except if many eigenvalues (nev) are requested. The parameter jd_minv controls how the restart is done, keeping more or less information from previous restarts - it may affect convergece, but not too much. And yes, jd_plusk can be used for GNHEP problems.

Jose





More information about the petsc-users mailing list