optmat.gas.ionisation#

The parameters of the strong-field ionisation rates of the gases (TC-439).

Tunnelling and multiphoton ionisation rates (ADK, PPT, molecular ADK) are evaluated from a handful of properties of the atom or molecule. This module supplies them, curated, with their sources and uncertainties. The rates of the noble gases are optmat.gas.ionisation_rates (TC-652); the molecules’ stay with the propagation code:

  • the first ionisation energy \(I_p\) (adiabatic or vertical, as chosen and stated per gas);

  • the ionising orbital: its label, orbital angular momentum \(l\) (an atom’s valence shell) and magnetic quantum number \(m\) along the molecular axis;

  • its structure coefficients \(C_l\), the asymptotic expansion of the orbital in partial waves (Tong, Zhao & Lin 2002, eqs. 1-2), from each curated tabulation;

  • the static polarizabilities of the neutral and of its cation, for the Stark shift of the ionisation energy and the dipole correction of the PPT rate. The neutral’s is the static limit of the electronic part of the fitted dispersion model here (the infrared, nuclear part does not follow an optical field), with the fit’s uncertainty;

  • the barrier-suppression constant of Tong & Lin (2005) where tabulated.

From \(I_p\) follow the effective principal quantum number \(n^* = Z / \kappa\), \(\kappa = \sqrt{2 I_p}\) (atomic units, \(Z\) the charge of the ion), and the asymptotic coefficient of the ADK and PPT rates in the Hartree approximation,

\[|C_{n^* l^*}|^2 = \frac{2^{2 n^*}}{n^* \, \Gamma(n^* + l^* + 1) \, \Gamma(n^* - l^*)}, \qquad l^* = n^* - 1,\]

(Ammosov, Delone & Krainov 1986, eqs. 17 and 19, \(l^* = n_0^* - 1\) with \(n_0^*\) the ground state’s), and its Stirling form (their eq. 20, which is misprinted; see adk_coefficient_squared()).

Every choice (which ionisation energy, which tabulation) is made in data/gas/ionisation.toml with its reason, and every value points to the curated dataset it comes from.

Module Attributes

IONISATION_FILE

The per-gas choices of the ionisation parameters, each with its reason.

Functions

adk_coefficient_squared(n_star, l_star)

Return the Stirling form of |C_{n* l*}|^2 (Ammosov's eq.

combined_structure_coefficients(tabulation)

Read the structure coefficients of an orbital given in several datasets.

electronic_static_polarizability(gas)

Return the static electronic polarizability of a gas from its fitted model.

hartree_coefficient_squared(n_star, l_star)

Return the asymptotic coefficient |C_{n* l*}|^2 of the ADK and PPT rates.

ionisation_parameters(gas)

Return the curated ionisation parameters of a gas.

structure_coefficients(dataset)

Read one tabulation of structure coefficients.

Classes

IonisationParameters(gas, ionization_energy, ...)

The curated parameters of a gas's strong-field ionisation rates.

StructureCoefficients(source, model, ...[, ...])

The asymptotic coefficients of an ionising orbital, from one tabulation.

optmat.gas.ionisation.IONISATION_FILE = PosixPath('/home/docs/checkouts/optmat/checkouts/7/src/optmat/data/gas/ionisation.toml')#

The per-gas choices of the ionisation parameters, each with its reason.

class optmat.gas.ionisation.IonisationParameters(gas, ionization_energy, ionization_energy_sigma, ionization_energy_kind, ionization_energy_source, orbital, orbital_l, orbital_m, structure, default_structure, polarizability, polarizability_sigma, polarizability_source, vertical_ionization_energy=None, vertical_ionization_energy_source='', ion_polarizability=None, ion_polarizability_source='', barrier_suppression_alpha=None, barrier_suppression_source='', barrier_suppression_zhang=None, barrier_suppression_zhang_source='', effective_charge=None, effective_charge_source='', reasons=<factory>)[source]#

Bases: object

The curated parameters of a gas’s strong-field ionisation rates.

Attributes:
gasGas

The gas.

ionization_energyfloat

First ionisation energy, J.

ionization_energy_sigmafloat

Its one-sigma uncertainty, J; NaN where the source states none.

ionization_energy_kindstr

adiabatic or vertical (the two coincide for an atom).

ionization_energy_sourcestr

The dataset key.

orbitalstr

The ionising orbital.

orbital_lint or None

The orbital angular momentum of an atom’s valence shell (the l of the ADK and PPT angular factor); None for a molecule.

orbital_mint

The magnetic quantum number of the orbital (along a molecule’s axis).

structuredict of str to StructureCoefficients

The curated tabulations of the orbital’s coefficients, by name.

default_structurestr or None

The name of the recommended tabulation, or None where none is published.

polarizabilityfloat

Static electronic polarizability of the neutral, C m^2/V.

polarizability_sigmafloat

Its one-sigma uncertainty, C m^2/V.

polarizability_sourcestr

The model it is the static limit of.

vertical_ionization_energyfloat or None

The vertical ionisation energy of a molecule, J, where it differs and is curated: the energy at the neutral’s geometry, which a tunnelling rate in the fixed-nuclei approximation sees (TC-444).

vertical_ionization_energy_sourcestr

The dataset key, or an empty string.

ion_polarizabilityfloat or None

Static polarizability of the cation, C m^2/V, where curated.

ion_polarizability_sourcestr

The dataset key, or an empty string.

barrier_suppression_alphafloat or None

Tong & Lin’s (2005) alpha, where tabulated.

barrier_suppression_sourcestr

The dataset key, or an empty string.

barrier_suppression_zhangtuple of float or None

Zhang, Lan & Lu’s (2014) a1, a2, a3: the rate is W_ADK exp(a1 x^2 + a2 x + a3) with x = F / F_b (the sign of their eq. 8 corrected, TC-542).

barrier_suppression_zhang_sourcestr

The dataset key, or an empty string.

effective_chargefloat or None

Talebpour, Yang & Chin’s (1999) effective charge of N2 or O2: a constant fitted within their PPT rate with l = m = 0, not a property of the molecule (for O2 fitted with I_p = 12.55 eV, TC-542).

effective_charge_sourcestr

The dataset key, or an empty string.

reasonsdict of str to str

Why each choice was made (from ionisation.toml).

barrier_suppression_alpha: float | None = None#
barrier_suppression_source: str = ''#
barrier_suppression_zhang: tuple[float, float, float] | None = None#
barrier_suppression_zhang_source: str = ''#
default_structure: str | None#
effective_charge: float | None = None#
effective_charge_source: str = ''#
gas: Gas#
property hartree_coefficient_squared: float#

The PPT and ADK |C_{n* l*}|^2 in the Hartree approximation.

Returns:
float

hartree_coefficient_squared() at n* and l* = n* - 1.

ion_polarizability: float | None = None#
ion_polarizability_source: str = ''#
ionization_energy: float#
property ionization_energy_au: float#

The ionisation energy in hartree.

Returns:
float

I_p / E_h.

ionization_energy_kind: str#
ionization_energy_sigma: float#
ionization_energy_source: str#
property kappa: float#

kappa = sqrt(2 I_p) in atomic units.

Returns:
float

The decay constant of the orbital’s asymptotic tail, 1/a0.

property l_star: float#

The effective orbital quantum number of ADK, n* - 1 (Ammosov, eq. 17).

Returns:
float

n* - 1.

property n_star: float#

The effective principal quantum number Z / kappa of a singly charged ion.

Returns:
float

1 / sqrt(2 I_p) with I_p in hartree.

orbital: str#
orbital_l: int | None#
orbital_m: int#
polarizability: float#
property polarizability_difference: float | None#

The neutral’s polarizability less the cation’s, C m^2/V.

In a static field F each state’s energy falls by alpha F^2 / 2, so the ionisation energy rises by (alpha_0 - alpha_+) F^2 / 2: the Stark shift of the PPT rate.

Returns:
float or None

alpha_0 - alpha_+, or None where the cation’s is not curated.

polarizability_sigma: float#
polarizability_source: str#
reasons: Mapping[str, str]#
structure: Mapping[str, StructureCoefficients]#
vertical_ionization_energy: float | None = None#
vertical_ionization_energy_source: str = ''#
class optmat.gas.ionisation.StructureCoefficients(source, model, orbital, m, coefficients, normalisation, projections=<factory>)[source]#

Bases: object

The asymptotic coefficients of an ionising orbital, from one tabulation.

Attributes:
sourcestr

The curated dataset’s key.

modelstr

The theory the coefficients belong to (moadk, adk, wfat).

orbitalstr

The orbital, as the source names it.

mint

The magnetic quantum number along the molecular axis (an atom’s m); 0 for a combination of several (a non-linear molecule).

coefficientsdict of int to float

C_l by partial wave l, as printed (signs kept). For a combination of datasets (a non-linear molecule), the root of partial_wave_squares: what the average over orientations needs, not the coefficients of an aligned molecule.

normalisationstr

The source’s definition of the coefficients.

projectionsdict of (int, int) to complex

C_lm by (l, m) and orbital index, as printed: the real part the value, the imaginary part the dataset’s imaginary column where it has one. Keys are (orbital, l, m), the orbitals numbered in the order given.

coefficients: Mapping[int, float]#
m: int#
model: str#
normalisation: str#
orbital: str#
property partial_wave_squares: dict[int, float]#

The sum over m of \(|C_{lm}|^2\) per l, averaged over orbitals.

By the orthogonality of the rotation matrices, the average over orientations of the structure factor depends on the coefficients only through these sums (optmat.gas.molecular_ionisation_rates.isotropic_structure_factors()). The orbitals of a degenerate shell are rotations of one another and have the same sums; they are averaged, and their number is part of the count of electrons.

Returns:
dict of int to float

\(\langle \sum_m |C_{lm}|^2 \rangle\) by l.

projections: Mapping[tuple[int, int, int], complex]#
source: str#
optmat.gas.ionisation.adk_coefficient_squared(n_star, l_star)[source]#

Return the Stirling form of |C_{n* l*}|^2 (Ammosov’s eq. 20, corrected).

Stirling’s formula for the two Gamma functions of eq. (19) gives (4 e^2 / (n*^2 - l*^2))^n* ((n* - l*) / (n* + l*))^(l* + 1/2) / (2 pi n*). Ammosov, Delone & Krainov print eq. (20) with 4 e for 4 e^2 and the ratio inverted, (n* + l*) / (n* - l*): as printed it contradicts both their eq. (19) and, at l* = 0, their eq. (11) (TC-441).

Parameters:
n_starfloat

Effective principal quantum number, > 0.

l_starfloat

Effective orbital quantum number, |l*| < n*.

Returns:
float

The corrected eq. (20).

Examples

At l* = 0 it is their eq. (11) squared, (2 e / n*)^(2 n*) / (2 pi n*):

>>> f"{adk_coefficient_squared(1.0, 0.0):.4f}"
'4.7040'
optmat.gas.ionisation.combined_structure_coefficients(tabulation)[source]#

Read the structure coefficients of an orbital given in several datasets.

A non-linear molecule’s orbital has coefficients at several m for each l, and a degenerate shell several orbitals: one dataset per orbital and m (the parameter orbital naming the orbital). The result keeps every coefficient in StructureCoefficients.projections; its coefficients are the roots of StructureCoefficients.partial_wave_squares.

Parameters:
tabulationsequence of Dataset

tunnelling_structure_coefficient datasets of one source.

Returns:
StructureCoefficients

The combination.

Raises:
DataError

If a dataset holds another quantity, or two hold the same orbital and m.

optmat.gas.ionisation.electronic_static_polarizability(gas)[source]#

Return the static electronic polarizability of a gas from its fitted model.

The fitted model’s terms are the electronic oscillator strengths, then the fixed infrared (vibrational) bands and the magnetic term. The electronic static limit is the sum of the fitted terms’ f_i / E_i^2 alone: in an optical field the nuclei do not follow, so a Stark shift sees the electronic polarizability (TC-441).

Parameters:
gasGas or str

The gas.

Returns:
tuple of (float, float, str)

The polarizability and its one-sigma uncertainty (Birge-scaled), C m^2/V, and the model’s name.

optmat.gas.ionisation.hartree_coefficient_squared(n_star, l_star)[source]#

Return the asymptotic coefficient |C_{n* l*}|^2 of the ADK and PPT rates.

Ammosov, Delone & Krainov (1986), eq. (19): the Coulomb asymptotic wave function with the effective quantum numbers in place of n and l.

Parameters:
n_starfloat

Effective principal quantum number Z / sqrt(2 I_p), > 0.

l_starfloat

Effective orbital quantum number, n* - 1 in ADK’s choice.

Returns:
float

2^(2 n*) / (n* Gamma(n* + l* + 1) Gamma(n* - l*)).

Examples

Hydrogen (n* = 1, l* = 0) gives 4, the square of C_0 = 2:

>>> hartree_coefficient_squared(1.0, 0.0)
4.0
optmat.gas.ionisation.ionisation_parameters(gas)[source]#

Return the curated ionisation parameters of a gas.

Parameters:
gasGas or str

The gas.

Returns:
IonisationParameters

Its parameters, each with its source.

Raises:
DataError

If the gas has no ionisation parameters.

optmat.gas.ionisation.structure_coefficients(dataset)[source]#

Read one tabulation of structure coefficients.

Parameters:
datasetDataset

A tunnelling_structure_coefficient dataset, one row per partial wave.

Returns:
StructureCoefficients

The coefficients by l.

Raises:
DataError

If the dataset holds another quantity or a row is not an integer l.