Cross sections
A CrossSection holds energies (eV, non-decreasing) and cross sections (m², non-negative). It is
evaluated by linear interpolation, which is the convention of the Turner et al. (2013) benchmark.
Beyond the last point the last value is used, and below threshold the result is zero.
table = plasmacoll.CrossSection( energy=[0.0, 10.0, 100.0], sigma=[1e-20, 3e-20, 1e-20], threshold=5.0)table([2.0, 50.0]) # array([0.0, 2.11e-20])Sources
Section titled “Sources”| Constructor | Use |
|---|---|
CrossSection.from_table(path) | two-column text files; delimiter, energy_unit and sigma_unit convert the columns |
plasmacoll.read_lxcat(path) | every process block of an LXCat file, as LXCatProcess with the table and comments |
CrossSection.from_function(f, energies) | an analytic fit sampled on a grid |
CrossSection.constant(sigma) | a constant cross section above an optional threshold |
CrossSection.maxwell_molecule(K, mass) | , a speed-independent frequency for benchmarks |
CrossSection.vibrational_mixture(levels, populations) | population-weighted mean of level-resolved tables |
find_lxcat_process(processes, wanted) picks an LXCat block by its kind ("IONIZATION") or by
its full PROCESS comment. For excitation and ionization blocks the threshold is the block’s
parameter line; for elastic blocks the parameter is the mass ratio
(LXCatProcess.mass_ratio).
Effective cross sections
Section titled “Effective cross sections”Many LXCat sets give an EFFECTIVE cross section instead of an ELASTIC one: the elastic
momentum-transfer cross section plus every inelastic cross section of the set. Used directly
as an elastic process next to the inelastic processes, it counts their momentum transfer twice.
Subtract them first:
processes = plasmacoll.read_lxcat("Ar.txt")elastic = plasmacoll.elastic_from_lxcat(processes, target="Ar")elastic_from_lxcat returns the ELASTIC block if the set has one, and otherwise
CrossSection.elastic_from_effective(effective, inelastic) of the EFFECTIVE block and the
set’s excitation, ionization and attachment blocks. The result is tabulated on the energies of
all tables with points on both sides of every threshold, and clipped at zero with a warning
where the set is inconsistent.
The momentum-transfer cross section belongs with isotropic scattering. With an anisotropic scattering model, use the integral elastic cross section instead.
plasmacoll does not ship cross-section data. Download sets from LXCat and cite
the databases as their terms of use require, or use tables from the literature with
from_table. The tutorials and tests use synthetic tables and Maxwell molecules, and they say
so wherever they appear.
Maxwell molecules
Section titled “Maxwell molecules”For every marker collides at , independent of its speed. Moments then relax with closed-form rates. For example, for isotropic elastic scattering
and the number of collisions follows a Poisson process. The test suite and
tutorial 2 use this to check the kinematics. Pass the reduced
mass for energy_frame="center_of_mass" and the incident mass for "lab", so that the table’s
energy-to-speed conversion matches the process.
Vibrational mixtures
Section titled “Vibrational mixtures”vibrational_mixture evaluates every level through its own threshold and inserts table points
on both sides of each threshold, so the mixture keeps the steps sharp. The populations need not
be normalized. See negative-ion sources.