Skip to content

WIP: Implement impact ionization between plasma species#1384

Open
emarchet wants to merge 7 commits intoHi-PACE:developmentfrom
emarchet:test_coll
Open

WIP: Implement impact ionization between plasma species#1384
emarchet wants to merge 7 commits intoHi-PACE:developmentfrom
emarchet:test_coll

Conversation

@emarchet
Copy link
Copy Markdown
Contributor

@emarchet emarchet commented May 1, 2026

This PR proposes an implementation of impact ionization between plasma species. The algorithm is based on Pérez et al. (2012), with some modifications described by Higginson et al. (2020) (previously discussed in BLAST-WarpX/warpx#5091).

At the moment, only electron-driven impact has been implemented, for a limited set of species.
Collision.cpp file defines the logic behind per-cell particle collisions and the creation of new electrons,
ImpactIonizationSigma.H calculates the cross section describing the ionization probability and in ImpactIonization.H the particle properties are redistributed after the impact.
The latter is derived from WarpX SplitAndScatterFunc.H, with some changes to include relativistic effects.

Input

The following input defines impact ionization for a 1% Hydrogen plasma. No beams are initialized and a temperature of 100 eV is set.

plasmas.names = electrons ions neutrals
plasmas.neutralize_background = 0

electrons.element = electron
electrons.density(x,y,z) = 1.e20
electrons.ppc = 4 4
electrons.temperature_in_ev = 100

ions.element = H  
ions.density(x,y,z) = 1.e20
ions.ppc = 4 4
ions.initial_ion_level = 1
ions.temperature_in_ev = 100

neutrals.element = H
neutrals.density(x,y,z) = 1.e22
neutrals.ppc = 4 4         
neutrals.initial_ion_level = 0
neutrals.temperature_in_ev = 100

# Collisions
neutrals.can_impact_ionize = 1

hipace.impact_ionization = prova
prova.type = electron_impact
prova.projectile = electrons
prova.target = neutrals
prova.new_electron = electrons

Testing

In the following, the average electron density over 500 ps (for a single time step), is compared with the time-integrated, theoretical reaction rate:

$$\frac{dn_e}{dt} = n_e n_n \left\langle \sigma_{iz}(E)\,v(E)\,f_E(E,T_e) \right\rangle.$$
image

The code is being further tested, both with and without an input beam, for hydrogen and argon plasmas.

@emarchet emarchet marked this pull request as ready for review May 1, 2026 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants