From 6e8c770149d803076b76b45a0f7c37c8ac3e8c6d Mon Sep 17 00:00:00 2001
From: Yolan Uyttenhove <yolan.uyttenhove@ugent.be>
Date: Tue, 28 Nov 2023 11:08:47 +0100
Subject: [PATCH] Fix bug: move total metal mass flux out of for loop

---
 src/chemistry/EAGLE/chemistry_additions.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/chemistry/EAGLE/chemistry_additions.h b/src/chemistry/EAGLE/chemistry_additions.h
index ccc2c46777..20fc423d11 100644
--- a/src/chemistry/EAGLE/chemistry_additions.h
+++ b/src/chemistry/EAGLE/chemistry_additions.h
@@ -46,17 +46,17 @@ __attribute__((always_inline)) INLINE static void runner_iact_chemistry_fluxes(
    * is gaining it. */
   if (mass_flux > 0.f) {
     /* pi is loosing mass */
+    pi->chemistry_data.metal_mass_flux_total -=
+        mass_flux_integrated * pi->chemistry_data.metal_mass_fraction_total;
     for (int i = 0; i < chemistry_element_count; i++) {
-      pi->chemistry_data.metal_mass_flux_total -=
-          mass_flux_integrated * pi->chemistry_data.metal_mass_fraction_total;
       pi->chemistry_data.metal_mass_fluxes[i] -=
           mass_flux_integrated * pi->chemistry_data.metal_mass_fraction[i];
     }
   } else {
     /* pi is gaining mass: */
+    pi->chemistry_data.metal_mass_flux_total -=
+        mass_flux_integrated * pj->chemistry_data.metal_mass_fraction_total;
     for (int i = 0; i < chemistry_element_count; i++) {
-      pi->chemistry_data.metal_mass_flux_total -=
-          mass_flux_integrated * pj->chemistry_data.metal_mass_fraction_total;
       pi->chemistry_data.metal_mass_fluxes[i] -=
           mass_flux_integrated * pj->chemistry_data.metal_mass_fraction[i];
     }
@@ -66,17 +66,17 @@ __attribute__((always_inline)) INLINE static void runner_iact_chemistry_fluxes(
   if (mode == 1 || pj->flux.dt < 0.f) {
     if (mass_flux > 0.f) {
       /* pj is gaining mass */
+      pj->chemistry_data.metal_mass_flux_total +=
+          mass_flux_integrated * pi->chemistry_data.metal_mass_fraction_total;
       for (int i = 0; i < chemistry_element_count; i++) {
-        pj->chemistry_data.metal_mass_flux_total +=
-            mass_flux_integrated * pi->chemistry_data.metal_mass_fraction_total;
         pj->chemistry_data.metal_mass_fluxes[i] +=
             mass_flux_integrated * pi->chemistry_data.metal_mass_fraction[i];
       }
     } else {
       /* pj is losing mass */
+      pj->chemistry_data.metal_mass_flux_total +=
+          mass_flux_integrated * pj->chemistry_data.metal_mass_fraction_total;
       for (int i = 0; i < chemistry_element_count; i++) {
-        pj->chemistry_data.metal_mass_flux_total +=
-            mass_flux_integrated * pj->chemistry_data.metal_mass_fraction_total;
         pj->chemistry_data.metal_mass_fluxes[i] +=
             mass_flux_integrated * pj->chemistry_data.metal_mass_fraction[i];
       }
-- 
GitLab