Prevent GPU particle communication/removal bug when all particles are in the guard cells #333
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There is currently a bug in the particle communication/removal routines on GPU when all particles of a given species are on the right-hand guard cells: in this case the particles are not removed from the local domain.
Fundamentally, this is because the code computes the indices
i_min
andi_max
between which particles should be kept. When all particles are in the right hand guard cells, theni_min=0
andi_max=0
. But then a special-case portion of the code (removed in this PR) erroneously setsi_max=Ntot
.This special part of the code used to here because the last cells of
prefix_sum
used to be filled with0
. However this is no longer the case since we introducedprefill_prefix_sum
in #110.Therefore that erroneous portion can be safely removed.