<div dir="ltr"><div dir="ltr">On Thu, Feb 16, 2023 at 1:09 PM Lawrence Mitchell <<a href="mailto:wence@gmx.li">wence@gmx.li</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">On Thu, 16 Feb 2023 at 16:43, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:<br>
><br>
> On Thu, Feb 16, 2023 at 10:54 AM Lawrence Mitchell <<a href="mailto:wence@gmx.li" target="_blank">wence@gmx.li</a>> wrote:<br>
>><br>
>> Hi Blaise,<br>
>><br>
>> On Thu, 16 Feb 2023 at 15:17, Blaise Bourdin <<a href="mailto:bourdin@mcmaster.ca" target="_blank">bourdin@mcmaster.ca</a>> wrote:<br>
>> ><br>
>> > Hi,<br>
>> ><br>
>> > I am trying to implement a non-local finite elements reconstruction operator in parallel.<br>
>> ><br>
>> > Given a dmplex distributed with an overlap, is there a way to figure out which cells are in the overlap and which are not?<br>
>><br>
>> Yes. Get the pointSF of the DM, and the cell chart<br>
>><br>
>> DMPlexGetPointSF(dm, &sf);<br>
>> DMPlexGetHeightStratum(dm, 0, &cstart, &cend);<br>
>><br>
>> Now get the graph (specifically ilocal of the sf):<br>
>><br>
>> PetscSFGetGraph(sf, NULL, &nleaves, &ilocal,  NULL);<br>
>><br>
>> Now any value of ilocal that lies in [cstart, cend) is a cell which is<br>
>> not owned by this process (i.e. in the overlap). Note that ilocal can<br>
>> be NULL which just means it is the identity map [0, ..., nleaves), so<br>
>> you just intersect [cstart, cend) with [0, nleaves) in that case to<br>
>> find the overlap cells.<br>
>><br>
>> But that is very unlikely to be true, so:<br>
><br>
><br>
> Note that you can use<br>
><br>
>   PetscFindInt(nleaves, ilocal, cell, &loc);<br>
<br>
Modulo argument order, is it not PetscFindInt(cell, nleaves, ilocal, &loc)?<br></blockquote><div><br></div><div>You are right.</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">
I guess one should probably document that PetscSFSetGraph ensures that<br>
ilocal is sorted.<br></blockquote><div><br></div><div>Yes, I thought it was already there, but does not seem so.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</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">
Lawrence</blockquote></div>-- <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>