<div dir="auto">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? </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 1, 2021, 4:29 AM Jose E. Roman <<a href="mailto:jroman@dsic.upv.es">jroman@dsic.upv.es</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">For smallest real parts one could adapt ex34.c, but it is going to be costly <a href="https://slepc.upv.es/documentation/current/src/eps/tutorials/ex36.c.html" rel="noreferrer noreferrer" target="_blank">https://slepc.upv.es/documentation/current/src/eps/tutorials/ex36.c.html</a><br>
Also, if eigenvalues are clustered around the origin, convergence may still be very slow.<br>
<br>
It is a tough problem, unless you are able to compute a good preconditioner of A (no need to compute the exact inverse).<br>
<br>
Jose<br>
<br>
<br>
> El 1 jul 2021, a las 13:23, Varun Hiremath <<a href="mailto:varunhiremath@gmail.com" target="_blank" rel="noreferrer">varunhiremath@gmail.com</a>> escribió:<br>
> <br>
> 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.<br>
> <br>
> On Thu, Jul 1, 2021, 4:08 AM Jose E. Roman <<a href="mailto:jroman@dsic.upv.es" target="_blank" rel="noreferrer">jroman@dsic.upv.es</a>> wrote:<br>
> Smallest eigenvalue in magnitude or real part?<br>
> <br>
> <br>
> > El 1 jul 2021, a las 11:58, Varun Hiremath <<a href="mailto:varunhiremath@gmail.com" target="_blank" rel="noreferrer">varunhiremath@gmail.com</a>> escribió:<br>
> > <br>
> > Sorry, no both A and B are general sparse matrices (non-hermitian). So is there anything else I could try?<br>
> > <br>
> > On Thu, Jul 1, 2021 at 2:43 AM Jose E. Roman <<a href="mailto:jroman@dsic.upv.es" target="_blank" rel="noreferrer">jroman@dsic.upv.es</a>> wrote:<br>
> > 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.<br>
> > <br>
> > Jose<br>
> > <br>
> > <br>
> > > El 1 jul 2021, a las 11:37, Varun Hiremath <<a href="mailto:varunhiremath@gmail.com" target="_blank" rel="noreferrer">varunhiremath@gmail.com</a>> escribió:<br>
> > > <br>
> > > Hi All,<br>
> > > <br>
> > > 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.<br>
> > > <br>
> > > 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?<br>
> > > <br>
> > > Thanks,<br>
> > > Varun<br>
> > <br>
> <br>
<br>
</blockquote></div>