[petsc-users] Ghost points in DMSwarm

MIGUEL MOLINOS PEREZ mmolinos at us.es
Sun Feb 25 06:21:13 CST 2024


Dear Matthew,

Thank you for answer me out of office hours and for the suggestion. If I interpret it correctly, your point is using the background mesh halo to identify and create ghosts particles in the overlapping region using DMSwarmMigrate().

Then two questions hits me:

  *   If I change a variable in the “real” particle (say the position), it should be updated in the replicas on the overlapped regions, right? This sort of communicator is included in DMSwarmMigrate()?
  *   The function DMSwarmCreateLocalVectorFromField() does not include extra space for ghost particles. Therefore, I should resize the local size for each rank to accommodate the replicas manually. Right?

Anyway, I think this this will take me more time I expected originally. Meanwhile,  I will go ahead with my “humble” parallelization scheme which consist in using AllReduce to create a serial vectors with the variables I need to evaluate rank-wise the residual equations of my problem  (please, don’t judge me, publish or perish...)

Many thanks,
Miguel


On Feb 24, 2024, at 4:24 PM, Matthew Knepley <knepley at gmail.com> wrote:

On Fri, Feb 23, 2024 at 5:14 PM MIGUEL MOLINOS PEREZ <mmolinos at us.es<mailto:mmolinos at us.es>> wrote:
Dear all, I am struggling on how to include ghost points in DMSwarm local vectors. According to PETSc documentation it seems “straightforward” for a DMDA mesh. However, I am not so sure on how to do it for a DMSwarm. In fact, if I add the result
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.

ZjQcmQRYFpfptBannerEnd
Dear all,

I am struggling on how to include ghost points in DMSwarm local vectors. According to PETSc documentation it seems “straightforward” for a DMDA mesh. However, I am not so sure on how to do it for a DMSwarm. In fact, if I add the result of DMSwarmGetLocalSize for each rank, the result is the exact number of particles in the system. Which means that the halo is zero.

Since there is a function called DMSwarmCreateLocalVectorFromField,I was wandering if there is a function already implemented in petsc (and I’m missing it) to include ghost points in DMSwarm and therefore don’t have to reinvent the wheel. If so, is there any example out there I can follow?

DMSwarm is currently different from the other DMs. There is no idea of identity for particles, so there is no idea of a shared particle. You can create this by adding an ID to your particle fields, but it would be a manual process. DMSwarmMigrate() can duplicate particles if you have an overlapping mesh, which would mimic shared particles.

  THanks,

     Matt

Thanks in advance.

Regards,
Miguel

<https://urldefense.us/v3/__https://petsc.org/release/manual/vec/__;!!G_uCfscf7eWS!f6U_z6q8Rk6XrOxvbmE8KyNErlmqYwpGzkxCQ56xX0agWaCG0tLVLh1Cml6fTtqvve0aL3HGiAhZn-hDgIoH5w$>
petsc.org<https://urldefense.us/v3/__https://petsc.org/release/manual/vec/__;!!G_uCfscf7eWS!f6U_z6q8Rk6XrOxvbmE8KyNErlmqYwpGzkxCQ56xX0agWaCG0tLVLh1Cml6fTtqvve0aL3HGiAhZn-hDgIoH5w$>
[X]<https://urldefense.us/v3/__https://petsc.org/release/manual/vec/__;!!G_uCfscf7eWS!f6U_z6q8Rk6XrOxvbmE8KyNErlmqYwpGzkxCQ56xX0agWaCG0tLVLh1Cml6fTtqvve0aL3HGiAhZn-hDgIoH5w$>




--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cQcTxz-cUaVBpc8qjPR-ggaw3NXqq0-rf5v5xtsKzEmm4uvOkRcw4LffQ4DSJX8Py_hU0auibW7oRimePeKAZA$ <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cQcTxz-cUaVBpc8qjPR-ggaw3NXqq0-rf5v5xtsKzEmm4uvOkRcw4LffQ4DSJX8Py_hU0auibW7oRimQOwEsTg$ >

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20240225/bca1e879/attachment-0001.html>


More information about the petsc-users mailing list