diff --git a/src/kernel_hydro.h b/src/kernel_hydro.h index 10ba5082fb5a7e67688d0ecb15846392f0e30edc..d3c905e50ea023ea63629505fd3566cbed3ed9b0 100644 --- a/src/kernel_hydro.h +++ b/src/kernel_hydro.h @@ -516,8 +516,9 @@ __attribute__((always_inline)) INLINE static void kernel_deval_1_vec( /** * @brief Computes the kernel function and its derivative for two particles - * using interleaved vectors. The return value is undefined if $u > \\gamma = H/h$. - * + * using interleaved vectors. The return value is undefined if $u > \\gamma = + * H/h$. + * * @param u The ratio of the distance to the smoothing length $u = x/h$. * @param w (return) The value of the kernel function $W(x,h)$. * @param dw_dx (return) The norm of the gradient of $|\\nabla W(x,h)|$. @@ -640,7 +641,7 @@ __attribute__((always_inline)) INLINE static void kernel_deval_2_vec( /** * @brief Computes the kernel function for two particles - * using vectors. The return value is undefined if $u > \\gamma = H/h$. + * using vectors. The return value is undefined if $u > \\gamma = H/h$. * * @param u The ratio of the distance to the smoothing length $u = x/h$. * @param w (return) The value of the kernel function $W(x,h)$. diff --git a/src/runner_doiact.h b/src/runner_doiact.h index 14eecaa2c0c126b721a400e63298e1d55a9c98da..80556d2d0d53444c10195284c4ac896d8a83de07 100644 --- a/src/runner_doiact.h +++ b/src/runner_doiact.h @@ -1039,7 +1039,6 @@ void DOPAIR1(struct runner *r, struct cell *ci, struct cell *cj, const int sid, const float hj = pj->h; const double dj = sort_j[pjd].d - hj * kernel_gamma - dx_max + rshift; if (dj - rshift > di_max) continue; - double pjx[3]; for (int k = 0; k < 3; k++) pjx[k] = pj->x[k] + shift[k]; const float hjg2 = hj * hj * kernel_gamma2; @@ -1451,7 +1450,6 @@ void DOPAIR2(struct runner *r, struct cell *ci, struct cell *cj) { const float hj = pj->h; const double dj = sort_j[pjd].d - hj * kernel_gamma - dx_max + rshift; if (dj - rshift > di_max) continue; - double pjx[3]; for (int k = 0; k < 3; k++) pjx[k] = pj->x[k] + shift[k]; const float hjg2 = hj * hj * kernel_gamma2; diff --git a/src/runner_doiact_vec.c b/src/runner_doiact_vec.c index e00409c15701802bb94530ccbb066e9c15ec7958..c9351c1026253d985ce71465a8501803918e86f8 100644 --- a/src/runner_doiact_vec.c +++ b/src/runner_doiact_vec.c @@ -528,19 +528,18 @@ __attribute__((always_inline)) INLINE void runner_doself1_density_vec( /* If there are any interactions left pack interaction values into c2 * cache. */ if (doi_mask) { - storeInteractions(doi_mask, pjd, &v_r2, &v_dx, &v_dy, &v_dz, - cell_cache, &int_cache, &icount, &rhoSum, &rho_dhSum, - &wcountSum, &wcount_dhSum, &div_vSum, &curlvxSum, - &curlvySum, &curlvzSum, v_hi_inv, v_vix, v_viy, - v_viz); - } - if (doi_mask2) { - storeInteractions(doi_mask2, pjd + VEC_SIZE, &v_r2_2, &v_dx_2, - &v_dy_2, &v_dz_2, cell_cache, &int_cache, - &icount, &rhoSum, &rho_dhSum, &wcountSum, + storeInteractions(doi_mask, pjd, &v_r2, &v_dx, &v_dy, &v_dz, cell_cache, + &int_cache, &icount, &rhoSum, &rho_dhSum, &wcountSum, &wcount_dhSum, &div_vSum, &curlvxSum, &curlvySum, &curlvzSum, v_hi_inv, v_vix, v_viy, v_viz); } + if (doi_mask2) { + storeInteractions(doi_mask2, pjd + VEC_SIZE, &v_r2_2, &v_dx_2, &v_dy_2, + &v_dz_2, cell_cache, &int_cache, &icount, &rhoSum, + &rho_dhSum, &wcountSum, &wcount_dhSum, &div_vSum, + &curlvxSum, &curlvySum, &curlvzSum, v_hi_inv, v_vix, + v_viy, v_viz); + } } /* Perform padded vector remainder interactions if any are present. */ @@ -746,17 +745,18 @@ for (int pid = 0; pid < count; pid++) { v_hj.v = vec_load(&cell_cache->h[pjd]); v_hj_inv = vec_reciprocal(v_hj); - /* To stop floating point exceptions for when particle separations are 0. */ + /* To stop floating point exceptions for when particle separations are 0. + */ v_r2.v = vec_add(v_r2.v, vec_set1(FLT_MIN)); runner_iact_nonsym_1_vec_force( - &v_r2, &v_dx, &v_dy, &v_dz, v_vix, v_viy, v_viz, - v_rhoi, v_grad_hi, v_pOrhoi2, v_balsara_i, v_ci, - &cell_cache->vx[pjd], &cell_cache->vy[pjd], - &cell_cache->vz[pjd], &cell_cache->rho[pjd], &cell_cache->grad_h[pjd], - &cell_cache->pOrho2[pjd], &cell_cache->balsara[pjd], &cell_cache->soundspeed[pjd], &cell_cache->m[pjd], v_hi_inv, v_hj_inv, &a_hydro_xSum, &a_hydro_ySum, &a_hydro_zSum, - &h_dtSum, &v_sigSum, &entropy_dtSum, v_doi_mask); - + &v_r2, &v_dx, &v_dy, &v_dz, v_vix, v_viy, v_viz, v_rhoi, v_grad_hi, + v_pOrhoi2, v_balsara_i, v_ci, &cell_cache->vx[pjd], + &cell_cache->vy[pjd], &cell_cache->vz[pjd], &cell_cache->rho[pjd], + &cell_cache->grad_h[pjd], &cell_cache->pOrho2[pjd], + &cell_cache->balsara[pjd], &cell_cache->soundspeed[pjd], + &cell_cache->m[pjd], v_hi_inv, v_hj_inv, &a_hydro_xSum, &a_hydro_ySum, + &a_hydro_zSum, &h_dtSum, &v_sigSum, &entropy_dtSum, v_doi_mask); } } /* Loop over all other particles. */ diff --git a/tests/testInteractions.c b/tests/testInteractions.c index 2f4d8d020b9c69cd3f89e32a84fab362fce55ca6..5bf036b17dce6755fc2b6f77aaea64851d613bb1 100644 --- a/tests/testInteractions.c +++ b/tests/testInteractions.c @@ -614,7 +614,7 @@ void test_force_interactions(struct part test_part, struct part *parts, dz.v = vec_load(&(dzq[i])); hj.v = vec_load(&hj_invq[i]); hj_inv = vec_reciprocal(hj); - + runner_iact_nonsym_1_vec_force( &r2, &dx, &dy, &dz, vix_vec, viy_vec, viz_vec, rhoi_vec, grad_hi_vec, pOrhoi2_vec, balsara_i_vec, ci_vec, &(vjxq[i]),