ClassicalTransport

class plasmapy.physics.transport.braginskii.ClassicalTransport(T_e, n_e, T_i, n_i, ion_particle, m_i=None, Z=None, B=<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=None, coulomb_log_method='classical')

Bases: object

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

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_particle (string) – 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 np.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 (string) –

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

    • ’Braginskii’,
    • ’Spitzer-Harm’,
    • ’Epperlein-Haines’ (not yet implemented),
    • ’Ji-Held’.

    See refs [1], [2], [3], [4] and [5].

  • field_orientation (string, 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 \times \nabla(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: \(\mu V^2 \sim 2 k_B T\) where mu 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: \(\mu V^2 \sim 2 k_B T\) where mu 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 (optional, float or dimensionless astropy.units.Quantity) – 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 (optional, float or dimensionless Quantity) – 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.
Raises:
  • ValueError – On incorrect or unknown values of arguments.
  • plasmapy.utils.PhysicsError – If input or calculated values for Coulomb logarithms are nonphysical.

Examples

>>> from astropy import units as u
>>> t = ClassicalTransport(1*u.eV, 1e20/u.m**3,
...                         1*u.eV, 1e20/u.m**3, 'p')
>>> t.resistivity()
<Quantity 0.00036701 m Ohm>
>>> t.thermoelectric_conductivity()
<Quantity 0.711084>
>>> t.ion_thermal_conductivity()
<Quantity 0.01552066 W / (K m)>
>>> t.electron_thermal_conductivity()
<Quantity 0.38064293 W / (K m)>
>>> t.ion_viscosity()
<Quantity [4.62129725e-07, 4.60724824e-07, 4.60724824e-07, 0.00000000e+00,
           0.00000000e+00] Pa s>
>>> t.electron_viscosity()
<Quantity [5.82273805e-09, 5.82082061e-09, 5.82082061e-09, 0.00000000e+00,
           0.00000000e+00] Pa s>

References

[1]Braginskii, S. I. “Transport processes in a plasma.” Reviews of plasma physics 1 (1965): 205. (1965)
[2]Spitzer Jr, Lyman, and Richard Härm. “Transport phenomena in a completely ionized gas.” Physical Review 89.5 (1953): 977. (1953)
[3]Physics of Fully Ionized Gases, L. Spitzer (1962)
[4]Epperlein, E. M., and M. G. Haines. “Plasma transport coefficients in a magnetic field by direct numerical solution of the Fokker–Planck equation.” The Physics of fluids 29.4 (1986): 1029-1041.
[5]Ji, Jeong-Young, and Eric D. Held. “Closure and transport theory for high-collisionality electron-ion plasmas.” Physics of Plasmas 20.4 (2013): 042114.

Methods 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.

Methods Documentation

all_variables() → dict

Return all transport variables as a dictionary.

Returns:
Return type:dict
electron_thermal_conductivity() -> Unit("W / (K m)")

Calculate the thermal conductivity for electrons.

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.

Returns:
Return type:astropy.units.quantity.Quantity
electron_viscosity() -> Unit("Pa s")

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.

Returns:
Return type:astropy.units.quantity.Quantity

See also

ion_viscosity()

ion_thermal_conductivity() -> Unit("W / (K m)")

Calculate the thermal conductivity for ions.

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.

Returns:
Return type:astropy.units.quantity.Quantity
ion_viscosity() -> Unit("Pa s")

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.

Returns:
Return type:astropy.units.quantity.Quantity
resistivity() -> Unit("m Ohm")

Calculate the resistivity.

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 * m, 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.

Returns:
Return type:astropy.units.quantity.Quantity
thermoelectric_conductivity()

Calculate the thermoelectric conductivity.

Notes

To be improved.

Returns:
Return type:astropy.units.quantity.Quantity