diff --git a/src/runner.c b/src/runner.c index 7eedb6adc72755ba12faed5429edad43d3849451..92eb8c3df737c1976467b39556fd522b1c085d21 100644 --- a/src/runner.c +++ b/src/runner.c @@ -709,16 +709,18 @@ void runner_dodrift(struct runner *r, struct cell *c, int timer) { /* Predict the values of the extra fields */ hydro_predict_extra(p, xp, ti_old, ti_current, timeBase); - /* Compute motion since last cell construction */ - const float dx = - sqrtf((p->x[0] - xp->x_old[0]) * (p->x[0] - xp->x_old[0]) + - (p->x[1] - xp->x_old[1]) * (p->x[1] - xp->x_old[1]) + - (p->x[2] - xp->x_old[2]) * (p->x[2] - xp->x_old[2])); + /* Compute (square of) motion since last cell construction */ + const float dx = (p->x[0] - xp->x_old[0]) * (p->x[0] - xp->x_old[0]) + + (p->x[1] - xp->x_old[1]) * (p->x[1] - xp->x_old[1]) + + (p->x[2] - xp->x_old[2]) * (p->x[2] - xp->x_old[2]); dx_max = fmaxf(dx_max, dx); /* Maximal smoothing length */ h_max = fmaxf(p->h, h_max); } + + /* Now, get the maximal particle motion from its square */ + dx_max = sqrtf(dx_max); } /* Otherwise, aggregate data from children. */