ECP-WarpX / WarpX

WarpX is an advanced electromagnetic & electrostatic Particle-In-Cell code.
https://ecp-warpx.github.io
Other
309 stars 195 forks source link

[WIP] Add support for electron impact ionization in binary collisions (DSMC module) #5388

Open RemiLehe opened 1 month ago

RemiLehe commented 1 month ago

Note: could we do binary charge exchange in the same way?

TODO:

archermarx commented 3 weeks ago

I've written a test script for this feature (attached) picmi.py.txt

It should work with both MCC and DSMC, once everything is implemented

In brief, this script sets up a simulation of electrons, ions, and neutrals in a periodic box. Ionization is then allowed to happen for a short time, and the resulting electron density and temperature curves are compared to the output of very simple global model, the equations of which are given below:

image

Here, $\epsilon{iz}$ is the ionization energy and $k{iz}$ is the ionization rate coefficient, which the script computes by integrating over the provided cross sections (i.e. those from https://github.com/ECP-WarpX/warpx-data/tree/master/MCC_cross_sections/Xe)


At present, this segfaults when using DSMC after O(10-20) iterations, but completes when using MCC. When MCC is enabled, the global model neglects the depletion of neutrals. Some results obtained when using Xenon at a few electron temperatures, are given below

$T_e$ = 10 eV

Untitled

$T_e$ = 30 eV

Untitled

$T_e$ = 50 eV

Untitled


Overall, the results are close, but seem to be off from the global model in a consistent manner -- namely that WarpX ionizes less than the global model predicts that it should. The relative discrepancy gets smaller as the temperature increases but the absolute value of the temperature difference between the model and WarpX is roughtly constant. I'd appreciate some extra eyes on this to make sure both my physics or my WarpX set up are correct. The script runs fast (~11 seconds on my machine), so hopefully it will be useful for debugging the DSMC implementation. Once energy loss and excitation are added, I can update the script to incorporate those as well.

jwestern commented 1 week ago

Could this functionality be extended to do recombination? Even resulting in the deletion of the recombination product (i.e. back into the neutral "background" gas).