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

Michael Werner michael.werner at dlr.de
Tue Aug 7 05:01:13 CDT 2018


Thank you for your reply and your explanations, I'll try it with a 
higher ksp tolerance. I chose this low value, because in the SLEPc 
manual it is mentioned that the Davidson solvers often work better 
with lower tolerances than with higher tolerances.

Is there also a way to improve convergence for the gd solver? As 
far as I know it doesn't use a ksp , so the only way I can think 
of to improve convergence would be using a higher quality 
preconditioner, right?

Kind regards,
Michael

Jose E. Roman writes:

>> 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