From 7cbba848fe3c4cfa84b72d9b0a3b0a1e66a4681e Mon Sep 17 00:00:00 2001
From: Rafael Ravedutti <rafaelravedutti@gmail.com>
Date: Tue, 27 Sep 2022 18:21:24 +0200
Subject: [PATCH] Fix comm offsets and adjust name for DetermineGhostParticle
 modules

Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
---
 src/pairs/sim/comm.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/pairs/sim/comm.py b/src/pairs/sim/comm.py
index 1ef393d..4b29317 100644
--- a/src/pairs/sim/comm.py
+++ b/src/pairs/sim/comm.py
@@ -113,9 +113,14 @@ class DetermineGhostParticles(Lowerable):
         nrecv = self.comm.nrecv
         send_map = self.comm.send_map
         send_mult = self.comm.send_mult
-        self.sim.module_name(f"determine_ghost_particles{self.step}")
+        ghost_or_exchg = "exchange" if self.spacing == 0.0 else "ghost" # TODO: module_params(self.spacing)
+        self.sim.module_name(f"determine_{ghost_or_exchg}_particles{self.step}")
         self.sim.check_resize(self.comm.send_capacity, nsend)
 
+        for j in self.comm.dom_part.step_indexes(self.step):
+            nsend[j].set(0)
+            nrecv[j].set(0)
+
         for i, j, _, pbc in self.comm.dom_part.ghost_particles(self.step, self.sim.position(), self.spacing):
             next_idx = AtomicAdd(self.sim, nsend_all, 1)
             send_map[next_idx].set(i)
@@ -123,7 +128,6 @@ class DetermineGhostParticles(Lowerable):
                 send_mult[next_idx][d].set(pbc[d])
 
             nsend[j].add(1)
-            nrecv[j].set(0) # FIXME: when this line is removed, binops with nrecv are lifted to main
 
 
 class SetCommunicationOffsets(Lowerable):
@@ -143,6 +147,11 @@ class SetCommunicationOffsets(Lowerable):
 
         isend = 0
         irecv = 0
+        for i in range(self.step):
+            for j in self.comm.dom_part.step_indexes(i):
+                isend += nsend[j]
+                irecv += nrecv[j]
+
         for j in self.comm.dom_part.step_indexes(self.step):
             send_offsets[j].set(isend)
             recv_offsets[j].set(irecv)
-- 
GitLab