Commit 6b59015f authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Merge branch 'spare_sqrt' into 'master'

Save a sqrtf() call per particle in drift task

Any reason why this was not written like this in the first place ? Looks like we can save one `sqrtf()` call per particle in the drift tasks.

See merge request !127
parents bbc67d7d 53bc63dc
......@@ -664,7 +664,7 @@ void runner_dodrift(struct runner *r, struct cell *c, int timer) {
const float ti_current = r->e->ti_current;
struct part *restrict p, *restrict parts = c->parts;
struct xpart *restrict xp, *restrict xparts = c->xparts;
float dx_max = 0.f, h_max = 0.f;
float dx_max = 0.f, dx2_max = 0.f, h_max = 0.f;
float w;
TIMER_TIC
......@@ -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]));
dx_max = fmaxf(dx_max, dx);
/* Compute (square of) motion since last cell construction */
const float dx2 = (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]);
dx2_max = fmaxf(dx2_max, dx2);
/* Maximal smoothing length */
h_max = fmaxf(p->h, h_max);
}
/* Now, get the maximal particle motion from its square */
dx_max = sqrtf(dx2_max);
}
/* Otherwise, aggregate data from children. */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment