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

Miguel Arriaga mta2122 at columbia.edu
Mon Dec 17 17:28:39 CST 2012


Hi again,
Thanks for all the help.
Using EPS_TARGET_REAL gives a more consistent behavior. As I mentioned
before, my problem with target is that the eigenvalues change during the
time-step analysis. I should try to update my target on each time step.
However I'm expecting that at some point one of the eigenvalues will "shoot
up" when the global instability arrives so I'm not sure that if I make my
target keep tracking the initial eigenvalues that I'll be able to pick the
one I'm looking for when the instability occurs.

Thanks for the help, I already have enough info to work on for a few days. I
really appreciate your availability

Best regards,
Miguel


On Mon, Dec 17, 2012 at 3:04 PM, Jose E. Roman <jroman at dsic.upv.es> wrote:

> You should not use a target in combination with EPS_LARGEST_REAL. Instead,
> use EPS_TARGET_REAL or better a user-defined criterion as in ex18.c (note
> that EPSSetEigenvalueComparison is supported in Fortran but has not been
> well tested).
>
> Another comment is that using a target as far as 10000 from the wanted
> eigenvalues is not a good idea, because the convergence criterion will
> likely give eigenvalues with high error (especially in the non-Hermitian
> case). You could try -eps_true_residual but sometimes this has the problem
> that convergence is not attained.
>
> If the matrices are not too large, send them to slepc-maint and we will
> give them a try.
>
> Jose
>
>
> El 17/12/2012, a las 20:39, Miguel Arriaga escribió:
>
> > Thanks for the reply,
> > I had tried changing the target before but the problem is that the
> > eigenvalues will change depending on my target. I'm using Fortran and
> > my code looks like this:
> >         call EPSCreate(PETSC_COMM_WORLD,eps,ierr)
> >         (MatAssembly stuff here)
> >         call EPSSetOperators(eps,Kmat,Mmat,ierr)
> >         call EPSSetProblemType(eps,EPS_GNHEP,ierr)
> >         call EPSSetWhichEigenpairs(eps,EPS_LARGEST_REAL,ierr)
> >         call EPSSetTolerances(eps,tol,maxit,ierr)
> >         call EPSSetDimensions(eps,nev,PETSC_DECIDE,PETSC_DECIDE,ierr)
> >         call EPSSetFromOptions(eps,ierr)
> >         call EPSSolve(eps,ierr)
> >
> > Since I don't know where my eigenvalues will be (because they change
> > as the material yields) I'm a little concerned with using target.
> > Maybe I'm doing something wrong? I noticed that although I set
> > EPS_LARGEST_REAL in my code, if I set it again in the command line it
> > will change the output. Another thing is that I'm using Shift-Invert
> > to look at a Largest Real problem, which although it seemed odd to me,
> > it showed a much faster convergence.
> >
> > Below I show some test results I obtained for just the first time step.
> >
> > _Results:
> > -I'm asking for 6 eigenvalues and I have a tol of 1E-5
> > -Notice that the eigenvalues are different from the purely imaginary I
> > got from Matlab and SLEPc without SInvert.
> >
> > BASE = -st_type sinvert -st_ksp_type preonly -st_pc_type lu
> > -st_pc_factor_mat_solver_package umfpack (has the mentioned error)
> >
> > BASE -eps_target 0.2
> > Global eig           0 Real  8.08057606271894713E-007 Im
> > 0.0000000000000000
> > Global eig           1 Real  5.88946613699903310E-010 Im
> > 1.11478341210332509E-005
> > Global eig           2 Real  5.88946613699903310E-010 Im
> > -1.11478341210332509E-005
> > Global eig           3 Real  1.00727620688800812E-010 Im
> > 1.60248025360939258E-010
> > Global eig           4 Real  1.00727620688800812E-010 Im
> > -1.60248025360939258E-010
> > Global eig           5 Real -2.82380008265192828E-010 Im
> > 1.27051563295447506E-010
> > Global eig           6 Real -2.82380008265192828E-010 Im
> > -1.27051563295447506E-010
> > Global eig           7 Real  -45.307348017077182      Im
> > 0.0000000000000000
> >
> > BASE -eps_target 1000
> > Global eig           0 Real  1.33590310724684969E-006 Im
> > 5.69992625689008225E-003
> > Global eig           1 Real  1.33590310724684969E-006 Im
> > -5.69992625689008225E-003
> > Global eig           2 Real  -45.307261982302634      Im
> > 0.0000000000000000
> > Global eig           3 Real  -90.614531192221420      Im
> > 0.0000000000000000
> > Global eig           4 Real  -182.34960882354494      Im
> > 0.0000000000000000
> > Global eig           5 Real  -227.65688316119918      Im
> 0.0000000000000000
> >
> > BASE -eps_target 10000
> > Global eig           0 Real  0.43857832608046010      Im
> > 0.0000000000000000
> > Global eig           1 Real -0.44680019931001880      Im
> > 0.0000000000000000
> > Global eig           2 Real  -45.307619734525360      Im
> > 0.0000000000000000
> > Global eig           3 Real  -90.609456729185695      Im
> > 0.0000000000000000
> > Global eig           4 Real -1.23910373804392293E-003 Im
> > 1842.6494652654314
> > Global eig           5 Real -1.23910373804392293E-003 Im
>  -1842.6494652654314
> >
> > BASE -eps_target 0.2 -eps_largest_real
> > Global eig           0 Real  5.88925547218011047E-010 Im
> > 1.11479604597693868E-005
> > Global eig           1 Real  5.88925547218011047E-010 Im
> > -1.11479604597693868E-005
> > Global eig           2 Real  3.41273675985576119E-011 Im
> > 2.48751366232282650E-011
> > Global eig           3 Real  3.41273675985576119E-011 Im
> > -2.48751366232282650E-011
> > Global eig           4 Real  1.94852467494399662E-012 Im
> > 5.58171840043041153E-011
> > Global eig           5 Real  1.94852467494399662E-012 Im
> > -5.58171840043041153E-011
> > Global eig           6 Real -3.06560610230377506E-011 Im
> > 2.38634932296064250E-011
> > Global eig           7 Real -3.06560610230377506E-011 Im
> > -2.38634932296064250E-011
> > Global eig           8 Real -3.14280823587864688E-010 Im
> 0.0000000000000000
> >
> > BASE -eps_target 1000 -eps_largest_real
> > Global eig           0 Real  3.41060513164848089E-012 Im
> > 1.32716666241605970E-005
> > Global eig           1 Real  3.41060513164848089E-012 Im
> > -1.32716666241605970E-005
> > Global eig           2 Real -3.36171979142818600E-010 Im
> > 1842.6504379364101
> > Global eig           3 Real -3.36171979142818600E-010 Im
> > -1842.6504379364101
> > Global eig           4 Real -2.93482571578351781E-009 Im
> > 2008.6622800422490
> > Global eig           5 Real -2.93482571578351781E-009 Im
>  -2008.6622800422490
> >
> > BASE -eps_target 10000 -eps_largest_real
> > Global eig           0 Real  8.44766719455947168E-003 Im
> > 0.23198091192374859
> > Global eig           1 Real  8.44766719455947168E-003 Im
> > -0.23198091192374859
> > Global eig           2 Real  2.18278728425502777E-011 Im
> > 1842.6504379364712
> > Global eig           3 Real  2.18278728425502777E-011 Im
> > -1842.6504379364712
> > Global eig           4 Real -2.00088834390044212E-011 Im
> > 2008.6622800484372
> > Global eig           5 Real -2.00088834390044212E-011 Im
>  -2008.6622800484372
> >
> >
> > Thank you in advance for your help,
> > Miguel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20121217/b0cbc2bc/attachment.html>


More information about the petsc-dev mailing list