<div dir="ltr"><div dir="ltr">On Mon, Dec 4, 2023 at 12:01 PM Jordi Manyer Fuertes via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear PETSc users/developpers,<br>
<br>
I am currently trying to use the method `MatNullSpaceCreateRigidBody` <br>
together with `PCGAMG` to efficiently precondition an elasticity solver <br>
in 2D/3D.<br>
<br>
I have managed to make it work in serial (or with 1 MPI rank) with <br>
h-independent number of iterations (which is great), but the solver <br>
diverges in parallel.<br>
<br>
I assume it has to do with the coordinate vector I am building the <br>
null-space with not being correctly setup. The documentation is not that <br>
clear on which nodes exactly have to be set in each partition. Does it <br>
require nodes corresponding to owned dofs, or all dofs in each partition <br>
(owned+ghost)? What ghost layout should the `Vec` have?<br>
<br>
Any other tips about what I might be doing wrong?<br></blockquote><div><br></div><div>What we assume is that you have some elastic problem formulated in primal unknowns (displacements) so that the solution vector looks like this:</div><div><br></div><div> [ d^0_x d^0_y d^0_z d^1_x ..... ]</div><div><br></div><div>or whatever spatial dimension you have. We expect to get a global vector that looks like that, but instead</div><div>of displacements, we get the coordinates that each displacement corresponds to. We make the generators of translations:</div><div><br></div><div> [ 1 0 0 1 0 0 1 0 0 1 0 0... ]</div><div><div> [ 0 1 0 0 1 0 0 1 0 0 1 0... ]</div><div><div> [ 0 0 1 0 0 1 0 0 1 0 0 1... ]</div><div><br></div><div>for which we do not need the coordinates, and then the generators of rotations about each axis, for which</div><div>we _do_ need the coordinates, since we need to know how much each point moves if you rotate about some center.</div><div><br></div><div> Does that make sense?</div><div><br></div><div> Thanks,</div><div><br></div><div> Matt</div><div><br></div></div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Thanks,<br>
<br>
Jordi<br>
<br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>