diff --git a/src/cell.h b/src/cell.h index 97fb0d1a985013e0245ad57fd617f7a6b80f6f13..f86ab765e75052c9231fdfebe225da0a5c72be68 100644 --- a/src/cell.h +++ b/src/cell.h @@ -216,9 +216,6 @@ struct cell { #define cell_getid(cdim, i, j, k) \ ((int)(k) + (cdim)[2] * ((int)(j) + (cdim)[1] * (int)(i))) -#define cell_getid2(cdim_x, cdim_y, cdim_z, i, j, k) \ - ((int)(k) + cdim_z * ((int)(j) + cdim_y * (int)(i))) - /* Function prototypes. */ void cell_split(struct cell *c, ptrdiff_t parts_offset); void cell_sanitize(struct cell *c); diff --git a/src/space.c b/src/space.c index 516350c5af42920c1bc8e934baa306c4082be10e..93e96ac433e51c25e8062dfb9a80007067126e3e 100644 --- a/src/space.c +++ b/src/space.c @@ -756,9 +756,7 @@ void space_parts_get_cell_index_mapper(void *map_data, int nr_parts, const double dim_x = s->dim[0]; const double dim_y = s->dim[1]; const double dim_z = s->dim[2]; - // const int cdim_x = s->cdim[0]; - const int cdim_y = s->cdim[1]; - const int cdim_z = s->cdim[2]; + const int cdim[3] = {s->cdim[0], s->cdim[1], s->cdim[2]}; const double ih_x = s->iwidth[0]; const double ih_y = s->iwidth[1]; const double ih_z = s->iwidth[2]; @@ -778,8 +776,8 @@ void space_parts_get_cell_index_mapper(void *map_data, int nr_parts, const double pos_z = box_wrap(old_pos_z, 0.0, dim_z); /* Get its cell index */ - const int index = cell_getid2(0., cdim_y, cdim_z, pos_x * ih_x, - pos_y * ih_y, pos_z * ih_z); + const int index = + cell_getid(cdim, pos_x * ih_x, pos_y * ih_y, pos_z * ih_z); ind[k] = index; /* Update the position */ @@ -806,24 +804,37 @@ void space_gparts_get_cell_index_mapper(void *map_data, int nr_gparts, int *const ind = data->ind + (ptrdiff_t)(gparts - s->gparts); /* Get some constants */ - const double dim[3] = {s->dim[0], s->dim[1], s->dim[2]}; + const double dim_x = s->dim[0]; + const double dim_y = s->dim[1]; + const double dim_z = s->dim[2]; const int cdim[3] = {s->cdim[0], s->cdim[1], s->cdim[2]}; - const double ih[3] = {s->iwidth[0], s->iwidth[1], s->iwidth[2]}; + const double ih_x = s->iwidth[0]; + const double ih_y = s->iwidth[1]; + const double ih_z = s->iwidth[2]; for (int k = 0; k < nr_gparts; k++) { /* Get the particle */ struct gpart *restrict gp = &gparts[k]; + const double old_pos_x = gp->x[0]; + const double old_pos_y = gp->x[1]; + const double old_pos_z = gp->x[2]; + /* Put it back into the simulation volume */ - gp->x[0] = box_wrap(gp->x[0], 0.0, dim[0]); - gp->x[1] = box_wrap(gp->x[1], 0.0, dim[1]); - gp->x[2] = box_wrap(gp->x[2], 0.0, dim[2]); + const double pos_x = box_wrap(old_pos_x, 0.0, dim_x); + const double pos_y = box_wrap(old_pos_y, 0.0, dim_y); + const double pos_z = box_wrap(old_pos_z, 0.0, dim_z); /* Get its cell index */ const int index = - cell_getid(cdim, gp->x[0] * ih[0], gp->x[1] * ih[1], gp->x[2] * ih[2]); + cell_getid(cdim, pos_x * ih_x, pos_y * ih_y, pos_z * ih_z); ind[k] = index; + + /* Update the position */ + gp->x[0] = pos_x; + gp->x[1] = pos_y; + gp->x[2] = pos_z; } }