From 44ba335610f9f708f7a3b24858bf1dbad3b9704f Mon Sep 17 00:00:00 2001 From: Matthieu Schaller <matthieu.schaller@durham.ac.uk> Date: Mon, 4 Dec 2017 23:30:46 +0000 Subject: [PATCH] Made the ghost_in and ghost_out a separate task type to stop the confusion of the ghost being sometimes implicit. --- src/cell.c | 2 ++ src/engine.c | 11 +++++++---- src/task.c | 2 +- src/task.h | 2 ++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/cell.c b/src/cell.c index d7b2381f03..12e4b299c0 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 eb395e0a2d..ee38e6005a 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 a00693467c..e7acb7a4d4 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 644ccdd74f..1b42058f52 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, -- GitLab