From 5d4530a734770ba6c64b528b4801fac35895536b Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <matthieu.schaller@durham.ac.uk>
Date: Mon, 23 Jul 2018 12:53:12 +0100
Subject: [PATCH] Link the MM task when creating them

---
 src/engine.c    | 13 ++++++-------
 src/scheduler.c | 12 +++++++++---
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/engine.c b/src/engine.c
index 30dba7d0bf..ea2e9cbd86 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2673,11 +2673,11 @@ void engine_count_and_link_tasks_mapper(void *map_data, int num_elements,
 #endif
 
       /* Link M-M tasks to cells */
-    } else if (t_type == task_type_grav_mm) {
-      atomic_inc(&ci->nr_tasks);
-      atomic_inc(&cj->nr_tasks);
-      engine_addlink(e, &ci->grav, t);
-      engine_addlink(e, &cj->grav, t);
+    /* } else if (t_type == task_type_grav_mm) { */
+    /*   atomic_inc(&ci->nr_tasks); */
+    /*   atomic_inc(&cj->nr_tasks); */
+    /*   engine_addlink(e, &ci->grav, t); */
+    /*   engine_addlink(e, &cj->grav, t); */
     }
   }
 }
@@ -3040,8 +3040,7 @@ void engine_make_extra_hydroloop_tasks_mapper(void *map_data, int num_elements,
       if (t->ci->nodeID == nodeID) {
         engine_make_hydro_loops_dependencies(sched, t, t2, t->ci, with_cooling);
         scheduler_addunlock(sched, t2, t->ci->super->end_force);
-      } else
-        error("oo");
+      }
 #endif
     }
 
diff --git a/src/scheduler.c b/src/scheduler.c
index be3790beed..bddb9966d7 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -53,6 +53,8 @@
 #include "timers.h"
 #include "version.h"
 
+void engine_addlink(struct engine *e, struct link **l, struct task *t);
+
 /**
  * @brief Re-set the list of active tasks.
  */
@@ -806,7 +808,7 @@ static void scheduler_splittask_gravity(struct task *t, struct scheduler *s) {
 /* Temporarily prevent MPI here */
 #ifndef WITH_MPI
   const struct space *sp = s->space;
-  const struct engine *e = sp->e;
+  struct engine *e = sp->e;
 #endif
 
   /* Iterate on this task until we're done with it. */
@@ -885,8 +887,8 @@ static void scheduler_splittask_gravity(struct task *t, struct scheduler *s) {
     else if (t->type == task_type_pair) {
 
       /* Get a handle on the cells involved. */
-      const struct cell *ci = t->ci;
-      const struct cell *cj = t->cj;
+      struct cell *ci = t->ci;
+      struct cell *cj = t->cj;
 
       /* Foreign task? */
       if (ci->nodeID != s->nodeID && cj->nodeID != s->nodeID) {
@@ -902,6 +904,10 @@ static void scheduler_splittask_gravity(struct task *t, struct scheduler *s) {
 
         t->type = task_type_grav_mm;
         t->subtype = task_subtype_none;
+	atomic_inc(&ci->nr_tasks);
+	atomic_inc(&cj->nr_tasks);
+	engine_addlink(e, &ci->grav, t);
+	engine_addlink(e, &cj->grav, t);
         break;
       }
 
-- 
GitLab