[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