diff --git a/Src/Arranger/FOctreeArranger.hpp b/Src/Arranger/FOctreeArranger.hpp index 9fc44513b50c3dddcfb826a55d432d739bcf5d26..f3e3bb3e025c817652fc9f151ada66c8ec811934 100755 --- a/Src/Arranger/FOctreeArranger.hpp +++ b/Src/Arranger/FOctreeArranger.hpp @@ -132,7 +132,7 @@ public: const MortonIndex particuleIndex = tree->getMortonFromPosition(partPos); if(particuleIndex != currentIndex){ - tomove.push(ConverterClass::GetParticle(particles,idxPart)); + tomove.push(ConverterClass::GetParticleAndRemove(particles,idxPart)); } } } while(octreeIterator.moveRight()); diff --git a/Src/Arranger/FOctreeArrangerProc.hpp b/Src/Arranger/FOctreeArrangerProc.hpp index 64eacbcfcd95c6df52e7e44e51b418c30cd7e252..224728cae9bdb737a70345e85cfe8374cbdd929b 100755 --- a/Src/Arranger/FOctreeArrangerProc.hpp +++ b/Src/Arranger/FOctreeArrangerProc.hpp @@ -185,7 +185,7 @@ public: if(particuleIndex != currentIndex){ // find the right interval const int procConcerned = getInterval( particuleIndex, comm.processCount(), intervals); - toMove[procConcerned].push(ConverterClass::GetParticle(particles,idxPart)); + toMove[procConcerned].push(ConverterClass::GetParticleAndRemove(particles,idxPart)); indexesToExtract.push(idxPart); } } diff --git a/Tests/Kernels/testSphericalGalaxyCsv.cpp b/Tests/Kernels/testSphericalGalaxyCsv.cpp index 7bf7d20f6a53edf603f36624a5f73657688ce9da..352622e7635b8fd36220bef417907fecf282e2d1 100755 --- a/Tests/Kernels/testSphericalGalaxyCsv.cpp +++ b/Tests/Kernels/testSphericalGalaxyCsv.cpp @@ -99,7 +99,7 @@ template <class ParticleClass> class Converter { public: template <class ContainerClass> - static ParticleClass GetParticle(ContainerClass* containers, const int idxExtract){ + static ParticleClass GetParticleAndRemove(ContainerClass* containers, const int idxExtract){ const FReal*const positionsX = containers->getPositions()[0]; const FReal*const positionsY = containers->getPositions()[1]; const FReal*const positionsZ = containers->getPositions()[2]; @@ -119,6 +119,8 @@ public: part.potential = potentials[idxExtract]; part.velocity = velocites[idxExtract]; + containers->removeParticles(&idxExtract, 1); + return part; } diff --git a/Tests/Utils/testOctreeRearrange.cpp b/Tests/Utils/testOctreeRearrange.cpp index 6536376e77d2572d623b8c4398d0da11b836d82a..9f496b19aed27d373c78eb88c0c4b47e08dda477 100755 --- a/Tests/Utils/testOctreeRearrange.cpp +++ b/Tests/Utils/testOctreeRearrange.cpp @@ -47,12 +47,13 @@ template <class ParticleClass> class Converter { public: template <class ContainerClass> - static ParticleClass GetParticle(ContainerClass* container, const int idxExtract){ + static ParticleClass GetParticleAndRemove(ContainerClass* container, const int idxExtract){ TestParticle part; part.position.setPosition( container->getPositions()[0][idxExtract], container->getPositions()[1][idxExtract], container->getPositions()[2][idxExtract]); + container->removeParticles(&idxExtract, 1); return part; } diff --git a/Tests/Utils/testOctreeRearrangeProc.cpp b/Tests/Utils/testOctreeRearrangeProc.cpp index 4c32612981b53851710035ab0fe790050b8e1c47..c1ab718c4958e57e768df08c1408d46650ec0fdd 100755 --- a/Tests/Utils/testOctreeRearrangeProc.cpp +++ b/Tests/Utils/testOctreeRearrangeProc.cpp @@ -55,12 +55,13 @@ template <class ParticleClass> class Converter { public: template <class ContainerClass> - static ParticleClass GetParticle(ContainerClass* container, const int idxExtract){ + static ParticleClass GetParticleAndRemove(ContainerClass* container, const int idxExtract){ TestParticle part; part.position.setPosition( container->getPositions()[0][idxExtract], container->getPositions()[1][idxExtract], container->getPositions()[2][idxExtract]); + container->removeParticles(&idxExtract, 1); return part; }