[petsc-dev] SLEPc General Eigenvalue Shift-Invert Crash

Jose E. Roman jroman at dsic.upv.es
Mon Dec 17 04:08:13 CST 2012


This may be caused by the KSP coefficient matrix being singular. With shift-and-invert the KSP matrix is A-sigma*B where the shift sigma is equal to the target. Are you specifying a target? By default the target in shift-and-invert runs is 0 so in that case the KSP matrix is A. Probably your A matrix is singular or has tiny eigenvalues. I would suggest trying with a nonzero target, e.g. -eps_target 0.2 (or a larger value if you know that your unstable eigenvalues are further away from the real axis).

If this does not solve the problem, send configure and make logs to slepc-maint, together with the output of -eps_view

Jose


El 17/12/2012, a las 06:52, Barry Smith escribió:

> 
>  A google of DHSEQR 25  led to this page: http://www.netlib.org/lapack/explore-html/d8/d66/dhseqr_8f.html
> 
> INFO is INTEGER
>             =  0:  successful exit
>           .LT. 0:  if INFO = -i, the i-th argument had an illegal
>                    value
>           .GT. 0:  if INFO = i, DHSEQR failed to compute all of
>                the eigenvalues.  Elements 1:ilo-1 and i+1:n of WR
>                and WI contain those eigenvalues which have been
>                successfully computed.  (Failures are rare.)
> 
>                If INFO .GT. 0 and JOB = 'E', then on exit, the
>                remaining unconverged eigenvalues are the eigen-
>                values of the upper Hessenberg matrix rows and
>                columns ILO through INFO of the final, output
>                value of H.
> 
> 
> Being at the end of my knowledge, I'll suggest perhaps you can run everything in __float128 precision?  You need a non-ancient version of GCC and 
> configure PETSc using -with-precision=__float128  --download-f2cblaslapack   (I hope you don't have Fortran code cause I don't know if that will build properly with __float28).   Also unlikely umfpack or any other external direct solver package supports __float128?
> 
> Hopefully the eigenvalue experts will have a better solution.
> 
>  Barry
> 
> 
> 
> On Dec 16, 2012, at 11:16 PM, Miguel Arriaga <mta2122 at columbia.edu> wrote:
> 
>> Hello.
>> 
>> I'm using slepc and I'm trying to do a stability analysis on a solid
>> mechanics problem which in my case is associated with looking at the
>> highest real part of the eigenvalues of the general problem Ax=λBx. My
>> problem has a real non-symmetric A and a positive definite B. When I
>> try to ask for the largest real eigenvalues it takes a great number of
>> iterations to solve the problem, especially when I reach the yielding
>> phase of my problem, in which case I can no longer obtain the required
>> eigenvalues.
>> 
>> The eigenvalues on the first steps are similar to what I obtained in
>> Matlab for largest magnitude (Matlab doesn't converge for the largest real
>> option). These eigenvalues are purely imaginary. When I was doing a
>> standard eigenvalue analysis on this problem I found that I could
>> greatly increase my performance with a Shift-Invert transformation.
>> However, when I try the SI in the general case I get the following
>> error:
>> 
>> [0]PETSC ERROR: Error in external library!
>> [0]PETSC ERROR: Error in Lapack xHSEQR 25!
>> 
>> I'm using umfpack to do a preonly LU solve. Preconditioned
>> Eigensolvers seem not to converge at all so for now I'm stuck with
>> these. When I removed the umfpack I got the following error:
>> 
>> [0]PETSC ERROR: Detected zero pivot in LU factorization:
>> see http://www.mcs.anl.gov/petsc/documentation/faq.html#ZeroPivot!
>> [0]PETSC ERROR: Zero pivot row 0 value 0 tolerance 2.22045e-14!
>> 
>> Based on the FAQ I tried using -st_pc_factor_shift_type
>> POSITIVE_DEFINITE. While this made sinvert not crash and converge fast
>> it also messed with my eigenvalues.
>> 
>> Any ideas on how I could solve this?
>> 
>> Thank you so much,
>> Miguel Arriaga
> 




More information about the petsc-dev mailing list