<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">The null space (6 for 3D elasticity) and the block size (3 for 3D) is all you need for ML (and GAMG).<div><br></div><div>Mark</div><div><br><div><div>On Apr 3, 2012, at 4:02 AM, Karin&amp;NiKo wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Dear all,<br><br>I am not sure if the definition of the near null space of the operator suffice in order to get an optimal preconditioner for linear elasticity. <br>Considering ML, one must also set the "num_PDEs" attribute, mustn't he? But it seems to me that this attribute cannot be set in the PETSc interface.<br>
Am I wrong?<br><br>Regards,<br>Nicolas<br><br><div class="gmail_quote">2012/4/3 Jed Brown <span dir="ltr">&lt;<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>Well, the KSP can diagonally scale it and we should fix up the near null space. The PC should not need to find out about diagonal scaling. (My opinion.)</p><div class="HOEnZb"><div class="h5">
<div class="gmail_quote">On Apr 2, 2012 4:50 PM, "Mark F. Adams" &lt;<a href="mailto:mark.adams@columbia.edu" target="_blank">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">

Oh, OK, so you do not explicitly scale the matrix good. &nbsp;We had a user (John) recently that was using diagonal scaling and was getting failure with GAMG and then GAMG worked and he was no longer using diagonal scaling so I was thinking this was the problem.<br>


<br>
Mark<br>
<br>
On Apr 2, 2012, at 7:40 PM, Barry Smith wrote:<br>
<br>
&gt;<br>
&gt; &nbsp;Mark,<br>
&gt;<br>
&gt; &nbsp; Who would be doing the "diagonal scaling". Under normal conditions we never want to be passing to any preconditioner a diagonally scaled matrix (for exactly the issue you point out) so why are you worried about that case?<br>


&gt;<br>
&gt; &nbsp; Barry<br>
&gt;<br>
&gt; On Apr 2, 2012, at 6:40 PM, Mark F. Adams wrote:<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Apr 2, 2012, at 7:24 PM, Jed Brown wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; On Mon, Apr 2, 2012 at 07:44, Jed Brown &lt;<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>&gt; wrote:<br>
&gt;&gt;&gt; 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.)<br>


&gt;&gt;&gt;<br>
&gt;&gt;&gt; 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.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Mark, what is the best way to make PCGAMG use this interface?<br>
&gt;&gt;<br>
&gt;&gt; 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.<br>
&gt;&gt;<br>
&gt;&gt; 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 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.<br>


&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
<br>
</blockquote></div>
</div></div></blockquote></div><br>
</blockquote></div><br></div></body></html>