[petsc-users] SLEPc - st_type cayley choice of shift and antishift

Michael Werner michael.werner at dlr.de
Fri Sep 27 06:11:56 CDT 2019


Thank you for the link to the paper, it's quite interesting and pretty
close to what I'm doing. I'm currently also using the "inexact" approach
for my application, and in general it works, as long as the ksp
tolerance is low enough. However, I was hoping to speed up convergence
towards the "interesting" eigenvalues by using Cayley.

Now as a test I tried to follow the approach from your paper, choosing
mu = -sigma, and mu in the order of magnitude of the imaginary part of
the most amplified eigenvalue. I know the most amplified eigenvalue for
my problem is -0.0398+0.724i, so I tried running SLEPc with the
following settings:
-st_type cayley
-st_shift -1
-st_cayley_antishift 1

But I never get the correct eigenvalue, instead SLEPc returns only the
value of st_shift:
[0]      Number of iterations of the method: 1
[0]      Solution method: krylovschur
[0]      Number of requested eigenvalues: 1
[0]      Stopping condition: tol=1e-08, maxit=19382
[0]      Number of converged eigenpairs: 16
[0]     
[0]              k          ||Ax-kx||/||kx||
[0]      ----------------- ------------------
[0]          -1.000000          0.0281754
[0]          -1.000000          0.0286815
[0]          -1.000000          0.0109186
[0]          -1.000000           0.140883
[0]          -1.000000           0.203036
[0]          -1.000000         0.00801616
[0]          -1.000000          0.0526871
[0]          -1.000000           0.022244
[0]          -1.000000          0.0182197
[0]          -1.000000          0.0107924
[0]          -1.000000         0.00963378
[0]          -1.000000          0.0239422
[0]          -1.000000         0.00472435
[0]          -1.000000         0.00607732
[0]          -1.000000          0.0124056
[0]          -1.000000         0.00557715

Also, it doesn't matter if I'm using exact or inexact solves. Changing
the values of shift and antishift also doesn't change the behaviour. Do
I need to make additional adjustments to get cayley to work?

Best regards,
Michael



Am 25.09.19 um 17:21 schrieb Jose E. Roman:
>
>> El 25 sept 2019, a las 16:18, Michael Werner via petsc-users <petsc-users at mcs.anl.gov> escribió:
>>
>> Hello,
>>
>> I'm looking for advice on how to set shift and antishift for the cayley
>> spectral transformation. So far I've been using sinvert to find the
>> eigenvalues with the smallest real part (but possibly large imaginary
>> part). For this, I use the following options:
>> -st_type sinvert
>> -eps_target -0.05
>> -eps_target_real
>>
>> With sinvert, it is easy to understand how to chose the target, but for
>> Cayley I'm not sure how to set shift and antishift. What is the
>> mathematical meaning of the antishift?
>>
>> Best regards,
>> Michael Werner
> In exact arithmetic, both shift-and-invert and Cayley build the same Krylov subspace, so no difference. If the linear solves are computed "inexactly" (iterative solver) then Cayley may have some advantage, but it depends on the application. Also, iterative solvers usually are not robust enough in this context. You can see the discussion here https://doi.org/10.1108/09615530410544328
>
> Jose
>


More information about the petsc-users mailing list