ebisim.plasma module

This module contains functions for computing collission rates and related plasma parameters.

@numba.vectorizeebisim.plasma.clog_ei(Ni, Ne, kbTi, kbTe, Ai, qi)

The coulomb logarithm for ion electron collisions [CLOGEI].

Parameters
  • Ni (float or numpy.ndarray) – <1/m^3> Ion density.

  • Ne (float or numpy.ndarray) – <1/m^3> Electron density.

  • kbTi (float or numpy.ndarray) – <eV> Ion temperature.

  • kbTe (float or numpy.ndarray) – <eV> Electron temperature.

  • Ai (float or numpy.ndarray) – Ion mass number.

  • qi (int or numpy.ndarray) – Ion charge state.

Returns

float or numpy.ndarray – Ion electron coulomb logarithm.

References

CLOGEI

“NRL Plasma Formulary”, J. D. Huba, Naval Research Laboratory (2019), https://www.nrl.navy.mil/ppd/sites/www.nrl.navy.mil.ppd/files/pdfs/NRL_Formulary_2019.pdf

Notes

\[\lambda_{ei} = 23 - \ln\left(N_e^{1/2} (T_e)^{-3/2} q_i\right) \quad\text{if } T_i m_e/m_i < T_e < 10 q_i^2\text{ eV}\]
\[\lambda_{ei} = 24 - \ln\left(N_e^{1/2} (T_e)^{-1}\right) \quad\text{if } T_i m_e/m_i < 10 q_i^2\text{ eV} < T_e\]
\[\lambda_{ei} = 16 - \ln\left(N_i^{1/2} (T_i)^{-3/2} q_i^2 \mu_i\right) \quad\text{if } T_e < T_i m_e/m_i\]
\[\left[\lambda_{ei} = 24 - \ln\left(N_e^{1/2} (T_e)^{-1/2}\right) \quad\text{else (fallback)} \right]\]

In these formulas N and T are given in cm^-3 and eV respectively. As documented, the function itself expects the density to be given in 1/m^3.

@numba.vectorizeebisim.plasma.clog_ii(Ni, Nj, kbTi, kbTj, Ai, Aj, qi, qj)

The coulomb logarithm for ion ion collisions [CLOGII].

Parameters
  • Ni (float or numpy.ndarray) – <1/m^3> Ion species “i” density.

  • Nj (float or numpy.ndarray) – <1/m^3> Ion species “j” density.

  • kbTi (float or numpy.ndarray) – <eV> Ion species “i” temperature.

  • kbTj (float or numpy.ndarray) – <eV> Ion species “j” temperature.

  • Ai (float or numpy.ndarray) – Ion species “i” mass number.

  • Aj (float or numpy.ndarray) – Ion species “j” mass number.

  • qi (int or numpy.ndarray) – Ion species “i” charge state.

  • qj (int or numpy.ndarray) – Ion species “j” charge state.

Returns

float or numpy.ndarray – Ion ion coulomb logarithm.

References

CLOGII

“NRL Plasma Formulary”, J. D. Huba, Naval Research Laboratory (2019), https://www.nrl.navy.mil/ppd/sites/www.nrl.navy.mil.ppd/files/pdfs/NRL_Formulary_2019.pdf

Notes

\[\lambda_{ij} = \lambda_{ji} = 23 - \ln \left( \frac{q_i q_j(\mu_i+\mu_j)}{\mu_i T_j+\mu_j T_i} \left( \frac{n_i q_i^2}{T_i} + \frac{n_j q_j^2}{T_j} \right)^{1/2} \right)\]

In these formulas N and T are given in cm^-3 and eV respectively. As documented, the function itself expects the density to be given in 1/m^3.

@numba.vectorizeebisim.plasma.collisional_escape_rate(nui, w)

Generic escape rate - to be called by axial and radial escape

Parameters
  • nui (float or numpy.ndarray) – <1/s> Vector of total ion ion collision rates for each charge state.

  • w (float or numpy.ndarray) – <1/s> Vector of trap (loss) frequencies.

Returns

float or numpy.ndarray – <1/s> Vector of ion loss rates for each charge state.

Notes

\[\dfrac{3}{\sqrt{2}} \nu_i \dfrac{e^{-\omega_i}}{\omega_i}\]
@numba.vectorizeebisim.plasma.collisional_thermalisation(kbTi, kbTj, Ai, Aj, nuij)

Computes the collisional energy transfer rates for species “i” with respect to species “j”.

Parameters
  • kbTi (float or numpy.ndarray) – <eV> Vector of ion species “i” temperatures.

  • kbTj (float or numpy.ndarray) – <eV> Vector of ion species “j” temperatures.

  • Ai (float or numpy.ndarray) – Ion species “i” mass number.

  • Aj (float or numpy.ndarray) – Ion species “j” mass number.

  • nuij (float or numpy.ndarray) – <1/s> Collision rate matrix for the ions (cf. ion_coll_mat).

Returns

float or numpy.ndarray – <eV/s> Vector of temperature change rate for each charge state.

Notes

\[\left(\dfrac{d k_B T_i}{d t}\right)_j = 2 \nu_{ij} \dfrac{m_i}{m_j} \dfrac{k_B T_j - k_B T_i}{(1 + m_i k_B T_j / m_j k_B T_i)^{3/2}}\]
@numba.vectorizeebisim.plasma.coulomb_xs(Ni, Ne, kbTi, Ee, Ai, qi)

Computes the Coulomb cross section for elastic electron ion collisions

Parameters
  • Ni (float or numpy.ndarray) – <1/m^3> Ion density.

  • Ne (float or numpy.ndarray) – <1/m^3> Electron density.

  • kbTi (float or numpy.ndarray) – <eV> Ion temperature.

  • Ee (float or numpy.ndarray) – <eV> Electron kinetic energy.

  • Ai (float or numpy.ndarray) – Ion mass number.

  • qi (int or numpy.ndarray) – Ion charge state.

Returns

float or numpy.ndarray – <m^2> Coulomb cross section.

Notes

\[\sigma_i = 4 \pi \left( \dfrac{q_i q_e^2}{4\pi\epsilon_0 m_e} \right)^2 \dfrac{\ln \Lambda_{ei}}{v_e^4}\]
@numba.jitebisim.plasma.electron_velocity(e_kin)[source]

Computes the electron velocity corresponding to a kinetic energy.

Parameters

e_kin (float or numpy.ndarray) – <eV> Kinetic energy of the electron.

Returns

float or numpy.ndarray – <m/s> Speed of the electron.

Notes

\[v_e = c\sqrt{1-\left(\dfrac{m_e c^2}{m_e c^2 + E_e}\right)^2}\]
@numba.vectorizeebisim.plasma.ion_coll_rate(Ni, Nj, kbTi, kbTj, Ai, Aj, qi, qj)

Collision rates for ions species “i” and target species “j”

Parameters
  • Ni (float or numpy.ndarray) – <1/m^3> Ion species “i” density.

  • Nj (float or numpy.ndarray) – <1/m^3> Ion species “j” density.

  • kbTi (float or numpy.ndarray) – <eV> Ion species “i” temperature.

  • kbTj (float or numpy.ndarray) – <eV> Ion species “j” temperature.

  • Ai (float or numpy.ndarray) – Ion species “i” mass number.

  • Aj (float or numpy.ndarray) – Ion species “j” mass number.

  • qi (int or numpy.ndarray) – Ion species “i” charge state.

  • qj (int or numpy.ndarray) – Ion species “j” charge state.

Returns

float or numpy.ndarray – <1/s> Ion ion collision rate.

See also

ebisim.plasma.ion_coll_rate_mat

Similar method for all charge states.

Notes

\[\nu_{ij} = \dfrac{1}{(4\pi\epsilon_0)^2}\dfrac{4\sqrt{2\pi}}{3}N_j\left( \dfrac{q_i q_j q_e^2}{m_i} \right)^2 \left(\dfrac{m_i}{k_B T_i}\right)^{3/2} \ln \Lambda_{ij}\]
@numba.vectorizeebisim.plasma.spitzer_heating(Ni, Ne, kbTi, Ee, Ai, qi)

Computes the heating rates due to elastic electron ion collisions (‘Spitzer Heating’)

Parameters
  • Ni (float or numpy.ndarray) – <1/m^3> Vector of ion densities.

  • Ne (float or numpy.ndarray) – <1/m^3> Electron density.

  • kbTi (float or numpy.ndarray) – <eV> Vector of ion temperatures.

  • Ee (float or numpy.ndarray) – <eV> Electron kinetic energy.

  • Ai (float or numpy.ndarray) – Ion mass number.

Returns

float or numpy.ndarray – <eV/s> Vector of electron heating rate (temperature increase) for each charge state.

Notes

\[\left(\dfrac{d k_B T_i}{d t}\right)^{\text{Spitzer}} = \dfrac{2}{3} N_e v_e \sigma_i 2 \dfrac{m_e}{m_i} E_e\]

where sigma_i is the cross section for Coulomb collisions (cf. ebisim.plasma.coulomb_xs).

@numba.vectorizeebisim.plasma.trapping_strength_axial(kbTi, qi, V)

Computes the axial trapping strenghts.

Parameters
  • kbTi (float or numpy.ndarray) – <eV> Vector of ion temperatures.

  • qi (int or numpy.ndarray) – Ion species “i” charge state.

  • V (float or numpy.ndarray) – <V> Trap depth.

Returns

float or numpy.ndarray – <1/s> Vector of axial ion trapping strenghts for each charge state.

Notes

\[\omega_i^{ax} = \dfrac{q_i V_{ax}}{k_B T_i}\]
@numba.vectorizeebisim.plasma.trapping_strength_radial(kbTi, qi, Ai, V, B, r_dt)

Radial trapping strenghts.

Parameters
  • kbTi (float or numpy.ndarray) – <eV> Vector of ion temperatures.

  • qi (int or numpy.ndarray) – Ion species “i” charge state.

  • Ai (float or numpy.ndarray) – Ion mass number.

  • V (float or numpy.ndarray) – <V> Trap depth.

  • B (float or numpy.ndarray) – <T> Axial magnetic flux density.

  • r_dt (float or numpy.ndarray) – <m> Drift tube radius.

Returns

float or numpy.ndarray – <1/s> Vector of radial ion trapping strenghts for each charge state.

Notes

\[\omega_i^{rad} = \dfrac{q_i \left(V_{rad} + B r_{dt} \sqrt{2 k_B T_i/(3 m_i)} \right)}{k_B T_i}\]