rizer.plasma.equations#

Functions to compute plasma properties.

Functions#

electron_thermal_velocity(→ T)

Compute the thermal electron velocity \(v_{th, e}\).

weakly_ionized_electrical_conductivity(→ T)

Return the electrical conductivity \(\sigma\) for a weakly ionized plasma.

weakly_ionized_collision_frequency(→ T)

Return the collision frequency \(\nu_{en}\) for a weakly ionized plasma.

debye_length(→ T)

Return the Debye length \(\lambda_D\) for a plasma.

average_impact_parameter(→ T)

Return the average impact parameter \(\bar{b_0}\) for a collision between an electron and ion.

coulomb_radius(→ T)

Return the Coulomb radius \(r_{Coul}\) for a plasma.

coulomb_logarithm(→ T)

Return the Coulomb logarithm \(\Lambda\) for a plasma.

mean_electron_energy_eV_from_temperature_K(→ T)

Return the mean electron energy in eV from the electron temperature in K.

temperature_K_from_mean_electron_energy_eV(→ T)

Return the electron temperature in K from the mean electron energy in eV.

maxwellian_distribution_function_in_energy(→ numpy.ndarray)

Return the Maxwellian distribution function in energy for a given temperature.

compute_electronic_reaction_rate_constant(→ float)

Return the electronic reaction rate constant for a given electron temperature.

compute_two_body_electronic_reaction_rate_constant(→ float)

Return the electronic reaction rate constant of a two-body electronic reaction.

get_energy_grid(→ numpy.ndarray)

Return an energy grid for a given temperature.

Module Contents#

rizer.plasma.equations.electron_thermal_velocity[T: (float, numpy.ndarray)](T_e: T) T#

Compute the thermal electron velocity \(v_{th, e}\).

Parameters:

T_e (float or numpy.ndarray) – Electron temperature [K]

Returns:

Electron thermal velocity [m/s]

Return type:

float or numpy.ndarray

Notes

The electron thermal velocity (or mean speed) is the expected value of the electron speed distribution [WikiThermalVelocity].

\[v_{th, e} = \sqrt{\frac{8 k_B T_e}{\pi m_e}}\]

where:

  • \(k_B\) is the Boltzmann constant,

  • \(T_e\) is the electron temperature,

  • \(m_e\) is the electron mass.

rizer.plasma.equations.weakly_ionized_electrical_conductivity[T: (float, numpy.ndarray)](n_e: T, nu_en: T) T#

Return the electrical conductivity \(\sigma\) for a weakly ionized plasma.

The formula assumes that electrons does not oscillate in the plasma (i.e. \(\omega=0\))

Parameters:
Returns:

Electrical conductivity [S/m]

Return type:

float or numpy.ndarray

Notes

The electrical conductuctivity of a weakly ionized plasma is given by equation 2.7 of Raizer [Raizer1991]:

\[\sigma = \frac{n_e e^2}{m_e \nu_{en}}\]

with:

  • \(n_e\) the electron density,

  • \(e\) the elementary charge,

  • \(m_e\) the electron mass,

  • \(\nu_{en}\) the elastic collision frequency.

rizer.plasma.equations.weakly_ionized_collision_frequency[T: (float, numpy.ndarray)](n_n: T, sigma_elastic: T, v_e: T) T#

Return the collision frequency \(\nu_{en}\) for a weakly ionized plasma.

Parameters:
Returns:

Collision frequency [Hz]

Return type:

float or numpy.ndarray

Notes

The collision frequency is the number of collisions per unit time. In Raizer [Raizer1991], it is defined by equation 2.2 as:

\[\nu_{en} = n_n \sigma_{elastic} v_e\]

with:

  • \(n_n\) the neutral density,

  • \(\sigma_{elastic}\) the elastic collision cross section,

  • \(v_e\) the electron thermal velocity.

rizer.plasma.equations.debye_length[T: (float, numpy.ndarray)](n_e: T, T_e: T) T#

Return the Debye length \(\lambda_D\) for a plasma.

It is assumed that:

  • Ions do not play a role in the screening of the electric field.

  • The permittivity of the plasma is the same as the permittivity of free space.

Parameters:
Returns:

Debye length [m]

Return type:

float or numpy.ndarray

Notes

The Debye length is the distance over which charge screening occurs. It is defined in [WikiDebyeLength], and in (II 8.2) of [Mitchner1973], as:

\[\lambda_D = \sqrt{\frac{\epsilon_0 k_B T_e}{n_e e^2}}\]

with:

  • \(\epsilon_0\) the vacuum permittivity,

  • \(k_B\) the Boltzmann constant,

  • \(T_e\) the electron temperature,

  • \(n_e\) the electron density,

  • \(e\) the elementary charge.

rizer.plasma.equations.average_impact_parameter[T: (float, numpy.ndarray)](T_e: T, Z: int = 1) T#

Return the average impact parameter \(\bar{b_0}\) for a collision between an electron and ion.

Parameters:
  • T_e (float or numpy.ndarray) – Electron temperature [K]

  • Z (int, optional) – Ion charge number, by default 1

Returns:

Average impact parameter [m]

Return type:

float or numpy.ndarray

Notes

The average impact parameter is defined in (II 8.6) of [Mitchner1973], as:

\[\bar{b_0} = \frac{Z e^2}{12 \pi \epsilon_0 k_B T_e}\]

with:

  • \(Z\) the ion charge number,

  • \(e\) the elementary charge,

  • \(\epsilon_0\) the vacuum permittivity,

  • \(k_B\) the Boltzmann constant,

  • \(T_e\) the electron temperature.

rizer.plasma.equations.coulomb_radius[T: (float, numpy.ndarray)](T_e: T, Z: int = 1) T#

Return the Coulomb radius \(r_{Coul}\) for a plasma.

Parameters:
  • T_e (float or numpy.ndarray) – Electron temperature [K]

  • Z (int, optional) – Ion charge number, by default 1

Returns:

Coulomb radius [m]

Return type:

float or numpy.ndarray

Notes

The Coulomb radius is defined in [Raizer1991], section 2.2.2, “by equating the mean thermal energy of an electron to the energy of its interaction with the ion”, resulting in:

\[r_{Coul} = \frac{Z e^2}{4 \pi \epsilon_0} \frac{1}{\frac{3}{2} k_B T_e}\]

with:

  • \(Z\) the ion charge number,

  • \(e\) the elementary charge,

  • \(\epsilon_0\) the vacuum permittivity,

  • \(k_B\) the Boltzmann constant,

  • \(T_e\) the electron temperature.

rizer.plasma.equations.coulomb_logarithm[T: (float, numpy.ndarray)](n_e: T, T_e: T, model: str = 'Raizer', Z: int = 1) T#

Return the Coulomb logarithm \(\Lambda\) for a plasma.

Parameters:
  • n_e (float or numpy.ndarray) – Electron density [m^-3]

  • T_e (float or numpy.ndarray) – Electron temperature [K]

  • model (str, optional) – Model to use for the Coulomb logarithm, by default “Raizer”.

  • Z (int, optional) – Ion charge number, by default 1

Returns:

Coulomb logarithm

Return type:

float or numpy.ndarray

Notes

The Coulomb logarithm is defined in [UTexasCoulombLog] as:

\[\Lambda = \log\left(\frac{\lambda_D}{r_{Coul}}\right)\]

with:

  • \(\lambda_D\) the Debye length,

  • \(r_{Coul}\) the Coulomb radius.

In Mitchner’s model [Mitchner1973], the Coulomb logarithm is defined as (II 8.7a):

\[\Lambda = \log\left(\frac{\lambda_D}{\bar{b_0}}\right)\]

with: * \(\bar{b_0}\) the average impact parameter.

Often, the Coulomb logarithm value is between 5 and 20.

rizer.plasma.equations.mean_electron_energy_eV_from_temperature_K[T: (float, numpy.ndarray)](temperature_in_kelvin: T) T#

Return the mean electron energy in eV from the electron temperature in K.

Parameters:

temperature_in_kelvin (float or numpy.ndarray) – Electron temperature [K]

Returns:

Mean electron energy [eV]

Return type:

float or numpy.ndarray

Notes

The mean electron energy is given:

\[E_e = \frac{3}{2} k_B T_e\]

with:

  • \(k_B\) the Boltzmann constant,

  • \(T_e\) the electron temperature.

rizer.plasma.equations.temperature_K_from_mean_electron_energy_eV[T: (float, numpy.ndarray)](mean_electron_energy_in_eV: T) T#

Return the electron temperature in K from the mean electron energy in eV.

Parameters:

mean_electron_energy_in_eV (float or numpy.ndarray) – Mean electron energy [eV]

Returns:

Electron temperature [K]

Return type:

float or numpy.ndarray

Notes

The electron temperature is given:

\[T_e = \frac{2}{3 k_B} E_e\]

with:

  • \(k_B\) the Boltzmann constant,

  • \(E_e\) the mean electron energy.

rizer.plasma.equations.maxwellian_distribution_function_in_energy(T: float, energies: numpy.ndarray) numpy.ndarray#

Return the Maxwellian distribution function in energy for a given temperature.

Parameters:
Returns:

Maxwellian distribution function in energy [J^-1]

Return type:

numpy.ndarray

Notes

The Maxwellian distribution function in energy is given by equation 9 in [WikiMaxwellBoltzmannDistribution]:

\[f(E) = 2 \sqrt{\frac{E}{\pi}} \left(\frac{1}{k_B T}\right)^{3/2} \exp\left(-\frac{E}{k_B T}\right)\]

with:

  • \(E\) the energy,

  • \(k_B\) the Boltzmann constant,

  • \(T\) the temperature.

rizer.plasma.equations.compute_electronic_reaction_rate_constant(T: float, cross_section: numpy.ndarray, energies: numpy.ndarray) float#

Return the electronic reaction rate constant for a given electron temperature.

The reaction rate constant is computed, assuming the distribution function is Maxwellian. It is also assumed that electrons are much more energetic than heavy particles.

Parameters:
Returns:

Reaction rate constant [m^3/s]

Return type:

float

Notes

The reaction rate constant is given by (See also eq. 1.38 in [Pierrot1999]):

\[k(T) = \int_0^\infty \sigma(E) v(E) f(E) dE\]

with:

  • \(\sigma(E)\) the cross section at energy \(E\) [m^2],

  • \(v(E)\) the velocity at energy \(E\) [m/s],

  • \(f(E)\) the Maxwellian distribution function in energy at energy \(E\) [J^-1],

  • \(dE\) the differential of energy [J].

The integral is computed with the trapezoidal rule.

rizer.plasma.equations.compute_two_body_electronic_reaction_rate_constant(T_e: float, cross_section: numpy.ndarray, energies: numpy.ndarray, nb_points_integrand: int = 100000) float#

Return the electronic reaction rate constant of a two-body electronic reaction.

The following assumptions are made:

  • Distribution functions (in velocity) of both species are Maxwellian, at a temperature T_e for electrons and T for the other species (e.g. ions, neutrals).

  • The mass of an electron is much smaller than the mass of the other species (e.g. ion, neutral).

Parameters:
  • T_e (float) – Electron temperature [K]

  • cross_section (numpy.ndarray) – Cross section values [m^2]

  • energies (numpy.ndarray) – Energy values [J]

  • nb_points_integrand (int, optional) – Number of points to use for the numerical integration, by default 100_000.

Returns:

Reaction rate constant [m^3/s]

Return type:

float

Notes

The reaction rate constant is given by (See Ex. II-6.19b in [Mitchner1973]):

\[k = \iint_{-\infty}^{+\infty} f_1(\vec{C}) f_2(\vec{W})|\vec{C}-\vec{W}| Q_{12}(|\vec{C}-\vec{W}|) d^3 C d^3 W\]

with:

  • \(Q_{12}(|\vec{C}-\vec{W}|)\) the (velocity-dependent) cross section at relative velocity \(|\vec{C}-\vec{W}|\) [m^2],

  • \(f_1(\vec{C})\) the distribution function of species 1 (e.g. electrons) in velocity space [s^3/m^3] at temperature T_e,

  • \(f_2(\vec{W})\) the distribution function of species 2 (e.g. ions, neutrals) in velocity space [s^3/m^3] at temperature T,

After some manipulations, one arrives at:

\[k = \sqrt{\frac{8 k_b}{\pi}\left(\frac{T_1}{m_1}+\frac{T_2}{m_2}\right)} \int_0^{\infty} x e^{-x} Q_{12}\left(\sqrt{2 k_b\left(\frac{T_1}{m_1}+\frac{T_2}{m_2}\right) x}\right) d x\]

Using an energy-dependant cross section, the previous equation can be rewritten as:

\[k = \sqrt{\frac{8 k_b}{\pi}\left(\frac{T_1}{m_1}+\frac{T_2}{m_2}\right)} \int_0^{\infty} x e^{-x} \tilde{Q}_{12}\left(k_b \frac{m_2 T_1+m_1 T_2}{m_1+m_2} x\right) dx\]

Then, using \(m_e \ll m_2\) and \(T_e \geq T\), the previous equation can be simplified to:

\[k = \sqrt{\frac{8 k_b T_e}{\pi m_e}} \int_0^{\infty} x e^{-x} \tilde{Q}_{12}\left(k_b T_e x\right) d x\]
rizer.plasma.equations.get_energy_grid(T: float, N: int = 1000000) numpy.ndarray#

Return an energy grid for a given temperature.

The energy grid is defined as a linear space from eps to 100 times the thermal energy of electrons at the given temperature. The number of points in the grid can be specified with the parameter N.

The thermal energy of electrons is given by:

\[\]

E_{th} = frac{3}{2} k_B T

with:

  • \(k_B\) the Boltzmann constant,

  • \(T\) the electron temperature.

Parameters:
  • T (float) – Electron temperature [K]

  • N (int, optional) – Number of points in the energy grid, by default 1_000_000

Returns:

Energy grid [J]

Return type:

numpy.ndarray