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

Manav Bhatia bhatiamanav at gmail.com
Fri Sep 7 02:06:20 CDT 2018


Thanks, Jose. 

I was able to get this to work with the largest eigenvalues option. 

Thanks! 

-Manav

> On Sep 7, 2018, at 2:04 AM, Jose E. Roman <jroman at dsic.upv.es> wrote:
> 
> 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