diff --git a/src/runner.c b/src/runner.c index 74c9fd034ebd3f5e0c1991e98bb711c99d86a3cd..94410adcb88c02a39e5e2fbf0f1e344004c2c8fe 100644 --- a/src/runner.c +++ b/src/runner.c @@ -972,6 +972,16 @@ void runner_do_kick2(struct runner *r, struct cell *c, int timer) { ti_end_min = min(ti_end + ti_new_step, ti_end_min); ti_end_max = max(ti_end + ti_new_step, ti_end_max); } + + else { /* part is inactive */ + + const integertime_t ti_end = + get_integer_time_end(ti_current, p->time_bin); + + /* What is the next sync-point ? */ + ti_end_min = min(ti_end, ti_end_min); + ti_end_max = max(ti_end, ti_end_max); + } } /* Loop over the g-particles in this cell. */ @@ -980,34 +990,46 @@ void runner_do_kick2(struct runner *r, struct cell *c, int timer) { /* Get a handle on the part. */ struct gpart *restrict gp = &gparts[k]; - /* If the g-particle has no counterpart and needs to be kicked */ - if (gp->id_or_neg_offset > 0 && gpart_is_active(gp, e)) { + /* If the g-particle has no counterpart */ + if (gp->id_or_neg_offset > 0) { - /* First, finish the force loop */ - gravity_end_force(gp, const_G); + /* need to be kicked ? */ + if (gpart_is_active(gp, e)) { - const integertime_t ti_step = get_integer_timestep(gp->time_bin); - const integertime_t ti_begin = - get_integer_time_begin(ti_current, gp->time_bin); - const integertime_t ti_end = - get_integer_time_end(ti_current, gp->time_bin); + /* First, finish the force loop */ + gravity_end_force(gp, const_G); - /* Finish the time-step with a second half-kick */ - kick_gpart(gp, ti_begin + ti_step / 2, ti_begin + ti_step, ti_current, - timeBase); + const integertime_t ti_step = get_integer_timestep(gp->time_bin); + const integertime_t ti_begin = + get_integer_time_begin(ti_current, gp->time_bin); + const integertime_t ti_end = + get_integer_time_end(ti_current, gp->time_bin); - /* Get new time-step */ - const integertime_t ti_new_step = get_gpart_timestep(gp, e); + /* Finish the time-step with a second half-kick */ + kick_gpart(gp, ti_begin + ti_step / 2, ti_begin + ti_step, ti_current, + timeBase); - /* Update particle */ - gp->time_bin = get_time_bin(ti_new_step); + /* Get new time-step */ + const integertime_t ti_new_step = get_gpart_timestep(gp, e); - /* Number of updated g-particles */ - g_updated++; + /* Update particle */ + gp->time_bin = get_time_bin(ti_new_step); - /* What is the next sync-point ? */ - ti_end_min = min(ti_end + ti_new_step, ti_end_min); - ti_end_max = max(ti_end + ti_new_step, ti_end_max); + /* Number of updated g-particles */ + g_updated++; + + /* What is the next sync-point ? */ + ti_end_min = min(ti_end + ti_new_step, ti_end_min); + ti_end_max = max(ti_end + ti_new_step, ti_end_max); + } else { /* gpart is inactive */ + + const integertime_t ti_end = + get_integer_time_end(ti_current, gp->time_bin); + + /* What is the next sync-point ? */ + ti_end_min = min(ti_end, ti_end_min); + ti_end_max = max(ti_end, ti_end_max); + } } } }