<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">But your&nbsp;MatNullSpaceCreateRigidBody takes coordinates right?<div><br></div><div>I was saying that I would see if the RBMs have been created with the PCSetCoordinated method that exists now. &nbsp;If the data is not set then I now just create the translational RBMs. &nbsp;I can now simply check the matrix and see if it has "null space" vectors attached and use those instead of creating the default null space. &nbsp;So this should be very easy to do.</div><div><div><br></div><div><br><div><div>On Apr 2, 2012, at 7:40 PM, Jed Brown wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><p>We don't keep coordinates, just use the provided null space.</p><p>We should make MatDiagonalScale update the near null space.</p>
<div class="gmail_quote">On Apr 2, 2012 4:38 PM, "Mark F. Adams" &lt;<a href="mailto:mark.adams@columbia.edu">mark.adams@columbia.edu</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><br><div><div>On Apr 2, 2012, at 7:24 PM, Jed Brown wrote:</div><br><blockquote type="cite"><div class="gmail_quote">On Mon, Apr 2, 2012 at 07:44, Jed Brown <span dir="ltr">&lt;<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The block size is used if you don't provide any other information. The preferred approach with petsc-dev is to use MatSetNearNullSpace(). (I'll make sure this is currently working with ML and reply to this message.)</blockquote>

</div><br><div>I pushed ML support for user-provided null spaces to petsc-dev. Call MatSetNearNullSpace() to provide the information. You can use MatNullSpaceCreateRigidBody() if you have nodal coordinates.</div><div><br>

</div><div><br></div><div>Mark, what is the best way to make PCGAMG use this interface?</div>
</blockquote></div><div><br></div><div>It looks like you are adding this to the Mat, so I can check to see if coordinates have been set and if not check the matrix. &nbsp;This should be easy to do; I'll look at the ML code to clone the API.</div>
<div><br></div><div>One thing to keep in mind is that diagonal scaling breaks the null space (ie, the rigid body modes have to be scaled appropriately). &nbsp;Who owns the diagonal scaling? If it is Mat then we might want&nbsp;MatSetNearNullSpace to do this, otherwise we should think of a good way to deal with this. &nbsp;It is very error prone to not do the right thing here, we should at least throw an error.</div>
<div><br></div><div><br></div></div></blockquote></div>
</blockquote></div><br></div></div></body></html>