1. Introduction to Plasma
1. Introduction to Plasma¶
Learning Objectives¶
- Understand plasma as the fourth state of matter and identify natural and laboratory examples
- Derive and apply the Debye shielding concept and calculate the Debye length for various plasmas
- Explain the plasma criteria for collective behavior and quasi-neutrality conditions
- Calculate characteristic plasma frequencies (plasma frequency and gyrofrequency) from first principles
- Compute the plasma beta parameter and interpret the relative importance of thermal versus magnetic pressure
- Apply Python tools to compute and compare plasma parameters across different physical systems
1. The Fourth State of Matter¶
1.1 What is Plasma?¶
Plasma is often called the fourth state of matter, following solid, liquid, and gas. It consists of a collection of free charged particles—electrons and ions—that exhibit collective behavior due to long-range electromagnetic interactions.
State Transitions:
Solid → Liquid → Gas → Plasma
↑ ↑ ↑ ↑
Heat Heat Heat Ionization
(add energy →)
Key characteristics:
- Solid: molecules in fixed lattice, short-range forces
- Liquid: molecules mobile, short-range forces
- Gas: molecules independent, rare collisions
- Plasma: ions + electrons, long-range EM forces, collective behavior
The transition from gas to plasma occurs through ionization—the process where neutral atoms or molecules lose electrons due to: - Thermal energy (high temperature) - Electromagnetic radiation (photoionization) - Collisions with energetic particles - Electric fields (avalanche breakdown)
1.2 Ionization and Degree of Ionization¶
The degree of ionization $\alpha$ is defined as:
$$\alpha = \frac{n_i}{n_i + n_n}$$
where $n_i$ is the ion density and $n_n$ is the neutral density.
- Fully ionized plasma: $\alpha \approx 1$ (nearly all particles are charged)
- Partially ionized plasma: $0 < \alpha < 1$ (mixture of charged and neutral particles)
- Weakly ionized plasma: $\alpha \ll 1$ (most particles remain neutral, but collective effects dominate)
Even weakly ionized plasmas ($\alpha \sim 10^{-6}$ in some cases) can exhibit plasma behavior if the plasma criteria (discussed below) are satisfied.
1.3 Examples of Plasmas¶
Plasmas are the most common state of matter in the universe, comprising over 99% of visible matter.
Natural Plasmas:
| System | Temperature (eV) | Density (m⁻³) | Magnetic Field (T) |
|---|---|---|---|
| Interstellar medium | 1 | 10⁶ | 10⁻¹⁰ |
| Solar wind (1 AU) | 10 | 10⁷ | 10⁻⁹ |
| Solar corona | 100 | 10¹⁴ | 10⁻² |
| Solar core | 1000 | 10³² | — |
| Lightning | 2-3 | 10²² | — |
| Ionosphere (F-layer) | 0.1 | 10¹² | 10⁻⁵ |
Laboratory Plasmas:
| System | Temperature (eV) | Density (m⁻³) | Magnetic Field (T) |
|---|---|---|---|
| Tokamak core | 10,000 | 10²⁰ | 5 |
| Tokamak edge | 100 | 10¹⁹ | 5 |
| Fluorescent lamp | 1-2 | 10¹⁶ | — |
| Neon sign | 1-3 | 10¹⁴ | — |
| Arc discharge | 1-2 | 10²² | — |
| Plasma processing | 3-5 | 10¹⁶ | 10⁻² |
Note: 1 eV ≈ 11,600 K. Plasma temperature is conventionally expressed in electron-volts.
2. Debye Shielding¶
2.1 The Problem: Long-Range Coulomb Force¶
The Coulomb potential from a point charge $q$ is:
$$\phi(r) = \frac{1}{4\pi\epsilon_0} \frac{q}{r}$$
This $1/r$ dependence means the force is long-range—it extends to infinity. If every particle in a plasma interacted with every other particle via unshielded Coulomb forces, the system would be intractable.
However, plasmas exhibit a remarkable collective phenomenon: Debye shielding.
2.2 Derivation of the Debye Length¶
Consider a test charge $Q$ inserted into a plasma. Mobile electrons and ions will rearrange to shield this charge.
Assumptions: 1. Plasma is in thermal equilibrium (Boltzmann distribution) 2. Electrostatic potential is small: $|e\phi| \ll k_B T$ 3. No external fields, no magnetic field
The electron and ion densities respond to the potential $\phi$ via Boltzmann relations:
$$n_e = n_0 \exp\left(\frac{e\phi}{k_B T_e}\right) \approx n_0 \left(1 + \frac{e\phi}{k_B T_e}\right)$$
$$n_i = n_0 \exp\left(-\frac{Ze\phi}{k_B T_i}\right) \approx n_0 \left(1 - \frac{Ze\phi}{k_B T_i}\right)$$
where $n_0$ is the background density, $Z$ is the ion charge state, and we've linearized for small $\phi$.
The charge density is:
$$\rho = e(Zn_i - n_e) = -en_0\left(\frac{e}{k_B T_e} + \frac{Ze}{k_B T_i}\right)\phi$$
Poisson's equation relates potential to charge density:
$$\nabla^2 \phi = -\frac{\rho}{\epsilon_0} = \frac{n_0 e}{\epsilon_0}\left(\frac{e}{k_B T_e} + \frac{Ze}{k_B T_i}\right)\phi$$
Define the Debye length $\lambda_D$:
$$\frac{1}{\lambda_D^2} = \frac{n_0 e^2}{\epsilon_0 k_B T_e} + \frac{Zn_0 e^2}{\epsilon_0 k_B T_i} = \frac{n_0 e^2}{\epsilon_0 k_B}\left(\frac{1}{T_e} + \frac{Z}{T_i}\right)$$
For a single-species case (or when $T_e \approx T_i = T$ and $Z=1$):
$$\lambda_D = \sqrt{\frac{\epsilon_0 k_B T}{n_0 e^2}}$$
For electrons only (often the dominant contribution due to higher mobility):
$$\lambda_{De} = \sqrt{\frac{\epsilon_0 k_B T_e}{n_e e^2}} \approx 7.43 \times 10^3 \sqrt{\frac{T_e[\text{eV}]}{n_e[\text{m}^{-3}]}} \quad [\text{m}]$$
Physical interpretation: The Debye length is the distance over which charge imbalances are shielded by mobile charge carriers.
Poisson's equation becomes:
$$\nabla^2 \phi = \frac{\phi}{\lambda_D^2}$$
For spherical symmetry (test charge at origin):
$$\frac{1}{r^2}\frac{d}{dr}\left(r^2 \frac{d\phi}{dr}\right) = \frac{\phi}{\lambda_D^2}$$
Solution:
$$\phi(r) = \frac{Q}{4\pi\epsilon_0 r} e^{-r/\lambda_D}$$
This is the Debye-Hückel potential—the Coulomb potential screened by an exponential factor.
Shielded Potential:
φ(r) ∝ (1/r) × exp(-r/λ_D)
|
Q | ___
----- | / \___
| | / \____
| | / \______
----+----+-------------------------- r
0 λ_D
Unshielded: 1/r (dashed)
Shielded: (1/r)exp(-r/λ_D) (solid)
For r ≪ λ_D: full Coulomb force
For r ≫ λ_D: exponentially suppressed
2.3 The Plasma Parameter¶
The number of particles within a Debye sphere is:
$$N_D = n \cdot \frac{4}{3}\pi\lambda_D^3 = n\lambda_D^3 \cdot \frac{4\pi}{3}$$
For a system to exhibit collective plasma behavior, we require:
$$n\lambda_D^3 \gg 1$$
Interpretation: Many particles must be within a Debye sphere so that collective shielding dominates over individual particle interactions.
When $n\lambda_D^3 \ll 1$, the system behaves as a weakly coupled gas where binary collisions dominate (not a true plasma).
Plasma coupling parameter:
$$\Gamma = \frac{\text{potential energy}}{\text{kinetic energy}} = \frac{e^2}{4\pi\epsilon_0 a k_B T}$$
where $a = (3/4\pi n)^{1/3}$ is the mean inter-particle spacing.
- Weakly coupled plasma: $\Gamma \ll 1$ (most plasmas, including fusion devices)
- Strongly coupled plasma: $\Gamma \gtrsim 1$ (e.g., white dwarf interiors, dusty plasmas)
For weakly coupled plasmas:
$$\Gamma \sim \frac{1}{N_D^{1/3}}$$
So $n\lambda_D^3 \gg 1$ is equivalent to $\Gamma \ll 1$.
3. Quasi-Neutrality¶
3.1 Charge Neutrality Condition¶
At length scales much larger than the Debye length ($L \gg \lambda_D$), plasmas are quasi-neutral:
$$n_e \approx Z_i n_i$$
Why? Any charge imbalance creates large electric fields:
$$E \sim \frac{e(n_i - n_e)L}{\epsilon_0}$$
These fields accelerate particles to restore neutrality on timescales of order the plasma period $\omega_{pe}^{-1}$ (defined below).
3.2 Plasma Approximation¶
In most plasma calculations, we can assume: 1. Quasi-neutrality: $n_e = Zn_i$ for $L \gg \lambda_D$ 2. Collective behavior: $n\lambda_D^3 \gg 1$
These two conditions define the plasma regime:
Plasma Criteria:
n λ_D³ ≫ 1 (many particles in Debye sphere)
L ≫ λ_D (system size ≫ Debye length)
Together these imply:
- Long-range collective interactions
- Quasi-neutrality
- Plasma oscillations and waves
4. Plasma Frequency¶
4.1 Electron Plasma Oscillations¶
Consider a cold, uniform plasma ($T=0$) with immobile ions. Displace all electrons by a small distance $\delta x$ relative to ions.
Charge separation creates an electric field:
Using Gauss's law for a slab of displaced electrons:
$$E = \frac{n_e e \delta x}{\epsilon_0}$$
Equation of motion for an electron:
$$m_e \frac{d^2(\delta x)}{dt^2} = -eE = -\frac{n_e e^2}{\epsilon_0} \delta x$$
This is simple harmonic motion with angular frequency:
$$\omega_{pe}^2 = \frac{n_e e^2}{\epsilon_0 m_e}$$
Define the electron plasma frequency:
$$\omega_{pe} = \sqrt{\frac{n_e e^2}{\epsilon_0 m_e}} \approx 5.64 \times 10^4 \sqrt{n_e[\text{m}^{-3}]} \quad [\text{rad/s}]$$
Physical interpretation: The natural oscillation frequency of electrons about the ion background. This is the fastest timescale in most plasmas.
4.2 Ion Plasma Frequency¶
Similarly, for ions:
$$\omega_{pi} = \sqrt{\frac{n_i Z^2 e^2}{\epsilon_0 m_i}}$$
Since $m_i \gg m_e$ (typically $m_i/m_e \sim 1836$ for hydrogen), we have:
$$\frac{\omega_{pi}}{\omega_{pe}} = \sqrt{\frac{m_e}{m_i}} \approx \frac{1}{43} \quad \text{(for protons)}$$
Ion oscillations are much slower than electron oscillations.
4.3 Plasma Period¶
The plasma period is:
$$\tau_{pe} = \frac{2\pi}{\omega_{pe}} \approx 1.11 \times 10^{-4} \frac{1}{\sqrt{n_e[\text{m}^{-3}]}} \quad [\text{s}]$$
For typical fusion plasmas ($n_e \sim 10^{20}$ m$^{-3}$):
$$\tau_{pe} \sim 10^{-14} \text{ s} = 10 \text{ fs}$$
This sets the fundamental timescale for electrostatic phenomena.
5. Gyrofrequency and Larmor Radius¶
5.1 Cyclotron Motion¶
A charged particle in a magnetic field $\mathbf{B}$ experiences the Lorentz force:
$$\mathbf{F} = q\mathbf{v} \times \mathbf{B}$$
For motion perpendicular to $\mathbf{B}$, the force is perpendicular to velocity, causing circular motion.
The gyrofrequency (or cyclotron frequency) is:
$$\omega_c = \frac{|q|B}{m}$$
For electrons:
$$\omega_{ce} = \frac{eB}{m_e} \approx 1.76 \times 10^{11} B[\text{T}] \quad [\text{rad/s}]$$
For ions:
$$\omega_{ci} = \frac{ZeB}{m_i}$$
For protons ($Z=1$, $m_i = 1836 m_e$):
$$\omega_{ci} \approx 9.58 \times 10^7 B[\text{T}] \quad [\text{rad/s}]$$
Note: $\omega_{ci}/\omega_{ce} = m_e/m_i \ll 1$ — ions gyrate much slower than electrons.
5.2 Larmor Radius¶
The radius of the circular orbit (gyroradius or Larmor radius) is found by balancing centripetal acceleration:
$$m\frac{v_\perp^2}{r_L} = qv_\perp B$$
$$r_L = \frac{mv_\perp}{qB} = \frac{v_\perp}{\omega_c}$$
Thermal Larmor radius: Using thermal velocity $v_{th} = \sqrt{k_B T/m}$:
$$r_{L,thermal} = \frac{v_{th}}{\omega_c} = \frac{\sqrt{k_B T m}}{qB}$$
For electrons:
$$r_{Le} = \frac{\sqrt{2k_B T_e m_e}}{eB} \approx 2.28 \times 10^{-6} \frac{\sqrt{T_e[\text{eV}]}}{B[\text{T}]} \quad [\text{m}]$$
For ions (protons):
$$r_{Li} = \frac{\sqrt{2k_B T_i m_p}}{eB} \approx 9.77 \times 10^{-5} \frac{\sqrt{T_i[\text{eV}]}}{B[\text{T}]} \quad [\text{m}]$$
The Larmor radius sets the scale for perpendicular particle transport and determines when magnetic field effects are important.
6. Plasma Beta¶
6.1 Definition¶
The plasma beta is the ratio of thermal pressure to magnetic pressure:
$$\beta = \frac{p}{p_B} = \frac{2\mu_0 nk_B T}{B^2}$$
where: - Thermal pressure: $p = nk_B T$ (summed over species) - Magnetic pressure: $p_B = B^2/(2\mu_0)$
For a plasma with electrons and ions:
$$\beta = \frac{2\mu_0 (n_e k_B T_e + n_i k_B T_i)}{B^2}$$
Assuming quasi-neutrality ($n_e = n_i = n$) and $T_e \approx T_i = T$:
$$\beta = \frac{4\mu_0 n k_B T}{B^2}$$
6.2 Physical Interpretation¶
- $\beta \ll 1$: Magnetic pressure dominates (magnetized plasma)
- Particles are tightly bound to field lines
- Field lines are approximately rigid
-
Examples: tokamak core, solar corona, magnetosphere
-
$\beta \sim 1$: Thermal and magnetic pressures comparable
- Field lines can be distorted by plasma pressure
-
Examples: tokamak edge, reversed-field pinch
-
$\beta \gg 1$: Thermal pressure dominates (unmagnetized plasma)
- Magnetic field has little effect on dynamics
- Examples: early universe, some laser plasmas
6.3 Critical Beta and MHD Stability¶
In magnetic confinement fusion, there is a critical beta $\beta_c$ above which the plasma becomes MHD unstable. For tokamaks:
$$\beta_c \sim \frac{I_p}{aB_0}$$
where $I_p$ is plasma current, $a$ is minor radius, $B_0$ is toroidal field. Typical values: $\beta_c \sim 0.02 - 0.05$ (2-5%).
High-$\beta$ plasmas are desirable for fusion (higher pressure → higher fusion power), but stability limits exist.
7. Characteristic Scales and Orderings¶
7.1 Summary of Plasma Parameters¶
For a plasma characterized by density $n$, temperature $T$, and magnetic field $B$:
| Parameter | Symbol | Formula | Units |
|---|---|---|---|
| Debye length | $\lambda_D$ | $\sqrt{\epsilon_0 k_B T/(n e^2)}$ | m |
| Plasma frequency | $\omega_{pe}$ | $\sqrt{n e^2/(\epsilon_0 m_e)}$ | rad/s |
| Electron gyrofrequency | $\omega_{ce}$ | $eB/m_e$ | rad/s |
| Ion gyrofrequency | $\omega_{ci}$ | $eB/m_i$ | rad/s |
| Electron Larmor radius | $r_{Le}$ | $v_{te}/\omega_{ce}$ | m |
| Ion Larmor radius | $r_{Li}$ | $v_{ti}/\omega_{ci}$ | m |
| Plasma beta | $\beta$ | $2\mu_0 nk_B T/B^2$ | — |
where $v_{te} = \sqrt{k_B T_e/m_e}$ and $v_{ti} = \sqrt{k_B T_i/m_i}$ are thermal speeds.
7.2 Typical Orderings¶
For magnetized plasmas:
Length scales: $$r_{Le} \ll r_{Li} \ll L_\parallel \sim L_\perp$$
where $L_\parallel$ and $L_\perp$ are characteristic parallel and perpendicular scale lengths.
Frequency orderings: $$\omega_{ci} \ll \omega_{ce} \ll \omega_{pe}$$
Time scales: $$\tau_{pe} \ll \tau_{ce} \ll \tau_{ci}$$
These orderings are exploited in asymptotic expansions to simplify plasma models: - Drift-kinetic theory: average over fast gyro-motion - Gyrokinetic theory: average over gyro-phase - MHD: assume time scales $\gg \tau_{ce}$, length scales $\gg r_{Li}$
8. Computational Tools¶
8.1 Plasma Parameter Calculator¶
Here is a Python function to compute all basic plasma parameters:
import numpy as np
import matplotlib.pyplot as plt
# Physical constants
e = 1.602176634e-19 # Elementary charge [C]
m_e = 9.1093837015e-31 # Electron mass [kg]
m_p = 1.672621898e-27 # Proton mass [kg]
epsilon_0 = 8.8541878128e-12 # Permittivity [F/m]
k_B = 1.380649e-23 # Boltzmann constant [J/K]
mu_0 = 4e-7 * np.pi # Permeability [H/m]
eV_to_K = 11604.518 # Conversion factor eV to K
class PlasmaParameters:
"""Compute and store fundamental plasma parameters."""
def __init__(self, n_e, T_e, B=0, T_i=None, Z=1, A=1):
"""
Parameters:
-----------
n_e : float
Electron density [m^-3]
T_e : float
Electron temperature [eV]
B : float, optional
Magnetic field strength [T]
T_i : float, optional
Ion temperature [eV]. If None, assumes T_i = T_e
Z : int, optional
Ion charge state (default: 1)
A : int, optional
Ion mass number (default: 1 for hydrogen)
"""
self.n_e = n_e
self.T_e = T_e
self.B = B
self.T_i = T_i if T_i is not None else T_e
self.Z = Z
self.A = A
self.m_i = A * m_p
# Compute all parameters
self._compute_parameters()
def _compute_parameters(self):
"""Compute all plasma parameters."""
# Debye length [m]
self.lambda_D = np.sqrt(epsilon_0 * k_B * self.T_e * eV_to_K /
(self.n_e * e**2))
# Plasma parameter (number of particles in Debye sphere)
self.N_D = self.n_e * (4*np.pi/3) * self.lambda_D**3
# Electron plasma frequency [rad/s]
self.omega_pe = np.sqrt(self.n_e * e**2 / (epsilon_0 * m_e))
self.f_pe = self.omega_pe / (2*np.pi) # [Hz]
# Ion plasma frequency [rad/s]
self.omega_pi = np.sqrt(self.n_e * self.Z**2 * e**2 /
(epsilon_0 * self.m_i))
self.f_pi = self.omega_pi / (2*np.pi) # [Hz]
# Thermal velocities [m/s]
self.v_te = np.sqrt(k_B * self.T_e * eV_to_K / m_e)
self.v_ti = np.sqrt(k_B * self.T_i * eV_to_K / self.m_i)
if self.B > 0:
# Electron gyrofrequency [rad/s]
self.omega_ce = e * self.B / m_e
self.f_ce = self.omega_ce / (2*np.pi) # [Hz]
# Ion gyrofrequency [rad/s]
self.omega_ci = self.Z * e * self.B / self.m_i
self.f_ci = self.omega_ci / (2*np.pi) # [Hz]
# Larmor radii [m]
self.r_Le = self.v_te / self.omega_ce
self.r_Li = self.v_ti / self.omega_ci
# Plasma beta
p_thermal = self.n_e * k_B * (self.T_e + self.T_i) * eV_to_K
p_magnetic = self.B**2 / (2 * mu_0)
self.beta = p_thermal / p_magnetic
else:
self.omega_ce = None
self.omega_ci = None
self.r_Le = None
self.r_Li = None
self.beta = None
def print_summary(self):
"""Print a formatted summary of plasma parameters."""
print("="*60)
print("PLASMA PARAMETERS")
print("="*60)
print(f"Input Parameters:")
print(f" Electron density: n_e = {self.n_e:.3e} m^-3")
print(f" Electron temperature: T_e = {self.T_e:.3f} eV ({self.T_e*eV_to_K:.3e} K)")
print(f" Ion temperature: T_i = {self.T_i:.3f} eV ({self.T_i*eV_to_K:.3e} K)")
print(f" Magnetic field: B = {self.B:.3f} T")
print(f" Ion charge/mass: Z = {self.Z}, A = {self.A}")
print("-"*60)
print(f"Debye Shielding:")
print(f" Debye length: λ_D = {self.lambda_D:.3e} m")
print(f" Plasma parameter: N_D = {self.N_D:.3e}")
print(f" Plasma criterion: N_D >> 1? {self.N_D > 100}")
print("-"*60)
print(f"Plasma Frequencies:")
print(f" Electron plasma freq: ω_pe = {self.omega_pe:.3e} rad/s ({self.f_pe:.3e} Hz)")
print(f" Ion plasma freq: ω_pi = {self.omega_pi:.3e} rad/s ({self.f_pi:.3e} Hz)")
print(f" Ratio: ω_pe/ω_pi = {self.omega_pe/self.omega_pi:.2f}")
print("-"*60)
print(f"Thermal Velocities:")
print(f" Electron thermal vel: v_te = {self.v_te:.3e} m/s")
print(f" Ion thermal vel: v_ti = {self.v_ti:.3e} m/s")
print(f" Ratio: v_te/v_ti = {self.v_te/self.v_ti:.2f}")
print("-"*60)
if self.B > 0:
print(f"Magnetic Field Effects:")
print(f" Electron gyrofreq: ω_ce = {self.omega_ce:.3e} rad/s ({self.f_ce:.3e} Hz)")
print(f" Ion gyrofreq: ω_ci = {self.omega_ci:.3e} rad/s ({self.f_ci:.3e} Hz)")
print(f" Electron Larmor: r_Le = {self.r_Le:.3e} m")
print(f" Ion Larmor: r_Li = {self.r_Li:.3e} m")
print(f" Plasma beta: β = {self.beta:.3e}")
print(f" Regime: ", end="")
if self.beta < 0.01:
print("Strongly magnetized (β << 1)")
elif self.beta < 0.1:
print("Magnetized (β < 1)")
elif self.beta < 10:
print("Moderate β")
else:
print("Weakly magnetized (β > 1)")
print("-"*60)
print(f"Frequency Orderings:")
print(f" ω_ci/ω_ce = {self.omega_ci/self.omega_ce:.3e}")
print(f" ω_ce/ω_pe = {self.omega_ce/self.omega_pe:.3e}")
print(f" ω_pi/ω_pe = {self.omega_pi/self.omega_pe:.3e}")
print("-"*60)
print(f"Length Scale Orderings:")
print(f" r_Le/λ_D = {self.r_Le/self.lambda_D:.3e}")
print(f" r_Li/r_Le = {self.r_Li/self.r_Le:.3e}")
print("="*60)
# Example usage
if __name__ == "__main__":
print("\n### Example 1: Tokamak Core ###\n")
tokamak = PlasmaParameters(n_e=1e20, T_e=10000, B=5, T_i=10000, Z=1, A=2)
tokamak.print_summary()
print("\n### Example 2: Solar Wind (1 AU) ###\n")
solar_wind = PlasmaParameters(n_e=1e7, T_e=10, B=1e-9, T_i=10, Z=1, A=1)
solar_wind.print_summary()
print("\n### Example 3: Fluorescent Lamp ###\n")
fluorescent = PlasmaParameters(n_e=1e16, T_e=2, B=0, T_i=0.1, Z=1, A=40)
fluorescent.print_summary()
8.2 Plasma Parameter Space Visualization¶
Let's visualize the parameter space of different plasmas:
def plot_plasma_parameter_space():
"""Plot various plasmas in (n, T) space with characteristic regions."""
# Define various plasmas
plasmas = {
'Interstellar medium': (1e6, 1),
'Solar wind': (1e7, 10),
'Ionosphere': (1e12, 0.1),
'Solar corona': (1e14, 100),
'Glow discharge': (1e16, 3),
'Tokamak edge': (1e19, 100),
'Tokamak core': (1e20, 10000),
'Laser plasma': (1e26, 1000),
'White dwarf': (1e36, 10000),
}
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6))
# Plot 1: n-T space with Debye length contours
n_range = np.logspace(4, 38, 100)
T_range = np.logspace(-2, 5, 100)
N, T = np.meshgrid(n_range, T_range)
# Debye length [m]
lambda_D = np.sqrt(epsilon_0 * k_B * T * eV_to_K / (N * e**2))
contour1 = ax1.contour(N, T, lambda_D,
levels=[1e-12, 1e-9, 1e-6, 1e-3, 1, 1e3],
colors='gray', alpha=0.5, linewidths=0.8)
ax1.clabel(contour1, inline=True, fontsize=8, fmt='λ_D=%gm')
# Plot plasmas
for name, (n, T_eV) in plasmas.items():
ax1.scatter(n, T_eV, s=100, alpha=0.7, edgecolors='black', linewidths=1.5)
ax1.annotate(name, (n, T_eV), fontsize=9,
xytext=(5, 5), textcoords='offset points')
# Plasma parameter N_D = 1 line
T_for_ND1 = 3/(4*np.pi) * (e**2 / (epsilon_0 * k_B * eV_to_K)) * n_range**(-2/3)
ax1.plot(n_range, T_for_ND1, 'r--', linewidth=2,
label=r'$n\lambda_D^3 = 1$ (plasma boundary)')
ax1.set_xlabel(r'Electron Density $n_e$ [m$^{-3}$]', fontsize=12)
ax1.set_ylabel(r'Temperature $T$ [eV]', fontsize=12)
ax1.set_xscale('log')
ax1.set_yscale('log')
ax1.set_xlim(1e4, 1e38)
ax1.set_ylim(1e-2, 1e5)
ax1.grid(True, alpha=0.3)
ax1.legend(fontsize=10)
ax1.set_title('Plasma Parameter Space', fontsize=14, fontweight='bold')
# Plot 2: Coupling parameter space
# Compute coupling parameter Γ
a = (3/(4*np.pi*N))**(1/3) # mean inter-particle spacing
Gamma = e**2 / (4*np.pi*epsilon_0 * a * k_B * T * eV_to_K)
contour2 = ax2.contourf(N, T, Gamma,
levels=[1e-4, 1e-3, 1e-2, 1e-1, 1, 10, 100],
cmap='RdYlBu_r', alpha=0.7)
cbar = plt.colorbar(contour2, ax=ax2, label=r'Coupling Parameter $\Gamma$')
# Mark Γ = 1 (strongly coupled boundary)
cs = ax2.contour(N, T, Gamma, levels=[1], colors='red', linewidths=3)
ax2.clabel(cs, inline=True, fontsize=12, fmt=r'$\Gamma=1$')
# Plot plasmas
for name, (n, T_eV) in plasmas.items():
ax2.scatter(n, T_eV, s=100, alpha=0.9, edgecolors='black',
linewidths=1.5, zorder=10)
ax2.annotate(name, (n, T_eV), fontsize=9,
xytext=(5, 5), textcoords='offset points')
ax2.set_xlabel(r'Electron Density $n_e$ [m$^{-3}$]', fontsize=12)
ax2.set_ylabel(r'Temperature $T$ [eV]', fontsize=12)
ax2.set_xscale('log')
ax2.set_yscale('log')
ax2.set_xlim(1e4, 1e38)
ax2.set_ylim(1e-2, 1e5)
ax2.grid(True, alpha=0.3)
ax2.set_title('Plasma Coupling Parameter Space', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.savefig('plasma_parameter_space.png', dpi=150, bbox_inches='tight')
plt.show()
# Run visualization
plot_plasma_parameter_space()
8.3 Frequency and Length Scale Comparison¶
def compare_plasma_scales():
"""Compare characteristic frequencies and length scales for various plasmas."""
plasma_configs = {
'Tokamak core': {'n_e': 1e20, 'T_e': 10000, 'B': 5, 'T_i': 10000},
'Tokamak edge': {'n_e': 1e19, 'T_e': 100, 'B': 5, 'T_i': 100},
'Solar wind': {'n_e': 1e7, 'T_e': 10, 'B': 1e-9, 'T_i': 10},
'Ionosphere': {'n_e': 1e12, 'T_e': 0.1, 'B': 5e-5, 'T_i': 0.1},
'Fluorescent': {'n_e': 1e16, 'T_e': 2, 'B': 0, 'T_i': 0.1},
}
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
names = list(plasma_configs.keys())
colors = plt.cm.Set2(np.linspace(0, 1, len(names)))
# Compute parameters
results = {}
for name, config in plasma_configs.items():
pp = PlasmaParameters(**config)
results[name] = pp
# Plot 1: Frequencies
ax = axes[0, 0]
x = np.arange(len(names))
width = 0.2
omega_pe_vals = [results[n].omega_pe for n in names]
omega_pi_vals = [results[n].omega_pi for n in names]
omega_ce_vals = [results[n].omega_ce if results[n].omega_ce else 0 for n in names]
omega_ci_vals = [results[n].omega_ci if results[n].omega_ci else 0 for n in names]
ax.bar(x - 1.5*width, omega_pe_vals, width, label=r'$\omega_{pe}$', alpha=0.8)
ax.bar(x - 0.5*width, omega_pi_vals, width, label=r'$\omega_{pi}$', alpha=0.8)
ax.bar(x + 0.5*width, omega_ce_vals, width, label=r'$\omega_{ce}$', alpha=0.8)
ax.bar(x + 1.5*width, omega_ci_vals, width, label=r'$\omega_{ci}$', alpha=0.8)
ax.set_ylabel('Frequency [rad/s]', fontsize=11)
ax.set_yscale('log')
ax.set_xticks(x)
ax.set_xticklabels(names, rotation=20, ha='right')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, axis='y')
ax.set_title('Characteristic Frequencies', fontsize=12, fontweight='bold')
# Plot 2: Length scales
ax = axes[0, 1]
lambda_D_vals = [results[n].lambda_D for n in names]
r_Le_vals = [results[n].r_Le if results[n].r_Le else np.nan for n in names]
r_Li_vals = [results[n].r_Li if results[n].r_Li else np.nan for n in names]
ax.bar(x - width, lambda_D_vals, width, label=r'$\lambda_D$', alpha=0.8)
ax.bar(x, r_Le_vals, width, label=r'$r_{Le}$', alpha=0.8)
ax.bar(x + width, r_Li_vals, width, label=r'$r_{Li}$', alpha=0.8)
ax.set_ylabel('Length [m]', fontsize=11)
ax.set_yscale('log')
ax.set_xticks(x)
ax.set_xticklabels(names, rotation=20, ha='right')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, axis='y')
ax.set_title('Characteristic Length Scales', fontsize=12, fontweight='bold')
# Plot 3: Plasma parameter and Beta
ax = axes[1, 0]
N_D_vals = [results[n].N_D for n in names]
ax.bar(x, N_D_vals, color=colors, alpha=0.8, edgecolor='black')
ax.axhline(y=1, color='red', linestyle='--', linewidth=2, label=r'$N_D = 1$')
ax.set_ylabel(r'Plasma Parameter $N_D$', fontsize=11)
ax.set_yscale('log')
ax.set_xticks(x)
ax.set_xticklabels(names, rotation=20, ha='right')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, axis='y')
ax.set_title('Plasma Parameter (Debye sphere population)', fontsize=12, fontweight='bold')
# Plot 4: Beta
ax = axes[1, 1]
beta_vals = [results[n].beta if results[n].beta else np.nan for n in names]
ax.bar(x, beta_vals, color=colors, alpha=0.8, edgecolor='black')
ax.axhline(y=1, color='red', linestyle='--', linewidth=2, label=r'$\beta = 1$')
ax.set_ylabel(r'Plasma Beta $\beta$', fontsize=11)
ax.set_yscale('log')
ax.set_xticks(x)
ax.set_xticklabels(names, rotation=20, ha='right')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, axis='y')
ax.set_title('Plasma Beta (thermal/magnetic pressure)', fontsize=12, fontweight='bold')
plt.tight_layout()
plt.savefig('plasma_scales_comparison.png', dpi=150, bbox_inches='tight')
plt.show()
# Run comparison
compare_plasma_scales()
8.4 Interactive Parameter Explorer¶
def interactive_parameter_scan():
"""
Scan plasma parameters to understand scaling relationships.
"""
# Vary density at fixed temperature
n_vals = np.logspace(14, 22, 50)
T_fixed = 1000 # eV
B_fixed = 2 # T
lambda_D = []
omega_pe = []
r_Le = []
beta = []
for n in n_vals:
pp = PlasmaParameters(n_e=n, T_e=T_fixed, B=B_fixed)
lambda_D.append(pp.lambda_D)
omega_pe.append(pp.omega_pe)
r_Le.append(pp.r_Le)
beta.append(pp.beta)
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
ax = axes[0, 0]
ax.loglog(n_vals, lambda_D, 'b-', linewidth=2)
ax.set_xlabel(r'Density $n_e$ [m$^{-3}$]', fontsize=11)
ax.set_ylabel(r'Debye Length $\lambda_D$ [m]', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$\lambda_D \propto n^{-1/2}$', fontsize=12)
ax = axes[0, 1]
ax.loglog(n_vals, omega_pe, 'r-', linewidth=2)
ax.set_xlabel(r'Density $n_e$ [m$^{-3}$]', fontsize=11)
ax.set_ylabel(r'Plasma Frequency $\omega_{pe}$ [rad/s]', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$\omega_{pe} \propto n^{1/2}$', fontsize=12)
ax = axes[1, 0]
ax.loglog(n_vals, r_Le, 'g-', linewidth=2)
ax.set_xlabel(r'Density $n_e$ [m$^{-3}$]', fontsize=11)
ax.set_ylabel(r'Electron Larmor Radius $r_{Le}$ [m]', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$r_{Le}$ independent of $n$ (fixed $T, B$)', fontsize=12)
ax = axes[1, 1]
ax.loglog(n_vals, beta, 'm-', linewidth=2)
ax.set_xlabel(r'Density $n_e$ [m$^{-3}$]', fontsize=11)
ax.set_ylabel(r'Plasma Beta $\beta$', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$\beta \propto n$ (fixed $T, B$)', fontsize=12)
plt.suptitle(f'Parameter Scaling with Density (T={T_fixed} eV, B={B_fixed} T)',
fontsize=14, fontweight='bold')
plt.tight_layout()
plt.savefig('parameter_scaling_density.png', dpi=150, bbox_inches='tight')
plt.show()
# Now vary temperature at fixed density
T_vals = np.logspace(0, 4, 50)
n_fixed = 1e19 # m^-3
lambda_D = []
v_te = []
r_Le = []
beta = []
for T in T_vals:
pp = PlasmaParameters(n_e=n_fixed, T_e=T, B=B_fixed)
lambda_D.append(pp.lambda_D)
v_te.append(pp.v_te)
r_Le.append(pp.r_Le)
beta.append(pp.beta)
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
ax = axes[0, 0]
ax.loglog(T_vals, lambda_D, 'b-', linewidth=2)
ax.set_xlabel(r'Temperature $T_e$ [eV]', fontsize=11)
ax.set_ylabel(r'Debye Length $\lambda_D$ [m]', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$\lambda_D \propto T^{1/2}$', fontsize=12)
ax = axes[0, 1]
ax.loglog(T_vals, v_te, 'r-', linewidth=2)
ax.set_xlabel(r'Temperature $T_e$ [eV]', fontsize=11)
ax.set_ylabel(r'Thermal Velocity $v_{te}$ [m/s]', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$v_{te} \propto T^{1/2}$', fontsize=12)
ax = axes[1, 0]
ax.loglog(T_vals, r_Le, 'g-', linewidth=2)
ax.set_xlabel(r'Temperature $T_e$ [eV]', fontsize=11)
ax.set_ylabel(r'Electron Larmor Radius $r_{Le}$ [m]', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$r_{Le} \propto T^{1/2}$', fontsize=12)
ax = axes[1, 1]
ax.loglog(T_vals, beta, 'm-', linewidth=2)
ax.set_xlabel(r'Temperature $T_e$ [eV]', fontsize=11)
ax.set_ylabel(r'Plasma Beta $\beta$', fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_title(r'$\beta \propto T$ (fixed $n, B$)', fontsize=12)
plt.suptitle(f'Parameter Scaling with Temperature (n={n_fixed:.0e} m⁻³, B={B_fixed} T)',
fontsize=14, fontweight='bold')
plt.tight_layout()
plt.savefig('parameter_scaling_temperature.png', dpi=150, bbox_inches='tight')
plt.show()
# Run interactive scans
interactive_parameter_scan()
Summary¶
In this lesson, we introduced plasma as the fourth state of matter and derived the fundamental parameters that characterize plasma behavior:
-
Debye shielding: Plasmas screen charge imbalances over the Debye length $\lambda_D = \sqrt{\epsilon_0 k_B T/(ne^2)}$, converting the long-range Coulomb force into an exponentially screened interaction.
-
Plasma criteria: For collective behavior, we require $n\lambda_D^3 \gg 1$ (many particles in Debye sphere) and quasi-neutrality at scales $L \gg \lambda_D$.
-
Plasma frequency: The natural electrostatic oscillation frequency $\omega_{pe} = \sqrt{ne^2/(\epsilon_0 m_e)}$ sets the fundamental timescale for electron dynamics.
-
Gyrofrequency and Larmor radius: In magnetic fields, particles gyrate at $\omega_c = |q|B/m$ with radius $r_L = v_\perp/\omega_c$, introducing anisotropy and new length/time scales.
-
Plasma beta: The ratio $\beta = 2\mu_0 nk_B T/B^2$ determines whether thermal or magnetic pressure dominates, with profound implications for confinement and stability.
These parameters form the foundation for understanding plasma behavior across 40 orders of magnitude in density and temperature—from the interstellar medium to fusion devices.
Practice Problems¶
Problem 1: Plasma Parameter Calculation¶
Consider a low-temperature plasma with $n_e = 10^{17}$ m$^{-3}$, $T_e = 3$ eV, and $B = 0.01$ T.
(a) Calculate the Debye length, plasma frequency, electron gyrofrequency, and electron Larmor radius.
(b) Verify that this system satisfies the plasma criteria $n\lambda_D^3 \gg 1$.
(c) Compare the timescales $\omega_{pe}^{-1}$ and $\omega_{ce}^{-1}$. Which is faster?
(d) If ions are argon (A=40), compute the ion gyrofrequency and Larmor radius. Compare to electron values.
Problem 2: Debye Shielding in a Tokamak¶
A tokamak has core parameters: $n_e = 10^{20}$ m$^{-3}$, $T_e = 15$ keV, $T_i = 12$ keV.
(a) Calculate the electron and ion contributions to the Debye length separately, then find the effective Debye length.
(b) At what distance is the potential from a test charge reduced to $1/e$ of its Coulomb value?
(c) If the tokamak has a minor radius $a = 1$ m, verify that quasi-neutrality is an excellent approximation.
(d) How many electrons are within one Debye sphere?
Problem 3: Scaling Analysis¶
For a hydrogen plasma in a magnetic field $B = 2$ T:
(a) Find the density $n$ at which the electron Larmor radius equals the Debye length, assuming $T_e = 1$ keV.
(b) Derive a general expression for the ratio $r_{Le}/\lambda_D$ in terms of $n$, $T_e$, and $B$.
(c) For the density found in (a), compute the plasma beta. Is this a magnetized or unmagnetized plasma?
Problem 4: Solar Corona Parameters¶
The solar corona has $n_e \sim 10^{14}$ m$^{-3}$, $T_e \sim 100$ eV, and $B \sim 10^{-2}$ T.
(a) Compute all characteristic plasma parameters.
(b) Determine the plasma beta. What does this tell you about magnetic confinement of the corona?
(c) The Alfvén velocity is $v_A = B/\sqrt{\mu_0 n_i m_i}$ (for protons). Compare $v_A$ to the electron thermal velocity. What does this imply for wave propagation?
(d) At what distance from the Sun (in solar radii $R_\odot$) would the plasma become unmagnetized ($\beta \sim 1$), assuming density falls as $n \propto r^{-2}$ and $B \propto r^{-2}$?
Problem 5: Laboratory Plasma Regimes¶
You are designing a plasma experiment and can vary $n$ and $T$ independently, with $10^{16} \le n \le 10^{21}$ m$^{-3}$ and $1 \le T_e \le 1000$ eV. A magnetic field of $B = 1$ T is available.
(a) Create a plot in $(n, T)$ space showing contours of constant $\lambda_D$, $\omega_{pe}$, $r_{Le}$, and $\beta$.
(b) Identify regions where: - The plasma is weakly coupled ($\Gamma < 0.1$) - The electron Larmor radius is smaller than 1 mm - The plasma beta is less than 0.01
(c) For $n = 10^{19}$ m$^{-3}$ and $T_e = 100$ eV, compute the collision frequency (you'll need concepts from Lesson 2—use $\nu_{ei} \sim 10^{-6} n_e \ln\Lambda / T_e^{3/2}$ in SI units with $\ln\Lambda \approx 15$ as an estimate).
(d) Determine whether this plasma is collisional or collisionless by comparing $\nu_{ei}$ to $\omega_{ce}$.
Previous: Overview | Next: Coulomb Collisions