petsc-3.12.5 2020-03-29
Report Typos and Errors

DMLocatePoints

Locate the points in v in the mesh and return a PetscSF of the containing cells

Synopsis

#include "petscdm.h"          
#include "petscdmlabel.h"     
#include "petscds.h"     
PetscErrorCode DMLocatePoints(DM dm, Vec v, DMPointLocationType ltype, PetscSF *cellSF)
Collective on v (see explanation below)

Input Parameters

dm - The DM
v - The Vec of points
ltype - The type of point location, e.g. DM_POINTLOCATION_NONE or DM_POINTLOCATION_NEAREST
cells - Points to either NULL, or a PetscSF with guesses for which cells contain each point.

Output Parameter

v - The Vec of points, which now contains the nearest mesh points to the given points if DM_POINTLOCATION_NEAREST is used
cells - The PetscSF containing the ranks and local indices of the containing points.

Notes

To do a search of the local cells of the mesh, v should have PETSC_COMM_SELF as its communicator. To do a search of all the cells in the distributed mesh, v should have the same communicator as dm.

If *cellSF is NULL on input, a PetscSF will be created. If *cellSF is not NULL on input, it should point to an existing PetscSF, whose graph will be used as initial guesses.

An array that maps each point to its containing cell can be obtained with

   const PetscSFNode *cells;
   PetscInt           nFound;
   const PetscInt    *found;

   PetscSFGetGraph(cellSF,NULL,&nFound,&found,&cells);

Where cells[i].rank is the rank of the cell containing point found[i] (or i if found == NULL), and cells[i].index is the index of the cell in its rank's local numbering.

See Also

DMSetCoordinates(), DMSetCoordinatesLocal(), DMGetCoordinates(), DMGetCoordinatesLocal(), DMPointLocationType

Level

developer

Location

src/dm/interface/dm.c

Implementations

DMLocatePoints_DA_Regular in src/dm/impls/da/dageometry.c
DMLocatePoints_Plex in src/dm/impls/plex/plexgeometry.c

Index of all DM routines
Table of Contents for all manual pages
Index of all manual pages