From e2e52fa062475eeb23073e79fc8beec43bda5971 Mon Sep 17 00:00:00 2001 From: Berenger Bramas <berenger.bramas@mpcdf.mpg.de> Date: Wed, 20 Sep 2017 17:25:01 +0200 Subject: [PATCH] Debug --- bfps/cpp/particles/p2p_distr_mpi.hpp | 240 +++++++++++++++------------ bfps/cpp/particles/p2p_tree.hpp | 1 - 2 files changed, 132 insertions(+), 109 deletions(-) diff --git a/bfps/cpp/particles/p2p_distr_mpi.hpp b/bfps/cpp/particles/p2p_distr_mpi.hpp index a32c3375..45f8bba3 100644 --- a/bfps/cpp/particles/p2p_distr_mpi.hpp +++ b/bfps/cpp/particles/p2p_distr_mpi.hpp @@ -25,6 +25,50 @@ - update particles property */ + + +template <class partsize_t, class real_number, int size_particle_positions, int size_particle_rhs> +struct ParticleView{ + partsize_t p_index; + real_number* ptr_particles_positions; + real_number* ptr_particles_current_rhs; + partsize_t* ptr_global_idx; + long int* ptr_cell_idx; + + ParticleView() + : p_index(-1), ptr_particles_positions(nullptr), + ptr_particles_current_rhs(nullptr), ptr_global_idx(nullptr), + ptr_cell_idx(nullptr){} +}; + +template <class partsize_t, class real_number, int size_particle_positions, int size_particle_rhs> +void swap(ParticleView<partsize_t, real_number, size_particle_positions,size_particle_rhs>& p1, + ParticleView<partsize_t, real_number, size_particle_positions,size_particle_rhs>& p2){ + if(p1.p_index != -1 && p2.p_index != -1){ + for(int idx_pos = 0 ; idx_pos < size_particle_positions ; ++idx_pos){ + std::swap(p1.ptr_particles_positions[p1.p_index*size_particle_positions+idx_pos], + p2.ptr_particles_positions[p2.p_index*size_particle_positions+idx_pos]); + } + for(int idx_rhs = 0 ; idx_rhs < size_particle_rhs ; ++idx_rhs){ + std::swap(p1.ptr_particles_current_rhs[p1.p_index*size_particle_rhs+idx_rhs], + p2.ptr_particles_current_rhs[p2.p_index*size_particle_rhs+idx_rhs]); + } + std::swap(p1.ptr_cell_idx[p1.p_index],p2.ptr_cell_idx[p2.p_index]); + std::swap(p1.ptr_global_idx[p1.p_index],p2.ptr_global_idx[p2.p_index]); + std::swap(p1.p_index,p2.p_index); + } + else if(p1.p_index != -1){ + p2 = p1; + p1 = ParticleView<partsize_t, real_number, size_particle_positions,size_particle_rhs>(); + } + else if(p2.p_index != -1){ + p1 = p2; + p2 = ParticleView<partsize_t, real_number, size_particle_positions,size_particle_rhs>(); + } +} + + + template <class partsize_t, class real_number> class p2p_distr_mpi { protected: @@ -183,32 +227,23 @@ public: real_number compute_distance_r2(const real_number x1, const real_number y1, const real_number z1, const real_number x2, const real_number y2, const real_number z2) const { - return ((x1-x2)*(x1-x2)) + ((y1-y2)*(y1-y2)) + ((z1-z2)*(z1-z2)); - } - + real_number diff_x = std::abs(x1-x2); + while(diff_x > spatial_box_width[IDX_X]/2){ + diff_x = std::abs(diff_x - spatial_box_width[IDX_X]); + } - template <int size_particle_positions, int size_particle_rhs> - struct ParticleView{ - partsize_t p_index; - real_number* ptr_particles_positions; - real_number* ptr_particles_current_rhs; - partsize_t* ptr_global_idx; - long int* ptr_cell_idx; + real_number diff_y = std::abs(y1-y2); + while(diff_y > spatial_box_width[IDX_Y]/2){ + diff_y = std::abs(diff_y - spatial_box_width[IDX_Y]); + } - void swap(ParticleView& p1, ParticleView& p2){ - for(int idx_pos = 0 ; idx_pos < size_particle_positions ; ++idx_pos){ - std::swap(p1.ptr_particles_positions[p1.p_index*size_particle_positions+idx_pos], - p2.ptr_particles_positions[p2.p_index*size_particle_positions+idx_pos]); - } - for(int idx_rhs = 0 ; idx_rhs < size_particle_rhs ; ++idx_rhs){ - std::swap(p1.ptr_particles_current_rhs[p1.p_index*size_particle_rhs+idx_rhs], - p2.ptr_particles_current_rhs[p2.p_index*size_particle_rhs+idx_rhs]); - } - std::swap(p1.ptr_cell_idx[p1.p_index],p2.ptr_cell_idx[p2.p_index]); - std::swap(p1.ptr_global_idx[p1.p_index],p2.ptr_global_idx[p2.p_index]); - std::swap(p1.p_index,p2.p_index); + real_number diff_z = std::abs(z1-z2); + while(diff_z > spatial_box_width[IDX_Z]/2){ + diff_z = std::abs(diff_z - spatial_box_width[IDX_Z]); } - }; + + return (diff_x*diff_x) + (diff_y*diff_y) + (diff_z*diff_z); + } template <class computer_class, int size_particle_positions, int size_particle_rhs> void compute_distr(computer_class& in_computer, @@ -246,16 +281,18 @@ public: particles_positions[(idxPart)*size_particle_positions + IDX_Z]); assert(my_down_z_cell_level <= get_cell_coord_z_from_index(particles_coord[idxPart])); assert(get_cell_coord_z_from_index(particles_coord[idxPart]) <= my_top_z_cell_level); - if(inout_index_particles[idxPart] == 3 || inout_index_particles[idxPart] == 52){// TODO - printf("Coord index %ld (tree index %ld)\n", inout_index_particles[idxPart],particles_coord[idxPart]); + if(inout_index_particles[idxPart] == 58576 || inout_index_particles[idxPart] == 0){// TODO + printf("Coord index %ld - %ld (tree index %ld)\n", idxPart, inout_index_particles[idxPart],particles_coord[idxPart]); printf(">> Box index %ld - %ld - %ld\n", get_cell_coord_x_from_index(particles_coord[idxPart]), get_cell_coord_y_from_index(particles_coord[idxPart]), get_cell_coord_z_from_index(particles_coord[idxPart])); + printf("idxPartition %d\n", idxPartition); } } } - std::vector<ParticleView<size_particle_positions,size_particle_rhs>> part_to_sort; + using ParticleView_t = ParticleView<partsize_t, real_number, size_particle_positions,size_particle_rhs>; + std::vector<ParticleView_t> part_to_sort; // Sort each partition in cells for(int idxPartition = 0 ; idxPartition < current_partition_size ; ++idxPartition){ @@ -273,8 +310,10 @@ public: assert(part_to_sort.size() == (current_offset_particles_for_partition[idxPartition+1]-current_offset_particles_for_partition[idxPartition])); std::sort(part_to_sort.begin(), part_to_sort.end(), - [](const ParticleView<size_particle_positions,size_particle_rhs>& p1, - const ParticleView<size_particle_positions,size_particle_rhs>& p2){ + [](const ParticleView_t& p1, + const ParticleView_t& p2){ + assert(p1.p_index != -1 && p1.ptr_cell_idx); + assert(p2.p_index != -1 && p2.ptr_cell_idx); return p1.ptr_cell_idx[p1.p_index] < p2.ptr_cell_idx[p2.p_index]; }); } @@ -297,6 +336,13 @@ public: current_cell_idx = particles_coord[idx_part]; current_nb_particles_in_cell = 1; current_cell_offset = idx_part; + if(inout_index_particles[idx_part] == 58576 || inout_index_particles[idx_part] == 0){// TODO + printf("Coord index %ld - %ld (tree index %ld)\n", idx_part, inout_index_particles[idx_part],particles_coord[idx_part]); + printf(">> Box index %ld - %ld - %ld\n", get_cell_coord_x_from_index(particles_coord[idx_part]), + get_cell_coord_y_from_index(particles_coord[idx_part]), + get_cell_coord_z_from_index(particles_coord[idx_part])); + printf("current_cell_offset %ld current_nb_particles_in_cell %ld\n", current_cell_offset, current_nb_particles_in_cell); + } } } if(current_nb_particles_in_cell){ @@ -310,13 +356,17 @@ public: fflush(stdout); // TODO // Offset per cell layers + long int previous_index = 0; std::unique_ptr<partsize_t[]> particles_offset_layers(new partsize_t[my_nb_cell_levels+1]()); for(int idxPartition = 0 ; idxPartition < current_partition_size ; ++idxPartition){ for(partsize_t idx_part = current_offset_particles_for_partition[idxPartition] ; idx_part != current_offset_particles_for_partition[idxPartition+1]; ++idx_part){ - assert(my_down_z_cell_level <= get_cell_coord_z_from_index(particles_coord[idx_part])); - assert(get_cell_coord_z_from_index(particles_coord[idx_part]) <= my_top_z_cell_level); - particles_offset_layers[get_cell_coord_z_from_index(particles_coord[idx_part])+1-my_down_z_cell_level] += 1; + const long int part_box_z_index = get_cell_coord_z_from_index(particles_coord[idx_part]); + assert(my_down_z_cell_level <= part_box_z_index); + assert(part_box_z_index <= my_top_z_cell_level); + particles_offset_layers[part_box_z_index+1-my_down_z_cell_level] += 1; + assert(previous_index <= part_box_z_index); + previous_index = part_box_z_index; } } for(size_t idx_layer = 0 ; idx_layer < my_nb_cell_levels ; ++idx_layer){ @@ -363,7 +413,6 @@ public: std::cout << "descriptor.destProc " << descriptor.destProc << std::endl; std::cout << "descriptor.nbLevelsToExchange " << descriptor.nbLevelsToExchange << std::endl; std::cout << "descriptor.nbParticlesToExchange " << descriptor.nbParticlesToExchange << std::endl; - std::cout << "descriptor.nbParticlesToExchange " << descriptor.nbParticlesToExchange << std::endl; std::cout << "descriptor.isRecv " << descriptor.isRecv << std::endl; std::cout << "neigDescriptors.size() " << neigDescriptors.size() << std::endl; std::cout.flush();// TODO @@ -440,18 +489,19 @@ public: std::cout << "descriptor.nbParticlesToExchange " << descriptor.nbParticlesToExchange << std::endl; std::cout << "descriptor.destProc " << descriptor.destProc << std::endl; std::cout << "idxDescr " << idxDescr << std::endl; + std::cout << "send from part " << particles_offset_layers[my_nb_cell_levels-descriptor.nbLevelsToExchange] << std::endl; whatNext.emplace_back(std::pair<Action,int>{NOTHING_TODO, -1}); mpiRequests.emplace_back(); assert(descriptor.nbParticlesToExchange*size_particle_positions < std::numeric_limits<int>::max()); - AssertMpi(MPI_Isend(const_cast<real_number*>(&particles_positions[particles_offset_layers[my_nb_cell_levels-descriptor.nbLevelsToExchange]]), + AssertMpi(MPI_Isend(const_cast<real_number*>(&particles_positions[particles_offset_layers[my_nb_cell_levels-descriptor.nbLevelsToExchange]*size_particle_positions]), int(descriptor.nbParticlesToExchange*size_particle_positions), particles_utils::GetMpiType(real_number()), descriptor.destProc, TAG_POSITION_PARTICLES, current_com, &mpiRequests.back())); assert(descriptor.toRecvAndMerge == nullptr); descriptor.toRecvAndMerge.reset(new real_number[descriptor.nbParticlesToExchange*size_particle_rhs]); - whatNext.emplace_back(std::pair<Action,int>{MERGE_PARTICLES, int(neigDescriptors.size())}); + whatNext.emplace_back(std::pair<Action,int>{MERGE_PARTICLES, idxDescr}); mpiRequests.emplace_back(); assert(descriptor.nbParticlesToExchange*size_particle_rhs < std::numeric_limits<int>::max()); AssertMpi(MPI_Irecv(descriptor.toRecvAndMerge.get(), int(descriptor.nbParticlesToExchange*size_particle_rhs), @@ -470,8 +520,6 @@ public: } } - const bool more_than_one_thread = (omp_get_max_threads() > 1); - TIMEZONE_OMP_INIT_PREPARALLEL(omp_get_max_threads()) #pragma omp parallel default(shared) { @@ -496,8 +544,7 @@ public: ////////////////////////////////////////////////////////////////////// if(releasedAction.first == RECV_PARTICLES){ NeighborDescriptor& descriptor = neigDescriptors[releasedAction.second]; - - assert(descriptor.isRecv == true); + assert(descriptor.isRecv); const int destProc = descriptor.destProc; const partsize_t NbParticlesToReceive = descriptor.nbParticlesToExchange; assert(NbParticlesToReceive != -1); @@ -525,11 +572,12 @@ public: ////////////////////////////////////////////////////////////////////// if(releasedAction.first == COMPUTE_PARTICLES){ NeighborDescriptor& descriptor = neigDescriptors[releasedAction.second]; + assert(descriptor.isRecv); const partsize_t NbParticlesToReceive = descriptor.nbParticlesToExchange; assert(descriptor.toCompute != nullptr); descriptor.results.reset(new real_number[NbParticlesToReceive*size_particle_rhs]); - // TODO in_computer.template init_result_array<size_particle_rhs>(descriptor.results.get(), NbParticlesToReceive); + in_computer.template init_result_array<size_particle_rhs>(descriptor.results.get(), NbParticlesToReceive); // Compute partsize_t idxPart = 0; @@ -537,7 +585,7 @@ public: const long int current_cell_idx = get_cell_idx(descriptor.toCompute[idxPart*size_particle_positions + IDX_X], descriptor.toCompute[idxPart*size_particle_positions + IDX_Y], descriptor.toCompute[idxPart*size_particle_positions + IDX_Z]); - partsize_t nb_parts_in_cell = 0; + partsize_t nb_parts_in_cell = 1; while(idxPart+nb_parts_in_cell != NbParticlesToReceive && current_cell_idx == get_cell_idx(descriptor.toCompute[(idxPart+nb_parts_in_cell)*size_particle_positions + IDX_X], descriptor.toCompute[(idxPart+nb_parts_in_cell)*size_particle_positions + IDX_Y], @@ -549,6 +597,23 @@ public: long int neighbors_indexes[27]; const int nbNeighbors = my_tree.getNeighbors(current_cell_idx, neighbors, neighbors_indexes, true); + for(int idx_test = 0 ; idx_test < nb_parts_in_cell ; ++idx_test){ // TODO + if(int(descriptor.toCompute[(idxPart+idx_test)*size_particle_positions + IDX_X]*1000) == int(1.685800e-01*1000) + && int(descriptor.toCompute[(idxPart+idx_test)*size_particle_positions + IDX_Y]*1000) == int(7.524981e-01*1000) + && int(descriptor.toCompute[(idxPart+idx_test)*size_particle_positions + IDX_Z]*1000) == int(9.999596e-01*1000)){ + printf("Found a pos %ld\n", idxPart+idx_test); + printf("pos %e %e %e\n", + descriptor.toCompute[(idxPart+idx_test)*size_particle_positions + IDX_X], + descriptor.toCompute[(idxPart+idx_test)*size_particle_positions + IDX_Y], + descriptor.toCompute[(idxPart+idx_test)*size_particle_positions + IDX_Z]); + } + } + printf("Remote part from %ld for %ld at idx %ld\n", idxPart, nb_parts_in_cell, current_cell_idx); // TODO + printf("pos of first %e %e %e\n", descriptor.toCompute[idxPart*size_particle_positions + IDX_X], + descriptor.toCompute[idxPart*size_particle_positions + IDX_Y], + descriptor.toCompute[idxPart*size_particle_positions + IDX_Z]); // TODO + printf("nbNeighbors %d\n", nbNeighbors); // TODO + // with other interval for(size_t idx_neighbor = 0 ; idx_neighbor < nbNeighbors ; ++idx_neighbor){ for(size_t idx_2 = 0 ; idx_2 < (*neighbors[idx_neighbor]).size() ; ++idx_2){ @@ -561,12 +626,28 @@ public: particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_Y], particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_Z]); if(dist_r2 < cutoff_radius*cutoff_radius){ - // TODO in_computer.template compute_interaction<size_particle_positions,size_particle_rhs>( -// &descriptor.toCompute[(idxPart+idx_p1)*size_particle_positions], -// &descriptor.results[(idxPart+idx_p1)*size_particle_rhs], -// &particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions], -// &particles_current_rhs[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_rhs], -// dist_r2); + in_computer.template compute_interaction<size_particle_positions,size_particle_rhs>( + &descriptor.toCompute[(idxPart+idx_p1)*size_particle_positions], + &descriptor.results[(idxPart+idx_p1)*size_particle_rhs], + &particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions], + &particles_current_rhs[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_rhs], + dist_r2); + } + + if(inout_index_particles[(*neighbors[idx_neighbor])[idx_2].first+idx_p2] == 132){// TODO + printf("test interaction between :\n"); + printf("index %ld (%ld) pos %e %e %e\n", + (idxPart+idx_p1), -1, + descriptor.toCompute[(idxPart+idx_p1)*size_particle_positions + IDX_X], + descriptor.toCompute[(idxPart+idx_p1)*size_particle_positions + IDX_Y], + descriptor.toCompute[(idxPart+idx_p1)*size_particle_positions + IDX_Z]); + printf("index %ld (%ld) pos %e %e %e\n", + ((*neighbors[idx_neighbor])[idx_2].first+idx_p2), + inout_index_particles[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)], + particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_X], + particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_Y], + particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_Z]); + printf("Radius = %e (%e)\n", sqrt(dist_r2), dist_r2); } } } @@ -591,16 +672,18 @@ public: if(releasedAction.first == RELEASE_BUFFER_PARTICLES){ NeighborDescriptor& descriptor = neigDescriptors[releasedAction.second]; assert(descriptor.toCompute != nullptr); + assert(descriptor.isRecv); descriptor.toCompute.release(); } ////////////////////////////////////////////////////////////////////// /// Merge ////////////////////////////////////////////////////////////////////// - if(releasedAction.first == MERGE_PARTICLES && more_than_one_thread == false){ + if(releasedAction.first == MERGE_PARTICLES){ NeighborDescriptor& descriptor = neigDescriptors[releasedAction.second]; - assert(descriptor.isRecv); + assert(descriptor.isRecv == false); assert(descriptor.toRecvAndMerge != nullptr); - // TODO in_computer.template reduce_particles_rhs<size_particle_rhs>(&particles_current_rhs[0], descriptor.toRecvAndMerge.get(), descriptor.nbParticlesToExchange); + in_computer.template reduce_particles_rhs<size_particle_rhs>(&particles_current_rhs[particles_offset_layers[my_nb_cell_levels-descriptor.nbLevelsToExchange]*size_particle_rhs], + descriptor.toRecvAndMerge.get(), descriptor.nbParticlesToExchange); descriptor.toRecvAndMerge.release(); } } @@ -632,24 +715,6 @@ public: &particles_current_rhs[(intervals[idx_1].first+idx_p2)*size_particle_rhs], dist_r2); } - if((inout_index_particles[(intervals[idx_1].first+idx_p1)] == 3 - && inout_index_particles[(intervals[idx_1].first+idx_p2)] == 52) - || (inout_index_particles[(intervals[idx_1].first+idx_p1)] == 52 - && inout_index_particles[(intervals[idx_1].first+idx_p2)] == 3)){// TODO - printf("test interaction between :\n"); - printf("index %ld (%ld) pos %e %e %e\n", - (intervals[idx_1].first+idx_p1), inout_index_particles[(intervals[idx_1].first+idx_p1)], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_X], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_Y], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_Z]); - printf("index %ld (%ld) pos %e %e %e\n", - (intervals[idx_1].first+idx_p2), - inout_index_particles[(intervals[idx_1].first+idx_p2)], - particles_positions[(intervals[idx_1].first+idx_p2)*size_particle_positions + IDX_X], - particles_positions[(intervals[idx_1].first+idx_p2)*size_particle_positions + IDX_Y], - particles_positions[(intervals[idx_1].first+idx_p2)*size_particle_positions + IDX_Z]); - printf("Radius = %e (%e)\n", sqrt(dist_r2), dist_r2); - } } } @@ -671,25 +736,6 @@ public: &particles_current_rhs[(intervals[idx_2].first+idx_p2)*size_particle_rhs], dist_r2); } - - if((inout_index_particles[(intervals[idx_1].first+idx_p1)] == 3 - && inout_index_particles[(intervals[idx_2].first+idx_p2)] == 52) - || (inout_index_particles[(intervals[idx_1].first+idx_p1)] == 52 - && inout_index_particles[(intervals[idx_2].first+idx_p2)] == 3)){// TODO - printf("interaction between :\n"); - printf("index %ld (%ld) pos %e %e %e\n", - (intervals[idx_1].first+idx_p1), inout_index_particles[(intervals[idx_1].first+idx_p1)], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_X], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_Y], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_Z]); - printf("index %ld (%ld) pos %e %e %e\n", - (intervals[idx_2].first+idx_p2), - inout_index_particles[(intervals[idx_2].first+idx_p2)], - particles_positions[(intervals[idx_2].first+idx_p2)*size_particle_positions + IDX_X], - particles_positions[(intervals[idx_2].first+idx_p2)*size_particle_positions + IDX_Y], - particles_positions[(intervals[idx_2].first+idx_p2)*size_particle_positions + IDX_Z]); - printf("Radius = %e (%e)\n", sqrt(dist_r2), dist_r2); - } } } } @@ -701,10 +747,6 @@ public: long int neighbors_indexes[27]; const int nbNeighbors = my_tree.getNeighbors(currenct_cell_idx, neighbors, neighbors_indexes, false); - if(iter_cell.first == 3669){ // TODO - printf("Box %ld has %d neighbors\n", iter_cell.first, nbNeighbors); - } - for(size_t idx_1 = 0 ; idx_1 < intervals.size() ; ++idx_1){ // with other interval for(size_t idx_neighbor = 0 ; idx_neighbor < nbNeighbors ; ++idx_neighbor){ @@ -726,24 +768,6 @@ public: &particles_current_rhs[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_rhs], dist_r2); } - if((inout_index_particles[(intervals[idx_1].first+idx_p1)] == 3 - && inout_index_particles[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)] == 52) - || (inout_index_particles[(intervals[idx_1].first+idx_p1)] == 52 - && inout_index_particles[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)] == 3)){// TODO - printf("interaction between :\n"); - printf("index %ld (%ld) pos %e %e %e\n", - (intervals[idx_1].first+idx_p1), inout_index_particles[(intervals[idx_1].first+idx_p1)], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_X], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_Y], - particles_positions[(intervals[idx_1].first+idx_p1)*size_particle_positions + IDX_Z]); - printf("index %ld (%ld) pos %e %e %e\n", - ((*neighbors[idx_neighbor])[idx_2].first+idx_p2), - inout_index_particles[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)], - particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_X], - particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_Y], - particles_positions[((*neighbors[idx_neighbor])[idx_2].first+idx_p2)*size_particle_positions + IDX_Z]); - printf("Radius = %e (%e)\n", sqrt(dist_r2), dist_r2); - } } } } diff --git a/bfps/cpp/particles/p2p_tree.hpp b/bfps/cpp/particles/p2p_tree.hpp index 4715dfad..9f146644 100644 --- a/bfps/cpp/particles/p2p_tree.hpp +++ b/bfps/cpp/particles/p2p_tree.hpp @@ -82,7 +82,6 @@ public: neigh_z_pbc -= nb_cell_levels[IDX_Z]; } - // Not the current cell if(include_target || neigh_x_pbc != idx_x || neigh_y_pbc != idx_y || neigh_z_pbc != idx_z){ const long int idx_neigh = get_cell_idx(neigh_x_pbc, neigh_y_pbc, -- GitLab