On Wed, 19 Jun 2019 at 08:37, Matthew Knepley via petsc-users < [email protected]> wrote:
> On Mon, Jun 17, 2019 at 9:49 PM Swarnava Ghosh <[email protected]> > wrote: > >> Hi Matthew, >> >> I am primarily trying to interpolate fields which are defined on >> vertices. For a process, the point at which the interpolation to be carried >> out can be in an element that is owned by another process. My initial plan >> while writing the earlier email was to create local dmplexes in each rank >> which contains all the elements that are required for interpolation. >> However on second thoughts, this is too cumbersome. >> > > Thanks. This is much clearer to me now. > > >> What might be potentially better approach (ofcourse you will be an expert >> to judge) is to simply extend the ghost region to include the elements of >> the neighbor processes. In this way the points to interpolate at lie in the >> ghost region of the process. Is there a way I could extend the ghost region >> if I know the neighbor ranks? >> > > I see at least two cases: > > 1) Only a few points, anywhere in the domain > > If you have a few points that can be anywhere in the domain, I would > use > > > https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/DMInterpolationCreate.html#DMInterpolationCreate > Does this work in parallel? If I look at the implementation here: https://www.mcs.anl.gov/petsc/petsc-current/src/dm/impls/plex/plexgeometry.c.html#DMLocatePoints_Plex It seems it complains unless run on comm_self. Cheers, Lawrence >
