<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&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"><<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>></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" <<a href="mailto:mark.adams@columbia.edu" target="_blank">mark.adams@columbia.edu</a>> 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. 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>
><br>
> Mark,<br>
><br>
> 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>
><br>
> Barry<br>
><br>
> On Apr 2, 2012, at 6:40 PM, Mark F. Adams wrote:<br>
><br>
>><br>
>> On Apr 2, 2012, at 7:24 PM, Jed Brown wrote:<br>
>><br>
>>> On Mon, Apr 2, 2012 at 07:44, Jed Brown <<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>> wrote:<br>
>>> 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>
>>><br>
>>> 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>
>>><br>
>>><br>
>>> Mark, what is the best way to make PCGAMG use this interface?<br>
>><br>
>> 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. This should be easy to do; I'll look at the ML code to clone the API.<br>
>><br>
>> One thing to keep in mind is that diagonal scaling breaks the null space (ie, the rigid body modes have to be scaled appropriately). 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. It is very error prone to not do the right thing here, we should at least throw an error.<br>
>><br>
>><br>
><br>
><br>
<br>
</blockquote></div>
</div></div></blockquote></div><br>
</blockquote></div><br></div></body></html>