From 73ed13b43e2aefb96737ca4889a74b4680aeb08e Mon Sep 17 00:00:00 2001
From: Berenger Bramas <Berenger.Bramas@inria.fr>
Date: Tue, 18 May 2021 15:44:30 +0200
Subject: [PATCH] Add module to ensure processes compare within 0 ;
 nb_cell_levels[IDXC_Z]-1

---
 cpp/particles/p2p/p2p_distr_mpi.hpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/cpp/particles/p2p/p2p_distr_mpi.hpp b/cpp/particles/p2p/p2p_distr_mpi.hpp
index 4976593d..6189e981 100644
--- a/cpp/particles/p2p/p2p_distr_mpi.hpp
+++ b/cpp/particles/p2p/p2p_distr_mpi.hpp
@@ -443,15 +443,15 @@ public:
         {
             int dest_proc = (my_rank+1)%nb_processes_involved;
             while(dest_proc != my_rank
-                  && (my_top_z_cell_level == first_cell_level_proc(dest_proc)
-                      || (my_top_z_cell_level+1)%nb_cell_levels[IDXC_Z] == first_cell_level_proc(dest_proc))){
-                DEBUG_MSG("looking at dest_proc = %d\n", dest_proc);
+                  && (my_top_z_cell_level%nb_cell_levels[IDXC_Z] == first_cell_level_proc(dest_proc)%nb_cell_levels[IDXC_Z]
+                      || (my_top_z_cell_level+1)%nb_cell_levels[IDXC_Z] == first_cell_level_proc(dest_proc)%nb_cell_levels[IDXC_Z])){
                 // Find if we have to send 1 or 2 cell levels
                 int nb_levels_to_send = 1;
                 if(my_nb_cell_levels > 1 // I have more than one level
                         && (my_top_z_cell_level-1+2)%nb_cell_levels[IDXC_Z] <= last_cell_level_proc(dest_proc)){
                     nb_levels_to_send += 1;
                 }
+                DEBUG_MSG("looking at dest_proc = %d ; nb_levels_to_send = %d\n", dest_proc, nb_levels_to_send);
 
                 NeighborDescriptor descriptor;
                 descriptor.destProc = dest_proc;
@@ -467,15 +467,15 @@ public:
 
             int src_proc = (my_rank-1+nb_processes_involved)%nb_processes_involved;
             while(src_proc != my_rank
-                  && (last_cell_level_proc(src_proc) == my_down_z_cell_level
-                      || (last_cell_level_proc(src_proc)+1)%nb_cell_levels[IDXC_Z] == my_down_z_cell_level)){
-                DEBUG_MSG("looking at src_proc = %d\n", src_proc);
+                  && (last_cell_level_proc(src_proc)%nb_cell_levels[IDXC_Z] == my_down_z_cell_level%nb_cell_levels[IDXC_Z]
+                      || (last_cell_level_proc(src_proc)+1)%nb_cell_levels[IDXC_Z] == my_down_z_cell_level%nb_cell_levels[IDXC_Z])){
                 // Find if we have to send 1 or 2 cell levels
                 int nb_levels_to_recv = 1;
                 if(my_nb_cell_levels > 1 // I have more than one level
-                        && first_cell_level_proc(src_proc) <= (my_down_z_cell_level-1+2)%nb_cell_levels[IDXC_Z]){
+                        && first_cell_level_proc(src_proc)%nb_cell_levels[IDXC_Z] <= (my_down_z_cell_level-1+2)%nb_cell_levels[IDXC_Z]){
                     nb_levels_to_recv += 1;
                 }
+                DEBUG_MSG("looking at src_proc = %d ; nb_levels_to_recv = %d\n", src_proc, nb_levels_to_recv);
 
                 NeighborDescriptor descriptor;
                 descriptor.destProc = src_proc;
-- 
GitLab