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) 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

Reply via email to