Implement impact ionization between plasma species - #1384
Open
emarchet wants to merge 14 commits into
Open
Conversation
emarchet
marked this pull request as ready for review
May 1, 2026 15:49
emarchet
force-pushed
the
test_coll
branch
5 times, most recently
from
July 13, 2026 12:28
8f210db to
62c3ed9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR proposes an implementation of impact ionization between plasma species. The algorithm is based on Pérez et al. (2012), with modifications described by Higginson et al. (2020) (previously discussed in BLAST-WarpX/warpx#5091).
The current implementation supports electron-impact ionization for a limited set of target species.
Implementation
The implementation is divided among three main files:
Collision.cpphandles the per-cell collision logic and the creation of secondary electronsImpactIonizationSigma.Hevaluates the impact ionization cross section used to determine the ionization probabilityImpactIonization.Hassigns the post-collision particle properties and redistributes energy and momentum among the projectile electron, the ionized target, and the newly created electronThe latter is derived from WarpX SplitAndScatterFunc.H, with additional modifications to account for relativistic effects.
Input
The following input defines impact ionization in a 10% ionized Hydrogen plasma.
Testing
In the following, the average electron density in a uniform plasma, with no driver and an initial temperature of 10 eV, is compared with the time-integrated, theoretical reaction rate:
The code has been further tested, mostly for Hydrogen, with an electron beam driver. The plasma energy flux is used as a metric to assess the reliability of the scheme, and both Reflecting and Absorbing boundary conditions have been tested.
Figure below displays the total energy flux for three different cases:
All the results are obtained using reflecting BCs.
The figure shows that the results are affected by numerical heating, which may also be related to the increasing number of particles during the simulation.
Absorbing boundary conditions limit this effect by allowing particles to leave the simulation domain. However, particle losses introduce a net charge imbalance and may therefore affect the plasma evolution in a non-physical manner.
To further improve the module, the implementation of thermal boundary conditions is being taken into considerations.
Also, testing with Argon plasmas could be of interest.