<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body>
<p>Thank you for the suggestions.</p>
<p>I'm getting a zero pivot error for the LU in slepc while
calculating the rest of the modes. <br>
</p>
<p>Would conducting an SVD for just the stiffness matrix and then
using the singular vectors as bases for the nullspace work? I
haven't tried this out just yet, but I'm wondering if you could
provide me insights into whether this will.</p>
<p>Thanks,<br>
Nidish<br>
</p>
<div class="moz-cite-prefix">On 8/16/20 2:50 PM, Barry Smith wrote:<br>
</div>
<blockquote type="cite"
cite="mid:C383A12E-B879-4F37-B2C7-63F7B813D8FE@petsc.dev">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<div class=""><br class="">
</div>
If you know part of your null space explicitly (for example the
rigid body modes) I would recommend you always use that
information explicitly since it is extremely expensive numerically
to obtain. Thus rather than numerically computing the entire null
space compute the part orthogonal to the part you already know.
Presumably SLEPc has tools to help do this, naively I would just
orthogonalized against the know subspace during the computational
process but there are probably better ways.
<div class=""><br class="">
</div>
<div class=""> Barry</div>
<div class=""><br class="">
<div class=""><br class="">
</div>
<div class=""><br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Aug 16, 2020, at 11:26 AM, Nidish <<a
href="mailto:nb25@rice.edu" class=""
moz-do-not-send="true">nb25@rice.edu</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="zoom: 0%;" class="">
<div dir="auto" class="">Well some of the zero
eigenvectors are rigid body modes, but there are
some more which are introduced by
lagrange-multiplier based constraint enforcement,
which are non trivial.<br class="">
<br class="">
</div>
<div dir="auto" class="">My final application is for a
nonlinear simulation, so I don't mind the extra
computational effort initially. Could you have me
the suggested solver configurations to get this type
of eigenvectors in slepc?<br class="">
<br class="">
</div>
<div dir="auto" class="">Nidish</div>
<div class="gmail_quote">On Aug 16, 2020, at 00:17,
Jed Brown <<a href="mailto:jed@jedbrown.org"
target="_blank" class="" moz-do-not-send="true">jed@jedbrown.org</a>>
wrote:
<blockquote class="gmail_quote" style="margin: 0pt
0pt 0pt 0.8ex; border-left: 1px solid rgb(204,
204, 204); padding-left: 1ex;">
<pre class="blue">It's possible to use this or a similar algorithm in SLEPc, but keep in mind that it's more expensive to compute these eigenvectors than to solve a linear system. Do you have a sequence of systems with the same null space?
You referred to the null space as "rigid body modes". Why can't those be written down? Note that PETSc has convenience routines for computing rigid body modes from coordinates.
Nidish <<a href="mailto:nb25@rice.edu" class="" moz-do-not-send="true">nb25@rice.edu</a>> writes:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> I just use the standard eigs function (<a href="https://www.mathworks.com/help/matlab/ref/eigs.html" class="" moz-do-not-send="true">https://www.mathworks.com/help/matlab/ref/eigs.html</a>) as a black box. I think it uses a lanczos type method under the hood.
Nidish
On Aug 15, 2020, 21:42, at 21:42, Barry Smith <<a href="mailto:bsmith@petsc.dev" class="" moz-do-not-send="true">bsmith@petsc.dev</a>> wrote:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">
Exactly what algorithm are you using in Matlab to get the 10 smallest
eigenvalues and their corresponding eigenvectors?
Barry
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"> On Aug 15, 2020, at 8:53 PM, Nidish <<a href="mailto:nb25@rice.edu" class="" moz-do-not-send="true">nb25@rice.edu</a>> wrote:
The section on solving singular systems in the manual starts with
</blockquote>assuming that the singular eigenvectors are already known.
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;">
I have a large system where finding the singular eigenvectors is not
</blockquote>trivially written down. How would you recommend I proceed with making
initial estimates? In MATLAB (with MUCH smaller matrices), I conduct an
eigensolve for the first 10 smallest eigenvalues and take the
eigenvectors corresponding to the zero eigenvalues from this. This
approach doesn't work here since I'm unable to use SLEPc for solving
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;">
K.v = lam*M.v
for cases where K is positive semi-definite (contains a few "rigid
</blockquote>body modes") and M is strictly positive definite.
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;">
I'd appreciate any assistance you may provide with this.
Thank you,
Nidish
</blockquote></blockquote></blockquote></pre>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</blockquote>
<div class="moz-signature">-- <br>
Nidish</div>
</body>
</html>