[petsc-users] Slepc solver not converging for generalized eigenproblem

Jose E. Roman jroman at dsic.upv.es
Fri Sep 7 02:04:00 CDT 2018


The matrices are not in a format that I can easily load. Anyway, I see that you are using "smallest magnitude", which will give bad convergence in most cases. It is specially not recommended in generalized eigenproblems: instead of smallest eigenvalues of (M0,M1) you should compute largest eigenvalues of (M1,M0), and evaluate the reciprocals of the eigenvalues. Alternatively, use shift-and-invert to compute eigenvalues of (M0,M1) closest to the target sigma=0. If M0 is singular, then use a small nonzero value for sigma.

Jose


> El 7 sept 2018, a las 8:44, Manav Bhatia <bhatiamanav at gmail.com> escribió:
> 
> Hi, 
> 
>    I am attempting to compute the eigenvalues of the generalized nonhermitian eigenproblem  
> 
> M1 x = lambda M0 x
> 
>   M1 and M0 are in the attached text files. The solver is unable to converge with 300 iterations. I have played around with the max it (as high as 1500) and it still is unable to converge. 
> 
>   What would be the best way to work around this issue? 
> 
>    I would appreciate your help. 
> 
> Thanks,
> Manav
> 
> <M0.txt>
> <M1.txt>
> 
> 
> EPS Object: 1 MPI processes
>   type: krylovschur
>     50% of basis vectors kept after restart
>     using the locking variant
>   problem type: generalized non-symmetric eigenvalue problem
>   selected portion of the spectrum: smallest eigenvalues in magnitude
>   number of eigenvalues (nev): 10
>   number of column vectors (ncv): 50
>   maximum dimension of projected problem (mpd): 50
>   maximum number of iterations: 300
>   tolerance: 1e-08
>   convergence test: relative to the eigenvalue
> BV Object: 1 MPI processes
>   type: svec
>   51 columns of global length 178
>   vector orthogonalization method: classical Gram-Schmidt
>   orthogonalization refinement: if needed (eta: 0.7071)
>   block orthogonalization method: GS
>   doing matmult as a single matrix-matrix product
> DS Object: 1 MPI processes
>   type: nhep
> ST Object: 1 MPI processes
>   type: shift
>   shift: 0.
>   number of matrices: 2
>   all matrices have different nonzero pattern
> KSP Object: (st_) 1 MPI processes
>   type: preonly
>   maximum iterations=10000, initial guess is zero
>   tolerances:  relative=1e-08, absolute=1e-50, divergence=10000.
>   left preconditioning
>   using NONE norm type for convergence test
> PC Object: (st_) 1 MPI processes
>   type: lu
>     out-of-place factorization
>     tolerance for zero pivot 2.22045e-14
>     matrix ordering: nd
>     factor fill ratio given 0., needed 0.
>       Factored matrix follows:
>         Mat Object: 1 MPI processes
>           type: seqdense
>           rows=178, cols=178
>           package used to perform factorization: petsc
>           total: nonzeros=31684, allocated nonzeros=31684
>           total number of mallocs used during MatSetValues calls =0
>   linear system matrix = precond matrix:
>   Mat Object: 1 MPI processes
>     type: seqdense
>     rows=178, cols=178
>     total: nonzeros=31684, allocated nonzeros=31684
>     total number of mallocs used during MatSetValues calls =0
>  Linear eigensolve did not converge due to DIVERGED_ITS; iterations 300



More information about the petsc-users mailing list