Thanks for the sharing the article. For my application, I think using an interval region to exclude the unneeded eigenvalues will still be faster than forming a larger constrained system. Specifying an interval appears to run in a similar amount of time.
Lucas ________________________________ From: Jose E. Roman <[email protected]> Sent: Tuesday, May 31, 2022 2:08 PM To: Lucas Banting <[email protected]> Cc: PETSc <[email protected]> Subject: Re: [petsc-users] Accelerating eigenvalue computation / removing portion of spectrum Caution: This message was sent from outside the University of Manitoba. Please respond to the list also. The problem with EPSSetDeflationSpace() is that it internally orthogonalizes the vectors that you pass in, so it is not viable for thousands of vectors. You can try implementing any of the alternative schemes described in https://doi.org/10.1002/nla.307 Another thing you can try is to use a region for filtering, as explained in section 2.6.4 of the users manual. Use a region that excludes -1.0 and you will have more chances to get the wanted eigenvalues faster. But still convergence may be slow. Jose > El 31 may 2022, a las 20:52, Lucas Banting <[email protected]> escribió: > > Thanks for the response Jose, > > There is an analytical solution for these modes actually, however there are > thousands of them and they are all sparse. > I assume it is a non-trivial thing for EPSSetDeflationSpace() to take > something like a MATAIJ as input? > > Lucas > From: Jose E. Roman <[email protected]> > Sent: Tuesday, May 31, 2022 1:11 PM > To: Lucas Banting <[email protected]> > Cc: [email protected] <[email protected]> > Subject: Re: [petsc-users] Accelerating eigenvalue computation / removing > portion of spectrum > > Caution: This message was sent from outside the University of Manitoba. > > > If you know how to cheaply compute a basis of the nullspace of S, then you > can try passing it to the solver via > EPSSetDeflationSpace()https://slepc.upv.es/documentation/current/docs/manualpages/EPS/EPSSetDeflationSpace.html > > Jose > > > > El 31 may 2022, a las 19:28, Lucas Banting <[email protected]> > > escribió: > > > > Hello, > > > > I have a general non hermitian eigenvalue problem arising from the 3D > > helmholtz equation. > > The form of the helmholtz equaton is: > > > > (S - k^2M)v = lambda k^2 M v > > > > Where S is the stiffness/curl-curl matrix and M is the mass matrix > > associated with edge elements used to discretize the problem. > > The helmholtz equation creates eigenvalues of -1.0, which I believe are > > eigenvectors that are part of the null space of the curl-curl operator S. > > > > For my application, I would like to compute eigenvalues > -1.0, and avoid > > computation of eigenvalues of -1.0. > > I am currently using shift invert ST with mumps LU direct solver. By > > increasing the shift away from lambda=-1.0. I get faster computation of > > eigenvectors, and the lambda=-1.0 eigenvectors appear to slow down the > > computation by about a factor of two. > > Is there a way to avoid these lambda = -1.0 eigenpairs with a GNHEP problem > > type? > > > > Regards, > > Lucas
