<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">No particular reason. Let's say it was the first approach I tried in an old code.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">OK, so to get it working I should use the interlaced version for the ordering of my dofs.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">It does not require too much coding on my side.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Just to know, if I wanted to insist in the non-interlaced, to keep using Hypre/BoomerAMG from PETSc I would need to write some code in PETSc for wrapping this feature (AMGSetDofFunc), right?</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Thanks.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 14, 2017 at 11:48 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
  Ahh, thanks for the explanation. What a nutso API: way to general, they should just support interlaced and non-interlaced.<br>
<br>
  Anyways we strongly recommend using the interlaced version; for most calculations it gives much better locality for cache lines and cache. We always use interlaced. Any particular reason you use non-interlaced?<br>
<br>
  Barry<br>
<span class=""><br>
> On Feb 14, 2017, at 7:17 PM, Bernardo Rocha <<a href="mailto:bernardomartinsrocha@gmail.com">bernardomartinsrocha@gmail.<wbr>com</a>> wrote:<br>
><br>
> Thanks a lot for the reply.<br>
><br>
> ​From my understanding and specifically for my problem I would have to use the AMGSetDofFunc as follows:​<br>
><br>
> ​nsyseq = 3;​<br>
> for (i=0; i<nsyseq; i++)<br>
> ​    ​for (k=0; k<​N​; k++)​ // N: number of nodes​<br>
>     {<br>
</span>>     ​    ​eqnIndex[i*​N​+k] = i;<br>
<div class="HOEnZb"><div class="h5">>     }<br>
> HYPRE_BoomerAMGSetDofFunc(<wbr>preconditioner, eqnIndex);​<br>
><br>
> For a system of 3 PDEs (e.g. linear elasticity in 3D​) the default behaviour of the nodal coarsening in BoomerAMG, considers an array that is filled with<br>
><br>
> eqnIndex = ​0 1 2 0 1 2 0 1 2....0 1 2<br>
><br>
>  > HYPRE_BoomerAMGSetDofFunc<br>
><br>
>    I could not find an indication of that this is suppose to be setting; it is mentioned in the users manual but I don't know what it means. It looks like it takes an integer array but I don't even know how long that array is.<br>
><br>
>    If you figure out what it means and can add support for it we'll take it as a pull request.<br>
><br>
> ​​OK Barry, I will try to specify the block size of the matrix.<br>
> But I'm not sure if the block size would be 3 or N (number of nodes).<br>
> This is my ordering of the displacements: [ux1, ux2, ..., uxN, uy1, uy2,...uyN, uz1, uz2, ..., uzN]<br>
><br>
> > HYPRE_BoomerAMGSetNumFunctions<br>
><br>
>    Set the block size of the matrix; this information is then transferred automatically to hypre.  Note that you can set a block size even for AIJ matrices.<br>
> ​<br>
> ​Best regards,<br>
> Bernardo​<br>
<br>
</div></div></blockquote></div><br></div>