diff --git a/src/runner.c b/src/runner.c index 96027b4588eb855f7235ed3b30d478735e41c791..636d332dfccad3112952db0e11a8824bb196512b 100644 --- a/src/runner.c +++ b/src/runner.c @@ -113,8 +113,12 @@ void runner_do_grav_external(struct runner *r, struct cell *c, int timer) { const struct external_potential *potential = r->e->external_potential; const struct phys_const *constants = r->e->physical_constants; const double time = r->e->time; + TIMER_TIC; + /* Anything to do here? */ + if (c->ti_end_min > ti_current) return; + /* Recurse? */ if (c->split) { for (int k = 0; k < 8; k++) @@ -391,6 +395,9 @@ void runner_do_init(struct runner *r, struct cell *c, int timer) { TIMER_TIC; + /* Anything to do here? */ + if (c->ti_end_min > ti_current) return; + /* Recurse? */ if (c->split) { for (int k = 0; k < 8; k++) @@ -443,6 +450,9 @@ void runner_do_extra_ghost(struct runner *r, struct cell *c) { const int count = c->count; const int ti_current = r->e->ti_current; + /* Anything to do here? */ + if (c->ti_end_min > ti_current) return; + /* Recurse? */ if (c->split) { for (int k = 0; k < 8; k++) @@ -493,6 +503,9 @@ void runner_do_ghost(struct runner *r, struct cell *c) { TIMER_TIC; + /* Anything to do here? */ + if (c->ti_end_min > ti_current) return; + /* Recurse? */ if (c->split) { for (int k = 0; k < 8; k++) @@ -928,15 +941,22 @@ void runner_do_kick(struct runner *r, struct cell *c, int timer) { struct gpart *restrict gparts = c->gparts; const double const_G = r->e->physical_constants->const_newton_G; - int updated = 0, g_updated = 0; - int ti_end_min = max_nr_timesteps, ti_end_max = 0; + TIMER_TIC; - TIMER_TIC + /* Anything to do here? */ + if (c->ti_end_min > ti_current) { + c->updated = 0; + c->g_updated = 0; + return; + } #ifdef TASK_VERBOSE OUT; #endif + int updated = 0, g_updated = 0; + int ti_end_min = max_nr_timesteps, ti_end_max = 0; + /* No children? */ if (!c->split) {