SVD is enormously expensive, needs to be done on a full dense matrix so completely impractical. You need the best tuned iterative method, Jose is the by far the most knowledgeable about that.
Barry > On Aug 16, 2020, at 7:46 PM, Nidish <n...@rice.edu> wrote: > > Thank you for the suggestions. > > I'm getting a zero pivot error for the LU in slepc while calculating the rest > of the modes. > > 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. > > Thanks, > Nidish > > On 8/16/20 2:50 PM, Barry Smith wrote: >> >> 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. >> >> Barry >> >> >> >> >>> On Aug 16, 2020, at 11:26 AM, Nidish <n...@rice.edu <mailto:n...@rice.edu>> >>> wrote: >>> >>> 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. >>> >>> 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? >>> >>> Nidish >>> On Aug 16, 2020, at 00:17, Jed Brown <j...@jedbrown.org >>> <mailto:j...@jedbrown.org>> wrote: >>> 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 <n...@rice.edu <mailto:n...@rice.edu>> writes: >>> >>> I just use the standard eigs function >>> (https://www.mathworks.com/help/matlab/ref/eigs.html >>> <https://www.mathworks.com/help/matlab/ref/eigs.html>) 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 <bsm...@petsc.dev >>> <mailto:bsm...@petsc.dev>> wrote: >>> >>> Exactly what algorithm are you using in Matlab to get the 10 smallest >>> eigenvalues and their corresponding eigenvectors? >>> >>> Barry >>> >>> >>> On Aug 15, 2020, at 8:53 PM, Nidish <n...@rice.edu <mailto:n...@rice.edu>> >>> wrote: >>> >>> The section on solving singular systems in the manual starts with >>> assuming that the singular eigenvectors are already known. >>> >>> I have a large system where finding the singular eigenvectors is not >>> 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 >>> >>> K.v = lam*M.v >>> >>> for cases where K is positive semi-definite (contains a few "rigid >>> body modes") and M is strictly positive definite. >>> >>> I'd appreciate any assistance you may provide with this. >>> >>> Thank you, >>> Nidish >> > -- > Nidish