WarpX
WarpX copied to clipboard
DSMC: add minimum reaction weight for particle splitting
The DSMC implementation has an issue when simulating collisions between species with vastly different macroparticle numbers. Consider a case where 1 neutral macroparticle collides with an ion plasma with many macroparticles (N). The single neutral is paired with each ion, reducing it's weight by 1/N. If one of those possible collisions occur and the new, small neutral moves to a new cell, it will again be paired with N ions for collision consideration with another 1/N reduction in weight. This process can rapidly lead to extremely low weight particles.
In this PR a control for this process is introduced. The user can now specify a "minimum splitting weight". If the reaction weight is less than this number, the particles that would have been split off the colliding particles are immediately merged back into the colliding particles. The net effect is that the colliding particles experience a velocity kick proportional to the fraction of weight that collided. This approach is the same as the "standard" DSMC technique mentioned by @JustinRayAngus a few months back. The implementation can now be reduced to that standard approach if desired by the user simply by specifying a very large minimum_splitting_weight
.