Try setting -eps_target -1 instead of -st_shift -1 Does sinvert work with target -1? Can you send me the matrices so that I can reproduce the issue?
Jose > El 27 sept 2019, a las 13:11, Michael Werner <michael.wer...@dlr.de> escribió: > > 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@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 >>