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

Barry Smith bsmith at mcs.anl.gov
Sun Dec 16 23:52:15 CST 2012


  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