diff --git a/src/cell.c b/src/cell.c index 9c6808d0afaf29d3ecd6a78198c19ffa25fa61e1..89eec6b53baa09ceb476a7e75f7f6a8aceac8c37 100644 --- a/src/cell.c +++ b/src/cell.c @@ -1863,6 +1863,7 @@ void cell_activate_subcell_external_grav_tasks(struct cell *ci, int cell_unskip_tasks(struct cell *c, struct scheduler *s) { struct engine *e = s->space->e; + const int nodeID = e->nodeID; int rebuild = 0; /* Un-skip the density tasks involved with this cell. */ @@ -1874,13 +1875,13 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { const int cj_active = (cj != NULL) ? cell_is_active(cj, e) : 0; /* Only activate tasks that involve a local active cell. */ - if ((ci_active && ci->nodeID == engine_rank) || - (cj_active && cj->nodeID == engine_rank)) { + if ((ci_active && ci->nodeID == nodeID) || + (cj_active && cj->nodeID == nodeID)) { scheduler_activate(s, t); /* Activate hydro drift */ if (t->type == task_type_self) { - if (ci->nodeID == engine_rank) cell_activate_drift_part(ci, s); + if (ci->nodeID == nodeID) cell_activate_drift_part(ci, s); } /* Set the correct sorting flags and activate hydro drifts */ @@ -1892,8 +1893,8 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { cj->dx_max_sort_old = cj->dx_max_sort; /* Activate the drift tasks. */ - if (ci->nodeID == engine_rank) cell_activate_drift_part(ci, s); - if (cj->nodeID == engine_rank) cell_activate_drift_part(cj, s); + if (ci->nodeID == nodeID) cell_activate_drift_part(ci, s); + if (cj->nodeID == nodeID) cell_activate_drift_part(cj, s); /* Check the sorts and activate them if needed. */ cell_activate_sorts(ci, t->flags, s); @@ -1914,7 +1915,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { #ifdef WITH_MPI /* Activate the send/recv tasks. */ - if (ci->nodeID != engine_rank) { + if (ci->nodeID != nodeID) { /* If the local cell is active, receive data from the foreign cell. */ if (cj_active) { @@ -1952,7 +1953,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { /* If the local cell is active, send its ti_end values. */ if (cj_active) scheduler_activate_send(s, cj->send_ti, ci->nodeID); - } else if (cj->nodeID != engine_rank) { + } else if (cj->nodeID != nodeID) { /* If the local cell is active, receive data from the foreign cell. */ if (ci_active) { @@ -2002,8 +2003,8 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { struct cell *cj = t->cj; /* Only activate tasks that involve a local active cell. */ - if ((cell_is_active(ci, e) && ci->nodeID == engine_rank) || - (cj != NULL && cell_is_active(cj, e) && cj->nodeID == engine_rank)) { + if ((cell_is_active(ci, e) && ci->nodeID == nodeID) || + (cj != NULL && cell_is_active(cj, e) && cj->nodeID == nodeID)) { scheduler_activate(s, t); /* Set the drifting flags */ @@ -2019,7 +2020,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) { } /* Unskip all the other task types. */ - if (c->nodeID == engine_rank && cell_is_active(c, e)) { + if (c->nodeID == nodeID && cell_is_active(c, e)) { for (struct link *l = c->gradient; l != NULL; l = l->next) scheduler_activate(s, l->t);