V&V Campaigns Hub
Key Highlights
- LoKI-B coupling: over the 12 pressures from 0.19 to 10 Torr, pyFrost-GM reproduces the Dias et al. (2023) model to a mean of 0.9 % in E/N, 0.3 % in gas temperature and 1.8 % in both O($^3$P) and O$_2(a^1\Delta_g)$. The two main O-atom sources swap order at 1.46 Torr (paper: 1.4 Torr).
- Second solver, same answer: MultiBolt with N=2 solves the same Boltzmann problem as LoKI-B and agrees with it to within 0.4 points on every mean deviation.
- Multi-term effect, now measurable: MultiBolt N=10 needs 1.7–4.3 % less field than N=2 and gives 2–4 % less O($^3$P).
- Faster than the reference code: at 1 Torr, one pressure point runs in 7.9 minutes on one core, against 11.8 minutes for LoKI-GM (MATLAB) on the same laptop.
All ten figures as one PDF →
pyFrost-GM is a Python global model for low-temperature plasma chemistry. In Campaign 2 we coupled its oxygen chemistry to two independent electron Boltzmann solvers. LoKI-B uses the standard two-term approximation. MultiBolt can also expand the electron distribution to more terms (here N=2 and N=10). We checked both against the oxygen benchmark of Dias et al. (2023): a 30 mA DC discharge from 0.19 to 10 Torr.
The benchmark and the three runs
Each run covers the paper's 12 pressures under its conditions. The O($^3$P) wall recombination probability is taken per pressure from the paper's Fig. 2, and the gas flow rises linearly from 2 sccm at 0.2 Torr to 10 sccm at 10 Torr, as Alves et al. (2026) state. The populations of the electronic and vibrational states computed by the chemistry are fed back into the Boltzmann solver. We ran the sweep three times: with LoKI-B, with MultiBolt N=2 and with MultiBolt N=10.
The table gives the mean deviation from the paper's model curves over the 12 pressures, with the range in brackets. $n_e$ is compared with the LoKI-GM results of Alves et al. (2026), our reference for it since Campaign 1.
| Quantity | LoKI-B | MultiBolt N=2 | MultiBolt N=10 |
|---|---|---|---|
| E/N | 0.9 % (+0.1 to +3.8 %) | 1.2 % (+0.2 to +4.1 %) | 2.5 % (−3.7 to +2.3 %) |
| $T_g$ | 0.3 % (−0.2 to +0.8 %) | 0.2 % (−0.2 to +0.6 %) | 0.4 % (−0.5 to −0.2 %) |
| $n_e$ (vs Alves 2026) | 1.5 % (−7.4 to +0.1 %) | 1.9 % (−7.7 to −0.4 %) | 2.1 % (−5.2 to +3.0 %) |
| O($^3$P) | 1.8 % (−5.4 to +3.9 %) | 1.9 % (−6.0 to +3.1 %) | 4.7 % (−8.1 to +1.0 %) |
| O$_2(a^1\Delta_g)$ | 1.8 % (−14.0 to +1.0 %) | 1.8 % (−14.0 to +1.2 %) | 2.5 % (−13.5 to +3.3 %) |
| R6 share of O production | 0.3 % (−1.5 to +0.5 %) | 0.3 % (−1.3 to +0.6 %) | 0.6 % (−0.4 to +1.1 %) |
| R7 share of O production | 0.5 % (−0.4 to +1.2 %) | 0.5 % (−0.4 to +1.2 %) | 2.0 % (−3.9 to +1.0 %) |
LoKI-B and MultiBolt N=2 agree closely, as they should: MultiBolt is given the collision set, populations and superelastic weights that LoKI-B uses (only the rotational losses are missing). The ranges are set by the pressures below 1 Torr; see Where we differ from the paper.
Why the agreement is this close
Dias et al. computed their model with LoKI, IST Lisbon's two-term Boltzmann solver (LoKI-B) coupled to a chemistry solver. pyFrost-GM is a reimplementation of LoKI-GM, and here it runs the same oxygen reaction scheme and cross sections under the same discharge conditions. When a reimplementation is correct, it should agree with the original to about a percent. So these results verify the code; they are not an independent test of the physics. Reproducing a published model this closely is what makes the next steps meaningful: a second Boltzmann solver, a multi-term EEDF, and later other gases.
What is taken from the paper, and nothing else: the discharge current (30 mA), the tube (1 cm radius, 52.5 cm long) and the wall temperature (50 °C). Per pressure, it also supplies the O($^3$P) wall recombination probability (the paper's Fig. 2, based on the measurements of Booth et al.) and the gas flow. The measured E/N serves only as the solver's starting guess; the solver then finds the field that sustains 30 mA. Nothing is fitted to the output curves. E/N, gas temperature, all densities and all pathway shares are computed. As a check, we recomputed the pathway shares directly from the model's rate tables rather than through the plotting code. At 1 Torr R6 is 0.355 (paper 0.355) and R7 is 0.410 (paper 0.411); at 10 Torr they are 0.515 and 0.243 (paper 0.516 and 0.241).
The independent physics test is the comparison with measurements (open symbols in Figures 3–4). Where the paper's model and the measurements differ, ours differs in the same way. For example, O($^3$P) at 1–3 Torr sits below the actinometry points, as the paper's model does.
Where we differ from the paper
From 1 to 10 Torr, pyFrost-GM with LoKI-B is within 1.7 % of the paper for every quantity in the table. The differences are all below 1 Torr:
- O($^3$P): 4.5–5.4 % low at 0.30–0.76 Torr, and 3.9 % high at 0.19 Torr.
- E/N: 3.8 % high at 0.19 Torr and 2.8 % high at 0.30 Torr.
- O$_2(a^1\Delta_g)$: 14 % low at 0.19 Torr; within 1.7 % everywhere else.
- $n_e$ (against Alves et al. 2026): within 2.7 %, except 7.4 % low at 0.48 Torr.
- Vibrational distribution: the v=1/v=0 ratio is 12 % low at 0.2 Torr, and within 4 % at 1 and 10 Torr.
MultiBolt N=2 shows the same differences, so they do not come from the Boltzmann solver. We have not found their cause yet; it is one of the items for Campaign 3. MultiBolt N=10 departs from the paper a little more: O($^3$P) is up to 8 % low below 1 Torr, E/N differs by up to 3.7 %, and the R7 share by up to 3.9 %. That is the multi-term effect, which the paper's two-term model does not include.
Two input differences remain between pyFrost-GM and LoKI-GM. MultiBolt has no rotational (CAR) energy losses, which at 1 Torr change LoKI-B's electron temperature by only 0.02 %. And the electron-impact excitation of O$_2$(v=0) to v=1–4 uses the Phelps cross sections in pyFrost-GM and the Laporta ones in LoKI-GM, because LoKI-B-cpp does not accept both sets together.
Two-term vs multi-term (N=2 vs N=10)
Both MultiBolt sweeps ran on the same code, so their difference comes from the number of Legendre terms alone. With N=10, the discharge needs 1.7–4.3 % less field, $n_e$ is 2.5–3.8 % higher and O($^3$P) is 2.0–4.3 % lower than with N=2. Against the paper, which uses a two-term solver, N=10 is therefore slightly further away: a mean of 4.7 % for O($^3$P) against 1.9 % with N=2. For this oxygen discharge the multi-term correction is a few percent. The EEDFs agree in the bulk, while the N=10 tail sits higher at 0.2 and 1 Torr (Figure 5).
Need a cloud-ready, validated translation of your scientific code?
Whether it's investigating specific plasma chemistry questions or adopting these AI/V&V methodologies for your own tools, we can help build your auditable, highly deployable architecture.
Contact Us for a ConsultationReaction Pathways
O($^3$P) is created mainly by electron-impact dissociation of ground-state O$_2$: R6 (e + O$_2$ → e + 2O($^3$P)) and R7 (e + O$_2$ → e + O($^3$P) + O($^1$D)). With LoKI-B these give 86 % of O-atom production at 0.19 Torr and 76 % at 10 Torr. R7 dominates at low pressure and R6 at high pressure; they cross at 1.46 Torr (paper: 1.4 Torr). Most O($^3$P) is lost to wall recombination (R73), whose share falls from 99 % at 0.19 Torr to 71 % at 10 Torr. Volume recombination and ozone formation (R37, R38, R57) grow from nearly zero to 18 %.
As in the paper's Fig. 14a, each reaction is weighted by the oxygen atoms it produces or removes (O($^3$P) plus O($^1$D)), and shares are taken of the total over all reactions.
Vibrational Distribution Function
The O$_2(X, v)$ populations follow the paper's Fig. 15 at 0.2, 1 and 10 Torr. With LoKI-B, the v=1/v=0 ratio is 12 % low at 0.2 Torr, 3.9 % high at 1 Torr and 1.2 % low at 10 Torr. Levels v=5–30 are within 8 % at all three pressures. Both MultiBolt runs give the same populations to within a few percent.
Plasma Parameters & Species Densities
With LoKI-B, E/N falls from 118 Td at 0.19 Torr to 40 Td at 10 Torr, $n_e$ rises from $2.9 \times 10^{15}$ to $6.5 \times 10^{15}$ m$^{-3}$, and $T_g$ from 344 K to 545 K. Figures 3–4 show all three solvers against the paper's model and measurements; $n_e$ is the figure at the top of this page.
Engineering Record
Running two Boltzmann solvers side by side exposed defects in the coupling. All of them were fixed before the results above were produced, each checked against the LoKI-GM source or documentation, and the fixes to the model code are covered by regression tests.
- O$_2$(X) was counted twice. The ground state O$_2$(X) is the sum of its vibrational levels, but pyFrost-GM also carried it as a separate variable, which went out of date. The Boltzmann solver therefore saw the wrong gas composition (at 1 Torr, O$_2(a^1\Delta_g)$/O$_2$ = 0.057 instead of 0.098). The parent density is now always the sum of its levels, as in LoKI-GM.
- Vibrational rates frozen at the wrong temperature. Following LoKI-GM, the vibrational energy-transfer rates are held at the gas temperature at the start of each chemistry integration. When the Boltzmann populations were fed back, a warm restart skipped that refresh, leaving the rates at the initial 600 K and overpopulating v=1 by up to 8.7×.
- MultiBolt must solve LoKI-B’s Boltzmann problem. Cross sections that LoKI-GM uses only for rate coefficients (its "extra" files) must stay out of the Boltzmann solve, and the elastic cross sections, state populations and superelastic weights must match LoKI-B’s. MultiBolt now receives exactly LoKI-B’s problem, and every rate coefficient is computed from the resulting EEDF as LoKI-GM computes it.
- Three reactions had no rate with MultiBolt. MultiBolt’s rate names came from the cross-section files, where the products are written as "2O($^3$P)" and "2e", and the reaction matcher did not read that factor of 2. Dissociation of O$_2(a^1\Delta_g)$ and O$_2(b^1\Sigma_g^+)$ into two O atoms (R8, R10) and electron detachment from O$^-$ (R16) got zero rate, and R8 alone supplies about 10 % of O-atom production at 1 Torr. It was found because MultiBolt N=2 showed the same offset as N=10, so the offset could not be a multi-term effect.
- Drift velocity off by ~22 orders of magnitude: the output parser divided MultiBolt’s drift velocity by gas density, which is LoKI-B’s convention but not MultiBolt’s.
- O$_2$ vibrational cross sections weighted by zero: an LXCat file tagged O$_2$ processes with the atomic species name (mole fraction 0). Fixed by retagging blocks from the filename.
- LoKI-B could not parse a standard LXCat file (BSR argon): LoKI-B requires a bracketed process descriptor that is not part of the LXCat format.
- N$_2$ vibrational/rotational rates came through as zero: a regex regression, caught by the two-solver parity tests.
- The E/N root-finder stalled once the EEDF was correct: it was replaced with a bracket-then-Brent search.
Performance
Profiling showed where the time went. Each LoKI-B call started its adaptive energy grid at 100 eV and shrank it in 5 % steps, with a full Boltzmann solve at every step (15 extra solves at 1 Torr). LoKI-GM keeps the converged grid between calls, and pyFrost-GM now does the same. In addition, the cross-section files are parsed once per run rather than on every call, and the chemistry right-hand side is evaluated with index arrays rather than Python loops (17.9 to 2.3 ms per evaluation).
At 1 Torr, one pressure point dropped from 34.8 to 7.9 minutes on one core. The LoKI-GM (MATLAB) reference takes 11.8 minutes on the same laptop. We reran the full LoKI-B sweep with the faster code: every quantity matches the earlier sweep to within 6 parts in 10$^8$.
Next
- Find the cause of the differences below 1 Torr.
- Rerun the LoKI-GM (MATLAB) reference with the paper’s wall recombination probability and flow, for a like-for-like comparison of densities.
- Add rotational (CAR) losses to MultiBolt.
Bibliography
- [1] Dias T C, Guerra V and Alves L L, "A reaction mechanism for oxygen plasmas" 2023 Plasma Sources Sci. Technol. 32 084003. DOI: 10.1088/1361-6595/aceaa4
- [2] Tejero A et al, "The LisbOn KInetics Boltzmann solver" 2019 Plasma Sources Sci. Technol. 28 043001. DOI: 10.1088/1361-6595/ab0537 (Open Access)
- [3] Stephens J, "A multi-term Boltzmann equation benchmark of electron-argon cross-sections for use in low temperature plasma models" 2018 J. Phys. D: Appl. Phys. 51 125203. DOI: 10.1088/1361-6463/aaaf8b
- [4] Alves L L et al, "LoKI-GM: a global model tool for plasma chemistry studies" 2026 Plasma Sources Sci. Technol. (in preparation). DOI: 10.48550/arXiv.2607.27234
- [5] LoKI-GM (Official GitHub Repository)