<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thanks for the sharing the article. <br>
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.<br>
<br>
Lucas<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Jose E. Roman <jroman@dsic.upv.es><br>
<b>Sent:</b> Tuesday, May 31, 2022 2:08 PM<br>
<b>To:</b> Lucas Banting <bantingl@myumanitoba.ca><br>
<b>Cc:</b> PETSc <petsc-users@mcs.anl.gov><br>
<b>Subject:</b> Re: [petsc-users] Accelerating eigenvalue computation / removing portion of spectrum</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Caution: This message was sent from outside the University of Manitoba.<br>
<br>
<br>
Please respond to the list also.<br>
<br>
The problem with EPSSetDeflationSpace() is that it internally orthogonalizes the vectors that you pass in, so it is not viable for thousands of vectors.<br>
<br>
You can try implementing any of the alternative schemes described in <a href="https://doi.org/10.1002/nla.307">
https://doi.org/10.1002/nla.307</a><br>
<br>
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.<br>
<br>
Jose<br>
<br>
<br>
> El 31 may 2022, a las 20:52, Lucas Banting <bantingl@myumanitoba.ca> escribió:<br>
><br>
> Thanks for the response Jose,<br>
><br>
> There is an analytical solution for these modes actually, however there are thousands of them and they are all sparse.<br>
> I assume it is a non-trivial thing for EPSSetDeflationSpace() to take something like a MATAIJ as input?<br>
><br>
> Lucas<br>
> From: Jose E. Roman <jroman@dsic.upv.es><br>
> Sent: Tuesday, May 31, 2022 1:11 PM<br>
> To: Lucas Banting <bantingl@myumanitoba.ca><br>
> Cc: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov><br>
> Subject: Re: [petsc-users] Accelerating eigenvalue computation / removing portion of spectrum<br>
><br>
> Caution: This message was sent from outside the University of Manitoba.<br>
><br>
><br>
> 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<br>
><br>
> Jose<br>
><br>
><br>
> > El 31 may 2022, a las 19:28, Lucas Banting <bantingl@myumanitoba.ca> escribió:<br>
> ><br>
> > Hello,<br>
> ><br>
> > I have a general non hermitian eigenvalue problem arising from the 3D helmholtz equation.<br>
> > The form of the helmholtz equaton is:<br>
> ><br>
> > (S - k^2M)v = lambda k^2 M v<br>
> ><br>
> > Where S is the stiffness/curl-curl matrix and M is the mass matrix associated with edge elements used to discretize the problem.<br>
> > 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.<br>
> ><br>
> > For my application, I would like to compute eigenvalues > -1.0, and avoid computation of eigenvalues of -1.0.<br>
> > 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.<br>
> > Is there a way to avoid these lambda = -1.0 eigenpairs with a GNHEP problem type?<br>
> ><br>
> > Regards,<br>
> > Lucas<br>
<br>
</div>
</span></font></div>
</body>
</html>