<html aria-label="message body"><head><meta http-equiv="content-type" content="text/html; charset=us-ascii"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><p data-path-to-node="3" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Dear all,</p><p data-path-to-node="4" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">I am experiencing an issue where particles created with DMSwarm are being increased across MPI ranks when initializing a DMSwarm over a periodic DMPlex. I follow this procedure on every rank:</p><ol start="1" data-path-to-node="6" style="caret-color: rgb(0, 0, 0);"><li style="color: rgb(0, 0, 0);"><p data-path-to-node="6,0,0">Create a sequential vector with the global coordinates of all particles (18,000 atoms).</p></li><li><p data-path-to-node="6,1,0"><font color="#000000">Call DMLocatePoints(FE_Mesh, coordinates, DM_POINTLOCATION_NONE, &cellSF) to find which particles belong to the local DMPlex partition. Then call </font><span style="white-space: pre; background-color: rgb(255, 255, 255);"><font color="#000000">PetscSFGetGraph.</font></span></p></li><li style="color: rgb(0, 0, 0);"><p data-path-to-node="6,2,0">Iterate through the results and add any particle with a valid cell index (index != DMLOCATEPOINT_POINT_NOT_FOUND) to the local DMSwarm.</p></li></ol><p data-path-to-node="7" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">The sum of n_atoms_local across all ranks gives 18,740 instead of the expected 18,000. It seems that particles located exactly on periodic boundaries or MPI interfaces are being identified as "found" by multiple ranks simultaneously. Does DMLocatePoints return points found in ghost/halo cells by default when the DMPlex is periodic or distributed with overlap?</p><p data-path-to-node="7" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Thanks,</p><p data-path-to-node="15" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Miguel</p></body></html>