diff --git a/bfps/cpp/full_code/NSVEparticlesP2P.hpp b/bfps/cpp/full_code/NSVEparticlesP2P.hpp index 6bfaa3a8632484d50d5d7973ee8faffa1624ccd4..62ae8165cec05a69b8d56e68c632152ce0669161 100644 --- a/bfps/cpp/full_code/NSVEparticlesP2P.hpp +++ b/bfps/cpp/full_code/NSVEparticlesP2P.hpp @@ -73,7 +73,7 @@ class NSVEparticlesP2P: public NSVE<rnumber> NSVE<rnumber>( COMMUNICATOR, simulation_name), - cutoff(std::numeric_limits<double>::max()){} + cutoff(10), inner_v0(1), enable_p2p(true), enable_inner(true), enable_vorticity_omega(true){} ~NSVEparticlesP2P(){} int initialize(void); diff --git a/bfps/cpp/particles/p2p_distr_mpi.hpp b/bfps/cpp/particles/p2p_distr_mpi.hpp index b009a57e97b8be046cea74cc290cab0f2327c96c..d607666a3b37358abe504c203842138ed140d92b 100644 --- a/bfps/cpp/particles/p2p_distr_mpi.hpp +++ b/bfps/cpp/particles/p2p_distr_mpi.hpp @@ -32,7 +32,6 @@ protected: int destProc; int nbLevelsToExchange; bool isRecv; - bool positionsReceived; std::unique_ptr<real_number[]> toRecvAndMerge; std::unique_ptr<real_number[]> toCompute; @@ -40,17 +39,11 @@ protected: }; enum Action{ - NOTHING_TODO, + NOTHING_TODO = 512, RECV_PARTICLES, COMPUTE_PARTICLES, - CHECK_PARTICLES, RELEASE_BUFFER_PARTICLES, - MERGE_PARTICLES, - - RECV_MOVE_NB_LOW, - RECV_MOVE_NB_UP, - RECV_MOVE_LOW, - RECV_MOVE_UP + MERGE_PARTICLES }; MPI_Comm current_com; @@ -392,7 +385,6 @@ public: descriptor.nbLevelsToExchange = nb_levels_to_send; descriptor.nbParticlesToExchange = particles_offset_layers[my_nb_cell_levels] - particles_offset_layers[my_nb_cell_levels-nb_levels_to_send]; descriptor.isRecv = false; - descriptor.positionsReceived = false; neigDescriptors.emplace_back(std::move(descriptor)); @@ -415,7 +407,6 @@ public: descriptor.nbLevelsToExchange = nb_levels_to_recv; descriptor.nbParticlesToExchange = -1; descriptor.isRecv = true; - descriptor.positionsReceived = false; neigDescriptors.emplace_back(std::move(descriptor)); @@ -507,7 +498,7 @@ public: if(NbParticlesToReceive){ descriptor.toCompute.reset(new real_number[NbParticlesToReceive*size_particle_positions]); - whatNext.emplace_back(std::pair<Action,int>{CHECK_PARTICLES, releasedAction.second}); + whatNext.emplace_back(std::pair<Action,int>{COMPUTE_PARTICLES, releasedAction.second}); mpiRequests.emplace_back(); assert(NbParticlesToReceive*size_particle_positions < std::numeric_limits<int>::max()); AssertMpi(MPI_Irecv(descriptor.toCompute.get(), int(NbParticlesToReceive*size_particle_positions), @@ -526,7 +517,6 @@ public: const partsize_t NbParticlesToReceive = descriptor.nbParticlesToExchange; assert(descriptor.toCompute != nullptr); - assert(descriptor.positionsReceived == true); descriptor.results.reset(new real_number[NbParticlesToReceive*size_particle_rhs]); in_computer.template init_result_array<size_particle_rhs>(descriptor.results.get(), NbParticlesToReceive); @@ -594,24 +584,16 @@ public: AssertMpi(MPI_Isend(descriptor.results.get(), int(NbParticlesToReceive*size_particle_rhs), particles_utils::GetMpiType(real_number()), destProc, TAG_RESULT_PARTICLES, current_com, &mpiRequests.back())); + descriptor.toCompute.release(); } ////////////////////////////////////////////////////////////////////// - /// Computation - ////////////////////////////////////////////////////////////////////// - if(releasedAction.first == CHECK_PARTICLES){ - NeighborDescriptor& descriptor = neigDescriptors[releasedAction.second]; - assert(descriptor.toCompute != nullptr); - assert(descriptor.isRecv); - descriptor.positionsReceived = true; - } - ////////////////////////////////////////////////////////////////////// - /// Computation + /// Release memory that was sent back ////////////////////////////////////////////////////////////////////// if(releasedAction.first == RELEASE_BUFFER_PARTICLES){ NeighborDescriptor& descriptor = neigDescriptors[releasedAction.second]; - assert(descriptor.toCompute != nullptr); + assert(descriptor.results != nullptr); assert(descriptor.isRecv); - descriptor.toCompute.release(); + descriptor.results.release(); } ////////////////////////////////////////////////////////////////////// /// Merge