From b525c5668ebd29f7369a047ea112bc4711432eb3 Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <schaller@strw.leidenuniv.nl>
Date: Thu, 2 Jul 2020 17:37:32 +0200
Subject: [PATCH] Move the time-step task back to the super level

---
 src/cell.c             |  3 ++-
 src/engine.c           |  8 ++++----
 src/engine_maketasks.c | 12 ++++++++----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/cell.c b/src/cell.c
index b7c6cd9e33..cbf93a694b 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -2680,7 +2680,7 @@ void cell_recursively_activate_kicks(struct cell *c, struct scheduler *s,
   if (c->kick1 != NULL) {
     scheduler_activate(s, c->kick1);
     scheduler_activate(s, c->kick2);
-    scheduler_activate(s, c->timestep);
+    // scheduler_activate(s, c->timestep);
   } else {
 
 #ifdef SWIFT_DEBUG_CHECKS
@@ -2710,6 +2710,7 @@ void cell_activate_kicks(struct cell *c, struct scheduler *s,
   scheduler_activate(s, c->kick2_out);
   scheduler_activate(s, c->timestep_in);
   scheduler_activate(s, c->timestep_out);
+  scheduler_activate(s, c->timestep);
   cell_recursively_activate_kicks(c, s, e);
 }
 
diff --git a/src/engine.c b/src/engine.c
index d2d2d844bc..fe8f1fcff0 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -2043,14 +2043,14 @@ void engine_skip_force_and_kick(struct engine *e) {
     if (t->type == task_type_drift_part || t->type == task_type_drift_gpart ||
         t->type == task_type_drift_spart || t->type == task_type_drift_bpart ||
         t->type == task_type_kick1 || t->type == task_type_kick2 ||
-	t->type == task_type_kick1_in || t->type == task_type_kick2_in ||
-	t->type == task_type_kick1_out || t->type == task_type_kick2_out ||
+        t->type == task_type_kick1_in || t->type == task_type_kick2_in ||
+        t->type == task_type_kick1_out || t->type == task_type_kick2_out ||
         t->type == task_type_timestep || t->type == task_type_timestep_in ||
-	t->type == task_type_timestep_out ||
+        t->type == task_type_timestep_out ||
         t->type == task_type_timestep_limiter ||
         t->type == task_type_timestep_sync ||
         t->type == task_type_end_hydro_force || t->type == task_type_cooling ||
-	t->type == task_type_cooling_in || t->type == task_type_cooling_out ||
+        t->type == task_type_cooling_in || t->type == task_type_cooling_out ||
         t->type == task_type_stars_in || t->type == task_type_stars_out ||
         t->type == task_type_star_formation ||
         t->type == task_type_stars_resort || t->type == task_type_extra_ghost ||
diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c
index 409548bb38..9e0412336d 100644
--- a/src/engine_maketasks.c
+++ b/src/engine_maketasks.c
@@ -843,10 +843,8 @@ void engine_add_kicks(struct engine *e, struct cell *c, struct task *kick1_in,
     scheduler_addunlock(s, kick2_in, c->kick2);
     scheduler_addunlock(s, c->kick2, kick2_out);
 
-    c->timestep = scheduler_addtask(s, task_type_timestep, task_subtype_none, 0,
-                                    0, c, NULL);
-    scheduler_addunlock(s, timestep_in, c->timestep);
-    scheduler_addunlock(s, c->timestep, timestep_out);
+    // scheduler_addunlock(s, timestep_in, c->timestep);
+    // scheduler_addunlock(s, c->timestep, timestep_out);
 
   } else {
     /* Keep recursing */
@@ -921,6 +919,12 @@ void engine_make_hierarchical_tasks_common(struct engine *e, struct cell *c) {
           scheduler_addtask(s, task_type_timestep_out, task_subtype_none, 0,
                             /*implicit=*/1, c, NULL);
 
+      c->timestep = scheduler_addtask(s, task_type_timestep, task_subtype_none,
+                                      0, 0, c, NULL);
+
+      scheduler_addunlock(s, c->timestep_in, c->timestep);
+      scheduler_addunlock(s, c->timestep, c->timestep_out);
+
       /* Add the real tasks */
       engine_add_kicks(e, c, c->kick1_in, c->kick1_out, c->kick2_in,
                        c->kick2_out, c->timestep_in, c->timestep_out);
-- 
GitLab