diff --git a/src/cell.c b/src/cell.c index d7b2381f034d22b28c69799f38695f8a1735984f..12e4b299c08bfe44ea09b2baa920e3f70539fe2a 100644 --- a/src/cell.c +++ b/src/cell.c @@ -2159,6 +2159,8 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { if (c->ghost_out != NULL) scheduler_activate(s, c->ghost_out); if (c->ghost != NULL) scheduler_activate(s, c->ghost); if (c->init_grav != NULL) scheduler_activate(s, c->init_grav); + if (c->grav_ghost_in != NULL) scheduler_activate(s, c->grav_ghost_in); + if (c->grav_ghost_out != NULL) scheduler_activate(s, c->grav_ghost_out); if (c->kick1 != NULL) scheduler_activate(s, c->kick1); if (c->kick2 != NULL) scheduler_activate(s, c->kick2); if (c->timestep != NULL) scheduler_activate(s, c->timestep); diff --git a/src/engine.c b/src/engine.c index eb395e0a2d25b821e5d19f32d1c4d5a5ac367c0e..ee38e6005a19ca831a259a7ae76f46e61dee2b62 100644 --- a/src/engine.c +++ b/src/engine.c @@ -244,10 +244,10 @@ void engine_make_hierarchical_tasks(struct engine *e, struct cell *c) { /* Generate the ghost tasks. */ c->ghost_in = - scheduler_addtask(s, task_type_ghost, task_subtype_none, 0, + scheduler_addtask(s, task_type_ghost_in, task_subtype_none, 0, /* implicit = */ 1, c, NULL); c->ghost_out = - scheduler_addtask(s, task_type_ghost, task_subtype_none, 0, + scheduler_addtask(s, task_type_ghost_out, task_subtype_none, 0, /* implicit = */ 1, c, NULL); engine_add_ghosts(e, c, c->ghost_in, c->ghost_out); @@ -3274,7 +3274,8 @@ void engine_marktasks_mapper(void *map_data, int num_elements, } /* Hydro ghost tasks ? */ - else if (t->type == task_type_ghost || t->type == task_type_extra_ghost) { + else if (t->type == task_type_ghost || t->type == task_type_extra_ghost || + t->type == task_type_ghost_in || t->type == task_type_ghost_out) { if (cell_is_active(t->ci, e)) scheduler_activate(s, t); } @@ -3285,7 +3286,9 @@ void engine_marktasks_mapper(void *map_data, int num_elements, } /* Periodic gravity stuff (Note this is not linked to a cell) ? */ - else if (t->type == task_type_grav_top_level) { + else if (t->type == task_type_grav_top_level || + t->type == task_type_grav_ghost_in || + t->type == task_type_grav_ghost_out) { scheduler_activate(s, t); } diff --git a/src/task.c b/src/task.c index a00693467c1e7646cc7f6698feece9b8ceac6706..e7acb7a4d4a5e1143dfcd6279c010658c54aa10b 100644 --- a/src/task.c +++ b/src/task.c @@ -50,7 +50,7 @@ const char *taskID_names[task_type_count] = { "none", "sort", "self", "pair", "sub_self", "sub_pair", - "init_grav", "ghost", "extra_ghost", + "init_grav", "ghost_in", "ghost", "ghost_out", "extra_ghost", "drift_part", "drift_gpart", "kick1", "kick2", "timestep", "send", "recv", "grav_top_level", "grav_long_range", diff --git a/src/task.h b/src/task.h index 644ccdd74f4225a04dfda68c046676404e6f6bc1..1b42058f52085053f82a3d875b694a396156635e 100644 --- a/src/task.h +++ b/src/task.h @@ -46,7 +46,9 @@ enum task_types { task_type_sub_self, task_type_sub_pair, task_type_init_grav, + task_type_ghost_in, task_type_ghost, + task_type_ghost_out, task_type_extra_ghost, task_type_drift_part, task_type_drift_gpart,