From dc1be8ad94735aaad3da9db098beb343c8897a3c Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <schaller@strw.leidenuniv.nl>
Date: Sun, 24 May 2020 17:11:07 +0200
Subject: [PATCH] Do not use the accumulate_add functions

---
 src/gravity/MultiSoftening/gravity.h |  3 +-
 src/gravity/Potential/gravity.h      |  3 +-
 src/gravity_cache.h                  |  6 +--
 src/mesh_gravity.c                   |  7 ++-
 src/multipole.h                      | 12 ++---
 src/runner_doiact_grav.c             | 66 +++++++++++++++-------------
 6 files changed, 50 insertions(+), 47 deletions(-)

diff --git a/src/gravity/MultiSoftening/gravity.h b/src/gravity/MultiSoftening/gravity.h
index 4453f2b644..e436cc3c14 100644
--- a/src/gravity/MultiSoftening/gravity.h
+++ b/src/gravity/MultiSoftening/gravity.h
@@ -23,7 +23,6 @@
 #include <float.h>
 
 /* Local includes. */
-#include "accumulate.h"
 #include "cosmology.h"
 #include "error.h"
 #include "gravity_properties.h"
@@ -62,7 +61,7 @@ __attribute__((always_inline)) INLINE static float gravity_get_softening(
 __attribute__((always_inline)) INLINE static void
 gravity_add_comoving_potential(struct gpart* restrict gp, float pot) {
 
-  accumulate_add_f(&gp->potential, pot);
+  gp->potential += pot;
 }
 
 /**
diff --git a/src/gravity/Potential/gravity.h b/src/gravity/Potential/gravity.h
index f6d0e81ba0..4ce1e73ef3 100644
--- a/src/gravity/Potential/gravity.h
+++ b/src/gravity/Potential/gravity.h
@@ -23,7 +23,6 @@
 #include <float.h>
 
 /* Local includes. */
-#include "accumulate.h"
 #include "cosmology.h"
 #include "gravity_properties.h"
 #include "kernel_gravity.h"
@@ -64,7 +63,7 @@ __attribute__((always_inline)) INLINE static float gravity_get_softening(
 __attribute__((always_inline)) INLINE static void
 gravity_add_comoving_potential(struct gpart* restrict gp, float pot) {
 
-  accumulate_add_f(&gp->potential, pot);
+  gp->potential += pot;
 }
 
 /**
diff --git a/src/gravity_cache.h b/src/gravity_cache.h
index 51335e3d2a..75fb640457 100644
--- a/src/gravity_cache.h
+++ b/src/gravity_cache.h
@@ -490,9 +490,9 @@ INLINE static void gravity_cache_write_back(const struct gravity_cache *c,
 #endif
   for (int i = 0; i < gcount; ++i) {
     if (active[i]) {
-      accumulate_add_f(&gparts[i].a_grav[0], a_x[i]);
-      accumulate_add_f(&gparts[i].a_grav[1], a_y[i]);
-      accumulate_add_f(&gparts[i].a_grav[2], a_z[i]);
+      gparts[i].a_grav[0] += a_x[i];
+      gparts[i].a_grav[1] += a_y[i];
+      gparts[i].a_grav[2] += a_z[i];
       gravity_add_comoving_potential(&gparts[i], pot[i]);
     }
   }
diff --git a/src/mesh_gravity.c b/src/mesh_gravity.c
index bd5eb6a385..fd81a658ad 100644
--- a/src/mesh_gravity.c
+++ b/src/mesh_gravity.c
@@ -28,7 +28,6 @@
 #include "mesh_gravity.h"
 
 /* Local includes. */
-#include "accumulate.h"
 #include "active.h"
 #include "debug.h"
 #include "engine.h"
@@ -336,9 +335,9 @@ void mesh_to_gparts_CIC(struct gpart* gp, const double* pot, const int N,
   /* ---- */
 
   /* Store things back */
-  accumulate_add_f(&gp->a_grav[0], fac * a[0]);
-  accumulate_add_f(&gp->a_grav[1], fac * a[1]);
-  accumulate_add_f(&gp->a_grav[2], fac * a[2]);
+  gp->a_grav[0] += fac * a[0];
+  gp->a_grav[1] += fac * a[1];
+  gp->a_grav[2] += fac * a[2];
   gravity_add_comoving_potential(gp, p);
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
   gp->potential_PM = p;
diff --git a/src/multipole.h b/src/multipole.h
index 5884c62009..8169bff229 100644
--- a/src/multipole.h
+++ b/src/multipole.h
@@ -2993,15 +2993,15 @@ __attribute__((nonnull)) INLINE static void gravity_L2P(
 #endif
 
   /* Update the particle */
-  accumulate_add_f(&gp->a_grav[0], a_grav[0]);
-  accumulate_add_f(&gp->a_grav[1], a_grav[1]);
-  accumulate_add_f(&gp->a_grav[2], a_grav[2]);
+  gp->a_grav[0] += a_grav[0];
+  gp->a_grav[1] += a_grav[1];
+  gp->a_grav[2] += a_grav[2];
   gravity_add_comoving_potential(gp, pot);
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-  accumulate_add_f(&gp->a_grav_m2l[0], a_grav[0]);
-  accumulate_add_f(&gp->a_grav_m2l[1], a_grav[1]);
-  accumulate_add_f(&gp->a_grav_m2l[2], a_grav[2]);
+  gp->a_grav_m2l[0] += a_grav[0];
+  gp->a_grav_m2l[1] += a_grav[1];
+  gp->a_grav_m2l[2] += a_grav[2];
 #endif
 }
 
diff --git a/src/runner_doiact_grav.c b/src/runner_doiact_grav.c
index a1cb41a6ee..f87a685f13 100644
--- a/src/runner_doiact_grav.c
+++ b/src/runner_doiact_grav.c
@@ -155,6 +155,10 @@ static INLINE void runner_dopair_grav_pp_full_no_cache(
   const int gcount_padded_i = gcount_i - (gcount_i % VEC_SIZE) + VEC_SIZE;
   gravity_cache_zero_output(cache_i, gcount_padded_i);
 
+#ifdef SWIFT_DEBUG_CHECKS
+  if (ci->split) error("Using function above leaf level!");
+#endif
+
   /* Loop over sink particles */
   for (int i = 0; i < gcount_i; ++i) {
 
@@ -219,9 +223,9 @@ static INLINE void runner_dopair_grav_pp_full_no_cache(
       /* Update the M2P interaction counter and forces. */
       accumulate_add_ll(&gparts_i[i].num_interacted_m2p,
                         multi_j->m_pole.num_gpart);
-      accumulate_add_f(&gparts_i[i].a_grav_m2p[0], f_x);
-      accumulate_add_f(&gparts_i[i].a_grav_m2p[1], f_y);
-      accumulate_add_f(&gparts_i[i].a_grav_m2p[2], f_z);
+      gparts_i[i].a_grav_m2p[0] += f_x;
+      gparts_i[i].a_grav_m2p[1] += f_y;
+      gparts_i[i].a_grav_m2p[2] += f_z;
 #endif
 
     } else {
@@ -283,9 +287,9 @@ static INLINE void runner_dopair_grav_pp_full_no_cache(
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
         /* Update the p2p interaction counter */
         accumulate_inc_ll(&gparts_i[i].num_interacted_p2p);
-        accumulate_add_f(&gparts_i[i].a_grav_p2p[0], a_x);
-        accumulate_add_f(&gparts_i[i].a_grav_p2p[1], a_y);
-        accumulate_add_f(&gparts_i[i].a_grav_p2p[2], a_z);
+        gparts_i[i].a_grav_p2p[0] += a_x;
+        gparts_i[i].a_grav_p2p[1] += a_y;
+        gparts_i[i].a_grav_p2p[2] += a_z;
 #endif
       }
     }
@@ -312,6 +316,8 @@ static INLINE void runner_dopair_grav_pp_truncated_no_cache(
 #ifdef SWIFT_DEBUG_CHECKS
   if (!e->s->periodic)
     error("Calling truncated PP function in non-periodic setup.");
+
+  if (ci->split) error("Using function above leaf level!");
 #endif
 
   const float r_s_inv = grav_props->r_s_inv;
@@ -389,9 +395,9 @@ static INLINE void runner_dopair_grav_pp_truncated_no_cache(
       /* Update the M2P interaction counter and forces. */
       accumulate_add_ll(&gparts_i[i].num_interacted_m2p,
                         multi_j->m_pole.num_gpart);
-      accumulate_add_f(&gparts_i[i].a_grav_m2p[0], f_x);
-      accumulate_add_f(&gparts_i[i].a_grav_m2p[1], f_y);
-      accumulate_add_f(&gparts_i[i].a_grav_m2p[2], f_z);
+      gparts_i[i].a_grav_m2p[0] += f_x;
+      gparts_i[i].a_grav_m2p[1] += f_y;
+      gparts_i[i].a_grav_m2p[2] += f_z;
 #endif
 
     } else {
@@ -458,9 +464,9 @@ static INLINE void runner_dopair_grav_pp_truncated_no_cache(
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
         /* Update the p2p interaction counter */
         accumulate_inc_ll(&gparts_i[i].num_interacted_p2p);
-        accumulate_add_f(&gparts_i[i].a_grav_p2p[0], a_x);
-        accumulate_add_f(&gparts_i[i].a_grav_p2p[1], a_y);
-        accumulate_add_f(&gparts_i[i].a_grav_p2p[2], a_z);
+        gparts_i[i].a_grav_p2p[0] += a_x;
+        gparts_i[i].a_grav_p2p[1] += a_y;
+        gparts_i[i].a_grav_p2p[2] += a_z;
 #endif
       }
     }
@@ -621,9 +627,9 @@ static INLINE void runner_dopair_grav_pp_full(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    accumulate_add_f(&gparts_i[pid].a_grav_p2p[0], a_x);
-    accumulate_add_f(&gparts_i[pid].a_grav_p2p[1], a_y);
-    accumulate_add_f(&gparts_i[pid].a_grav_p2p[2], a_z);
+    gparts_i[pid].a_grav_p2p[0] += a_x;
+    gparts_i[pid].a_grav_p2p[1] += a_y;
+    gparts_i[pid].a_grav_p2p[2] += a_z;
 #endif
   }
 }
@@ -777,9 +783,9 @@ static INLINE void runner_dopair_grav_pp_truncated(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    accumulate_add_f(&gparts_i[pid].a_grav_p2p[0], a_x);
-    accumulate_add_f(&gparts_i[pid].a_grav_p2p[1], a_y);
-    accumulate_add_f(&gparts_i[pid].a_grav_p2p[2], a_z);
+    gparts_i[pid].a_grav_p2p[0] += a_x;
+    gparts_i[pid].a_grav_p2p[1] += a_y;
+    gparts_i[pid].a_grav_p2p[2] += a_z;
 #endif
   }
 }
@@ -910,9 +916,9 @@ static INLINE void runner_dopair_grav_pm_full(
     if (pid < gcount_i) {
       accumulate_add_ll(&gparts_i[pid].num_interacted_m2p,
                         cj->grav.multipole->m_pole.num_gpart);
-      accumulate_add_f(&gparts_i[pid].a_grav_m2p[0], f_x);
-      accumulate_add_f(&gparts_i[pid].a_grav_m2p[1], f_y);
-      accumulate_add_f(&gparts_i[pid].a_grav_m2p[2], f_z);
+      gparts_i[pid].a_grav_m2p[0] += f_x;
+      gparts_i[pid].a_grav_m2p[1] += f_y;
+      gparts_i[pid].a_grav_m2p[2] += f_z;
     }
 #endif
   }
@@ -1049,9 +1055,9 @@ static INLINE void runner_dopair_grav_pm_truncated(
     if (pid < gcount_i) {
       accumulate_add_ll(&gparts_i[pid].num_interacted_m2p,
                         cj->grav.multipole->m_pole.num_gpart);
-      accumulate_add_f(&gparts_i[pid].a_grav_m2p[0], f_x);
-      accumulate_add_f(&gparts_i[pid].a_grav_m2p[1], f_y);
-      accumulate_add_f(&gparts_i[pid].a_grav_m2p[2], f_z);
+      gparts_i[pid].a_grav_m2p[0] += f_x;
+      gparts_i[pid].a_grav_m2p[1] += f_y;
+      gparts_i[pid].a_grav_m2p[2] += f_z;
     }
 #endif
   }
@@ -1459,9 +1465,9 @@ static INLINE void runner_doself_grav_pp_full(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    accumulate_add_f(&gparts[pid].a_grav_p2p[0], a_x);
-    accumulate_add_f(&gparts[pid].a_grav_p2p[1], a_y);
-    accumulate_add_f(&gparts[pid].a_grav_p2p[2], a_z);
+    gparts[pid].a_grav_p2p[0] += a_x;
+    gparts[pid].a_grav_p2p[1] += a_y;
+    gparts[pid].a_grav_p2p[2] += a_z;
 #endif
   }
 }
@@ -1598,9 +1604,9 @@ static INLINE void runner_doself_grav_pp_truncated(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    accumulate_add_f(&gparts[pid].a_grav_p2p[0], a_x);
-    accumulate_add_f(&gparts[pid].a_grav_p2p[1], a_y);
-    accumulate_add_f(&gparts[pid].a_grav_p2p[2], a_z);
+    gparts[pid].a_grav_p2p[0] += a_x;
+    gparts[pid].a_grav_p2p[1] += a_y;
+    gparts[pid].a_grav_p2p[2] += a_z;
 #endif
   }
 }
-- 
GitLab