[petsc-users] SLEPc: smallest eigenvalues

Varun Hiremath varunhiremath at gmail.com
Thu Jul 1 06:36:27 CDT 2021


Thanks. I actually do have a 1st order approximation of matrix A, that I
can explicitly compute and also invert. Can I use that matrix as
preconditioner to speed things up? Is there some example that explains how
to setup and call SLEPc for this scenario?

On Thu, Jul 1, 2021, 4:29 AM Jose E. Roman <jroman at dsic.upv.es> wrote:

> For smallest real parts one could adapt ex34.c, but it is going to be
> costly
> https://slepc.upv.es/documentation/current/src/eps/tutorials/ex36.c.html
> Also, if eigenvalues are clustered around the origin, convergence may
> still be very slow.
>
> It is a tough problem, unless you are able to compute a good
> preconditioner of A (no need to compute the exact inverse).
>
> Jose
>
>
> > El 1 jul 2021, a las 13:23, Varun Hiremath <varunhiremath at gmail.com>
> escribió:
> >
> > I'm solving for the smallest eigenvalues in magnitude. Though is it
> cheaper to solve smallest in real part, as that might also work in my case?
> Thanks for your help.
> >
> > On Thu, Jul 1, 2021, 4:08 AM Jose E. Roman <jroman at dsic.upv.es> wrote:
> > Smallest eigenvalue in magnitude or real part?
> >
> >
> > > El 1 jul 2021, a las 11:58, Varun Hiremath <varunhiremath at gmail.com>
> escribió:
> > >
> > > Sorry, no both A and B are general sparse matrices (non-hermitian). So
> is there anything else I could try?
> > >
> > > On Thu, Jul 1, 2021 at 2:43 AM Jose E. Roman <jroman at dsic.upv.es>
> wrote:
> > > Is the problem symmetric (GHEP)? In that case, you can try LOBPCG on
> the pair (A,B). But this will likely be slow as well, unless you can
> provide a good preconditioner.
> > >
> > > Jose
> > >
> > >
> > > > El 1 jul 2021, a las 11:37, Varun Hiremath <varunhiremath at gmail.com>
> escribió:
> > > >
> > > > Hi All,
> > > >
> > > > I am trying to compute the smallest eigenvalues of a generalized
> system A*x= lambda*B*x. I don't explicitly know the matrix A (so I am using
> a shell matrix with a custom matmult function) however, the matrix B is
> explicitly known so I compute inv(B)*A within the shell matrix and solve
> inv(B)*A*x = lambda*x.
> > > >
> > > > To compute the smallest eigenvalues it is recommended to solve the
> inverted system, but since matrix A is not explicitly known I can't invert
> the system. Moreover, the size of the system can be really big, and with
> the default Krylov solver, it is extremely slow. So is there a better way
> for me to compute the smallest eigenvalues of this system?
> > > >
> > > > Thanks,
> > > > Varun
> > >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210701/d12728bb/attachment.html>


More information about the petsc-users mailing list