ClassicalTransport

class plasmapy.formulary.braginskii.ClassicalTransport(T_e: ~astropy.units.quantity.Quantity, n_e: ~astropy.units.quantity.Quantity, T_i: ~astropy.units.quantity.Quantity, n_i: ~astropy.units.quantity.Quantity, ion, m_i: ~astropy.units.quantity.Quantity = None, Z=None, B: ~astropy.units.quantity.Quantity = <Quantity 0. T>, model='Braginskii', field_orientation='parallel', coulomb_log_ei=None, V_ei=None, coulomb_log_ii=None, V_ii=None, hall_e=None, hall_i=None, mu=None, theta: float | None = None, coulomb_log_method='classical')[source]

Bases: object

Classical transport coefficients (e.g. Braginskii, 1965).

Attention

This functionality is under development. Backward incompatible changes might occur in future releases.

Notes

Given that many of the transport variables share a lot of the same computation and many are often needed to be calculated simultaneously, this class can be initialized once with all of the variables necessary for calculation. It then provides all of the functionality as methods (please refer to their documentation).

Parameters:
  • T_e (Quantity) – Electron temperature in units of temperature or energy per particle.

  • n_e (Quantity) – The electron number density in units convertible to per cubic meter.

  • T_i (Quantity) – Ion temperature in units of temperature or energy per particle.

  • n_i (Quantity) – The ion number density in units convertible to per cubic meter.

  • ion (str) – Representation of the ion species (e.g., 'p' for protons, 'e-' for electrons, 'D+' for deuterium, or 'He-4 +1' for singly ionized helium-4). If no charge state information is provided, then the particles are assumed to be singly charged.

  • Z (int or numpy.inf, optional) – The ion charge state. Overrides particle charge state if included. Different theories support different values of Z. For the original Braginskii model, Z can be any of [1, 2, 3, 4, infinity]. The Ji-Held model supports arbitrary Z. Average ionization states Z_mean can be input using this input and the Ji-Held model, although doing so may neglect effects caused by multiple ion populations.

  • B (Quantity, optional) – The magnetic field strength in units convertible to tesla. Defaults to zero.

  • model (str) –

    Indication of whose formulation from literature to use. Allowed values are:

  • field_orientation (str, defaults to 'parallel') – Either of 'parallel', 'par', 'perpendicular', 'perp', 'cross', or 'all', indicating the cardinal orientation of the magnetic field with respect to the transport direction of interest. Note that 'perp' refers to transport perpendicular to the field direction (in the direction of the temperature gradient), while 'cross' refers to the direction perpendicular to B and the gradient of temperature (\(B × ∇T\)). The option 'all' will return a numpy.array of all three, np.array((par, perp, cross)). Does not apply to viscosities.

  • coulomb_log_ei (float or dimensionless Quantity, optional) – Force a particular value to be used for the electron-ion Coulomb logarithm (test electrons on field ions). If None, Coulomb_logarithm will be used. Useful for comparing calculations.

  • V_ei (Quantity, optional) – The relative velocity between particles. Supplied to Coulomb_logarithm function, not otherwise used. If not provided, thermal velocity is assumed: \(μ V^2 \sim 2 k_B T\) where \(μ\) is the reduced mass.

  • coulomb_log_ii (float or dimensionless Quantity, optional) – Force a particular value to be used for the ion-ion Coulomb logarithm (test ions on field ions). If None, the PlasmaPy function Coulomb_logarithm will be used. Useful for comparing calculations.

  • V_ii (Quantity, optional) – The relative velocity between particles. Supplied to Coulomb_logarithm function, not otherwise used. If not provided, thermal velocity is assumed: \(μ V^2 \sim 2 k_B T\) where :math`μ` is the reduced mass.

  • hall_e (float or dimensionless Quantity, optional) – Force a particular value to be used for the electron Hall parameter. If None, Hall_parameter will be used. Useful for comparing calculations.

  • hall_i (float or dimensionless Quantity, optional) – Force a particular value to be used for the ion Hall parameter. If None, Hall_parameter will be used. Useful for comparing calculations.

  • mu (float or dimensionless Quantity, optional) – Ji-Held model only, may be used to include ion-electron effects on the ion transport coefficients. Defaults to zero, thus disabling these effects.

  • theta (float or dimensionless Quantity, optional) – Ji-Held model only, may be used to include ion-electron effects on the ion transport coefficients. Defaults to \(T_e / T_i\). Only has effect if mu is non-zero.

  • coulomb_log_method (str, optional) – The method by which to compute the Coulomb logarithm. The default method is the classical straight-line Landau-Spitzer method ("classical" or "ls"). The other 6 supported methods are "ls_min_interp", "ls_full_interp", "ls_clamp_mininterp", "hls_min_interp", "hls_max_interp", and "hls_full_interp". Please refer to the docstring of Coulomb_logarithm for more information about these methods.

Raises:
  • ValueError – On incorrect or unknown values of arguments.

  • PhysicsError – If input or calculated values for Coulomb logarithms are nonphysical.

Examples

>>> import astropy.units as u
>>> t = ClassicalTransport(1 * u.eV, 1e20 / u.m**3, 1 * u.eV, 1e20 / u.m**3, "p")
>>> t.resistivity  
<Quantity 0.0003670... Ohm m>
>>> t.thermoelectric_conductivity
<Quantity 0.71108...>
>>> t.ion_thermal_conductivity
<Quantity 0.01552... W / (K m)>
>>> t.electron_thermal_conductivity
<Quantity 0.38064... W / (K m)>
>>> t.ion_viscosity
<Quantity [4.621297...e-07, 4.607248...e-07, 4.607248...e-07, 0.000000...e+00,
           0.000000...e+00] Pa s>
>>> t.electron_viscosity
<Quantity [5.822738...e-09, 5.820820...e-09, 5.820820...e-09, 0.000000...e+00,
           0.000000...e+00] Pa s>

Attributes Summary

all_variables

Return all transport variables as a dictionary.

electron_thermal_conductivity

Calculate the thermal conductivity for electrons.

electron_viscosity

Calculate the electron viscosity.

ion_thermal_conductivity

Calculate the thermal conductivity for ions.

ion_viscosity

Calculate the ion viscosity.

resistivity

Calculate the resistivity.

thermoelectric_conductivity

Calculate the thermoelectric conductivity.

Attributes Documentation

all_variables

Return all transport variables as a dictionary.

Return type:

dict

electron_thermal_conductivity

Calculate the thermal conductivity for electrons.

The electron thermal conductivity (\(κ\)) of a plasma is defined by

\[κ = \hat{κ} \frac{n_e k_B^2 T_e τ_e}{m_e}\]

where \(\hat{κ}\) is the non-dimensional electron thermal conductivity of the plasma, \(n_e\) is the electron number density of the plasma, \(k_B\) is the Boltzmann constant, \(T_e\) is the electron temperature of the plasma, \(τ_e\) is the fundamental electron collision period of the plasma, and \(m_e\) is the mass of an electron.

Notes

This is quite similar to the ion thermal conductivity, except that it’s for the plasma electrons. In a typical unmagnetized plasma, the electron thermal conductivity is much higher than the ions and will dominate, due to the electrons’ low mass and fast speeds.

In a strongly magnetized plasma, following the classical transport analysis, you calculate that the perpendicular-field thermal conductivity becomes greatly reduced for the ions and electrons, with the electrons actually being restrained even more than the ions due to their low mass and small gyroradius. In reality, the electrons and ions are pulling on each other strongly due to their opposing charges, so you have the situation of ambipolar diffusion.

This situation has been likened to an energetic little child (the electrons) not wanting to be pulled away from the playground (the magnetic field) by the parents (the ions).

The ultimate rate must typically be in between the individual rates for electrons and ions, so at least you can get some bounds from this type of analysis.

Return type:

Quantity

electron_viscosity

Calculate the electron viscosity.

Notes

This is the dynamic viscosity that you find for electrons in the classical plasma, similar to the viscosity of air or water or honey. The big effect is the \(T^{5/2}\) dependence, so as classical plasmas get hotter they become dramatically more viscous. The ion viscosity typically dominates over the electron viscosity.

Return type:

Quantity

See also

ion_viscosity

ion_thermal_conductivity

Calculate the thermal conductivity for ions.

The ion thermal conductivity (\(κ\)) of a plasma is defined by

\[κ = \hat{κ} \frac{n_i k_B^2 T_i τ_i}{m_i}\]

where \(\hat{κ}\) is the non-dimensional ion thermal conductivity of the plasma, \(n_i\) is the ion number density of the plasma, \(k_B\) is the Boltzmann constant, \(T_i\) is the ion temperature of the plasma, \(τ_i\) is the fundamental ion collision period of the plasma, and \(m_i\) is the mass of an ion of the plasma.

Notes

This is the classical plasma ions’ ability to conduct energy and heat, defined similarly to other materials. The result is a conductivity in units of W / m / K, so if you assume you know where the heat is flowing (temperature gradient, cross-sectional area) you can calculate the energy transport in watts as conductivity × cross-sectional area × temperature gradient. In lab plasmas, typically the energy is flowing out of your high-temperature plasma to something else, like the walls of your device, and you are sad about this.

Return type:

Quantity

ion_viscosity

Calculate the ion viscosity.

Notes

This is the dynamic viscosity that you find for ions in the classical plasma, similar to the viscosity of air or water or honey. The big effect is the \(T^{5/2}\) dependence, so as classical plasmas get hotter they become dramatically more viscous. The ion viscosity typically dominates over the electron viscosity.

Return type:

Quantity

resistivity

Calculate the resistivity.

The resistivity (\(α\)) of a plasma is defined by

\[α = \frac{\hat{α}}{n_e e^2 \frac{τ_e}{m_e}}\]

where \(\hat{α}\) is the non-dimensional resistivity of the plasma, \(n_e\) is the electron number density of the plasma, \(e\) is Euler’s number, \(τ_e\) is the fundamental electron collision period of the plasma, and \(m_e\) is the mass of an electron.

Notes

The resistivity here is defined similarly to solid conductors, and thus represents the classical plasmas’ property to resist the flow of electrical current. The result is in units of ohm meters, so if you assume where the current is flowing in the plasma (length and cross-sectional area), you could calculate a DC resistance of the plasma in ohms as resistivity × length / cross-sectional area.

Experimentalists with plasma discharges may observe different \(V = IR\) Ohm’s law behavior than suggested by the resistance calculated here, for reasons such as the occurrence of plasma sheath layers at the electrodes or the plasma not satisfying the classical assumptions.

Return type:

Quantity

thermoelectric_conductivity

Calculate the thermoelectric conductivity.

Notes

To be improved.

Return type:

Quantity