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 <jro...@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 <varunhirem...@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 <jro...@dsic.upv.es> wrote: > > Smallest eigenvalue in magnitude or real part? > > > > > > > El 1 jul 2021, a las 11:58, Varun Hiremath <varunhirem...@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 <jro...@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 <varunhirem...@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 > > > > > > >