Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ok-landscape
GitHub Repository: Ok-landscape/computational-pipeline
Path: blob/main/latex-templates/templates/plasma-physics/plasma_parameters.tex
51 views
unlisted
1
\documentclass[11pt,a4paper]{article}
2
\usepackage[utf8]{inputenc}
3
\usepackage[T1]{fontenc}
4
\usepackage{amsmath,amssymb}
5
\usepackage{graphicx}
6
\usepackage{booktabs}
7
\usepackage{siunitx}
8
\usepackage{geometry}
9
\geometry{margin=1in}
10
\usepackage{pythontex}
11
\usepackage{hyperref}
12
\usepackage{float}
13
14
\title{Fundamental Plasma Parameters:\\From Debye Shielding to Wave Propagation}
15
\author{Computational Plasma Physics Laboratory}
16
\date{\today}
17
18
\begin{document}
19
\maketitle
20
21
\begin{abstract}
22
We present a comprehensive computational analysis of fundamental plasma parameters spanning laboratory, space, and fusion plasmas. Starting from the Debye length and plasma frequency, we derive characteristic length and time scales that govern collective behavior. We compute the plasma parameter $N_D$ to verify the plasma approximation, analyze Coulomb collision frequencies and Spitzer conductivity, and examine magnetized plasma dynamics through Larmor radii and cyclotron frequencies. Wave propagation characteristics including Langmuir, ion acoustic, and Alfvén waves are calculated across parameter regimes spanning electron densities from $10^{6}$ to $10^{26}$ m$^{-3}$ and temperatures from 0.1 eV to 10 keV. Our results demonstrate that the dimensionless ratios of these fundamental scales determine whether plasmas are collisional or collisionless, magnetized or unmagnetized, and which wave modes can propagate.
23
\end{abstract}
24
25
\section{Introduction}
26
27
Plasma behavior is governed by a hierarchy of characteristic length and time scales that emerge from the interplay between electromagnetic forces, thermal motion, and magnetic confinement \cite{chen1984introduction, goldston1995introduction}. The most fundamental of these is the Debye length $\lambda_D$, which characterizes the distance over which electrostatic perturbations are shielded by collective electron redistribution \cite{debye1923theory}. When the number of particles in a Debye sphere $N_D = n \lambda_D^3$ greatly exceeds unity, collective effects dominate individual particle interactions, and the system exhibits true plasma behavior \cite{spitzer1956physics}.
28
29
The plasma frequency $\omega_{pe}$ sets the fundamental time scale for electrostatic oscillations, arising when electrons are displaced from a uniform ion background \cite{tonks1929oscillations}. The ratio of collision frequency to plasma frequency determines whether the plasma is collisional (fluid-like) or collisionless (kinetic), fundamentally altering the physics of transport and wave propagation \cite{krall1973principles}.
30
31
In magnetized plasmas, charged particles gyrate around magnetic field lines with cyclotron frequency $\omega_c$ and Larmor radius $r_L$, introducing anisotropy and enabling new wave modes including electromagnetic Alfvén waves that transport energy along field lines at the Alfvén velocity \cite{alfven1942existence}. The magnetization parameter $\omega_c/\nu_{coll}$ determines whether particles complete many gyro-orbits between collisions, a critical distinction for confinement in fusion devices \cite{wesson2011tokamaks}.
32
33
This report computes these fundamental parameters across the full range of natural and laboratory plasmas, from the tenuous solar wind to dense fusion cores, demonstrating how dimensionless ratios constructed from these scales predict plasma regime transitions and govern collective phenomena.
34
35
\begin{pycode}
36
import numpy as np
37
import matplotlib.pyplot as plt
38
from scipy import constants
39
from scipy.optimize import fsolve
40
41
# Configure matplotlib for publication-quality plots
42
plt.rcParams['text.usetex'] = True
43
plt.rcParams['font.family'] = 'serif'
44
plt.rcParams['font.size'] = 11
45
46
# Physical constants
47
epsilon_0 = constants.epsilon_0 # Permittivity of free space [F/m]
48
e = constants.e # Elementary charge [C]
49
m_e = constants.m_e # Electron mass [kg]
50
m_p = constants.m_p # Proton mass [kg]
51
k_B = constants.k # Boltzmann constant [J/K]
52
c = constants.c # Speed of light [m/s]
53
mu_0 = constants.mu_0 # Permeability of free space [H/m]
54
55
# Function definitions for plasma parameters
56
def debye_length(n_e, T_e):
57
"""
58
Compute electron Debye length.
59
60
Parameters:
61
-----------
62
n_e : float or array
63
Electron density [m^-3]
64
T_e : float or array
65
Electron temperature [eV]
66
67
Returns:
68
--------
69
lambda_D : float or array
70
Debye length [m]
71
"""
72
T_e_joules = T_e * e # Convert eV to Joules
73
return np.sqrt(epsilon_0 * T_e_joules / (n_e * e**2))
74
75
def plasma_frequency(n_e):
76
"""
77
Compute electron plasma frequency.
78
79
Parameters:
80
-----------
81
n_e : float or array
82
Electron density [m^-3]
83
84
Returns:
85
--------
86
omega_pe : float or array
87
Plasma frequency [rad/s]
88
"""
89
return np.sqrt(n_e * e**2 / (epsilon_0 * m_e))
90
91
def plasma_parameter(n_e, T_e):
92
"""
93
Compute number of particles in Debye sphere.
94
95
Parameters:
96
-----------
97
n_e : float or array
98
Electron density [m^-3]
99
T_e : float or array
100
Electron temperature [eV]
101
102
Returns:
103
--------
104
N_D : float or array
105
Number of particles in Debye sphere (dimensionless)
106
"""
107
lambda_D = debye_length(n_e, T_e)
108
return (4.0/3.0) * np.pi * n_e * lambda_D**3
109
110
def coulomb_logarithm(n_e, T_e):
111
"""
112
Compute Coulomb logarithm for electron-ion collisions.
113
114
Parameters:
115
-----------
116
n_e : float or array
117
Electron density [m^-3]
118
T_e : float or array
119
Electron temperature [eV]
120
121
Returns:
122
--------
123
ln_Lambda : float or array
124
Coulomb logarithm (dimensionless)
125
"""
126
# Approximate formula valid for most plasmas
127
return 23.0 - 0.5 * np.log(n_e / 1e6) + 1.25 * np.log(T_e)
128
129
def collision_frequency(n_e, T_e):
130
"""
131
Compute electron-ion collision frequency (90-degree deflection).
132
133
Parameters:
134
-----------
135
n_e : float or array
136
Electron density [m^-3]
137
T_e : float or array
138
Electron temperature [eV]
139
140
Returns:
141
--------
142
nu_ei : float or array
143
Collision frequency [Hz]
144
"""
145
T_e_joules = T_e * e
146
ln_Lambda = coulomb_logarithm(n_e, T_e)
147
# Spitzer collision frequency
148
return (n_e * e**4 * ln_Lambda) / (12 * np.pi**1.5 * epsilon_0**2 * m_e**0.5 * T_e_joules**1.5)
149
150
def mean_free_path(n_e, T_e):
151
"""
152
Compute electron-ion mean free path.
153
154
Parameters:
155
-----------
156
n_e : float or array
157
Electron density [m^-3]
158
T_e : float or array
159
Electron temperature [eV]
160
161
Returns:
162
--------
163
lambda_mfp : float or array
164
Mean free path [m]
165
"""
166
v_thermal = np.sqrt(2 * T_e * e / m_e)
167
nu_ei = collision_frequency(n_e, T_e)
168
return v_thermal / nu_ei
169
170
def spitzer_conductivity(T_e):
171
"""
172
Compute Spitzer electrical conductivity.
173
174
Parameters:
175
-----------
176
T_e : float or array
177
Electron temperature [eV]
178
179
Returns:
180
--------
181
sigma : float or array
182
Electrical conductivity [S/m]
183
"""
184
T_e_joules = T_e * e
185
# Spitzer conductivity (SI units)
186
return 1.96e4 * (T_e)**1.5 # Simplified form in S/m
187
188
def cyclotron_frequency(B, m):
189
"""
190
Compute cyclotron frequency.
191
192
Parameters:
193
-----------
194
B : float or array
195
Magnetic field strength [T]
196
m : float
197
Particle mass [kg]
198
199
Returns:
200
--------
201
omega_c : float or array
202
Cyclotron frequency [rad/s]
203
"""
204
return e * B / m
205
206
def larmor_radius(v_perp, B, m):
207
"""
208
Compute Larmor radius.
209
210
Parameters:
211
-----------
212
v_perp : float or array
213
Perpendicular velocity [m/s]
214
B : float or array
215
Magnetic field strength [T]
216
m : float
217
Particle mass [kg]
218
219
Returns:
220
--------
221
r_L : float or array
222
Larmor radius [m]
223
"""
224
omega_c = cyclotron_frequency(B, m)
225
return v_perp / omega_c
226
227
def thermal_larmor_radius(T, B, m):
228
"""
229
Compute thermal Larmor radius.
230
231
Parameters:
232
-----------
233
T : float or array
234
Temperature [eV]
235
B : float or array
236
Magnetic field strength [T]
237
m : float
238
Particle mass [kg]
239
240
Returns:
241
--------
242
r_L : float or array
243
Thermal Larmor radius [m]
244
"""
245
v_thermal = np.sqrt(2 * T * e / m)
246
return larmor_radius(v_thermal, B, m)
247
248
def alfven_velocity(B, n):
249
"""
250
Compute Alfvén velocity.
251
252
Parameters:
253
-----------
254
B : float or array
255
Magnetic field strength [T]
256
n : float or array
257
Ion density [m^-3]
258
259
Returns:
260
--------
261
v_A : float or array
262
Alfvén velocity [m/s]
263
"""
264
return B / np.sqrt(mu_0 * n * m_p)
265
266
def ion_acoustic_velocity(T_e, T_i, gamma_e=1, gamma_i=3):
267
"""
268
Compute ion acoustic velocity.
269
270
Parameters:
271
-----------
272
T_e : float or array
273
Electron temperature [eV]
274
T_i : float or array
275
Ion temperature [eV]
276
gamma_e : float
277
Electron adiabatic index (1 for isothermal, 3 for adiabatic)
278
gamma_i : float
279
Ion adiabatic index
280
281
Returns:
282
--------
283
c_s : float or array
284
Ion acoustic velocity [m/s]
285
"""
286
return np.sqrt((gamma_e * T_e * e + gamma_i * T_i * e) / m_p)
287
288
\end{pycode}
289
290
\section{Debye Shielding and Plasma Frequency}
291
292
The Debye length arises from a balance between electrostatic potential energy and thermal kinetic energy. When a test charge is introduced into a plasma, electrons redistribute to screen the perturbation over a characteristic distance:
293
\begin{equation}
294
\lambda_D = \sqrt{\frac{\epsilon_0 k_B T_e}{n_e e^2}} = 743 \sqrt{\frac{T_e[\text{eV}]}{n_e[\text{m}^{-3}]}} \, \text{m}
295
\end{equation}
296
297
The electron plasma frequency represents collective oscillations when charge displacement creates a restoring electric field:
298
\begin{equation}
299
\omega_{pe} = \sqrt{\frac{n_e e^2}{\epsilon_0 m_e}} = 56.4 \sqrt{n_e[\text{m}^{-3}]} \, \text{rad/s}
300
\end{equation}
301
302
For a system to exhibit collective plasma behavior, the number of particles in a Debye sphere must greatly exceed unity:
303
\begin{equation}
304
N_D = n_e \lambda_D^3 = \frac{4\pi}{3} n_e \left(\frac{\epsilon_0 k_B T_e}{n_e e^2}\right)^{3/2} \gg 1
305
\end{equation}
306
307
\begin{pycode}
308
# Parameter space for different plasma regimes
309
n_e_range = np.logspace(6, 26, 200) # 10^6 to 10^26 m^-3
310
311
# Representative temperatures
312
temperatures = {
313
'Solar Corona': 100, # eV
314
'Tokamak Edge': 10, # eV
315
'Tokamak Core': 5000, # eV
316
'Ionosphere': 0.1 # eV
317
}
318
319
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(14, 12))
320
321
# Plot 1: Debye length vs density for different temperatures
322
for label, T_e in temperatures.items():
323
lambda_D = debye_length(n_e_range, T_e)
324
ax1.loglog(n_e_range, lambda_D * 1e6, linewidth=2.5, label=f'{label} ({T_e} eV)')
325
326
# Mark specific plasma regimes
327
regimes = {
328
'Ionosphere': (1e11, 0.1),
329
'Solar Wind': (1e7, 10),
330
'Solar Corona': (1e14, 100),
331
'Glow Discharge': (1e16, 2),
332
'Tokamak Edge': (1e19, 10),
333
'Tokamak Core': (1e20, 5000),
334
'ICF Compression': (1e26, 1000)
335
}
336
337
for regime, (n, T) in regimes.items():
338
ld = debye_length(n, T) * 1e6
339
ax1.plot(n, ld, 'o', markersize=8, color='black')
340
ax1.annotate(regime, xy=(n, ld), xytext=(10, 10),
341
textcoords='offset points', fontsize=8,
342
bbox=dict(boxstyle='round,pad=0.3', facecolor='yellow', alpha=0.5))
343
344
ax1.set_xlabel(r'Electron Density $n_e$ [m$^{-3}$]', fontsize=12)
345
ax1.set_ylabel(r'Debye Length $\lambda_D$ [$\mu$m]', fontsize=12)
346
ax1.set_title(r'Debye Shielding Length Across Plasma Regimes', fontsize=13, fontweight='bold')
347
ax1.legend(loc='upper right', fontsize=9)
348
ax1.grid(True, alpha=0.3, which='both')
349
ax1.set_xlim([1e6, 1e27])
350
ax1.set_ylim([1e-6, 1e6])
351
352
# Plot 2: Plasma frequency and period
353
omega_pe = plasma_frequency(n_e_range)
354
f_pe = omega_pe / (2 * np.pi)
355
tau_pe = 1 / f_pe
356
357
ax2.loglog(n_e_range, f_pe, 'b-', linewidth=2.5, label=r'$f_{pe}$ [Hz]')
358
ax2_twin = ax2.twinx()
359
ax2_twin.loglog(n_e_range, tau_pe * 1e12, 'r--', linewidth=2.5, label=r'$\tau_{pe}$ [ps]')
360
361
ax2.set_xlabel(r'Electron Density $n_e$ [m$^{-3}$]', fontsize=12)
362
ax2.set_ylabel(r'Plasma Frequency $f_{pe}$ [Hz]', fontsize=12, color='b')
363
ax2_twin.set_ylabel(r'Plasma Period $\tau_{pe}$ [ps]', fontsize=12, color='r')
364
ax2.set_title(r'Electron Plasma Oscillation Timescale', fontsize=13, fontweight='bold')
365
ax2.tick_params(axis='y', labelcolor='b')
366
ax2_twin.tick_params(axis='y', labelcolor='r')
367
ax2.grid(True, alpha=0.3, which='both')
368
ax2.legend(loc='upper left', fontsize=10)
369
ax2_twin.legend(loc='lower right', fontsize=10)
370
371
# Plot 3: Plasma parameter N_D
372
T_e_range = np.logspace(-1, 4, 200) # 0.1 to 10,000 eV
373
N_D_grid = np.zeros((len(n_e_range), len(T_e_range)))
374
375
for i, n in enumerate(n_e_range):
376
for j, T in enumerate(T_e_range):
377
N_D_grid[i, j] = plasma_parameter(n, T)
378
379
# Create contour plot
380
levels = np.logspace(-2, 12, 15)
381
cs = ax3.contourf(T_e_range, n_e_range, N_D_grid, levels=levels,
382
cmap='RdYlGn', norm=plt.matplotlib.colors.LogNorm())
383
ax3.contour(T_e_range, n_e_range, N_D_grid, levels=[1], colors='black',
384
linewidths=3, linestyles='--')
385
386
# Mark regime boundaries
387
ax3.annotate(r'$N_D < 1$: Not a Plasma', xy=(0.2, 1e8), fontsize=11,
388
bbox=dict(boxstyle='round', facecolor='red', alpha=0.7))
389
ax3.annotate(r'$N_D \gg 1$: Collective Behavior', xy=(50, 1e18), fontsize=11,
390
bbox=dict(boxstyle='round', facecolor='green', alpha=0.7))
391
392
ax3.set_xscale('log')
393
ax3.set_yscale('log')
394
ax3.set_xlabel(r'Electron Temperature $T_e$ [eV]', fontsize=12)
395
ax3.set_ylabel(r'Electron Density $n_e$ [m$^{-3}$]', fontsize=12)
396
ax3.set_title(r'Plasma Parameter $N_D = n_e \lambda_D^3$', fontsize=13, fontweight='bold')
397
cbar = plt.colorbar(cs, ax=ax3)
398
cbar.set_label(r'$N_D$ (dimensionless)', fontsize=11)
399
400
# Plot regime points
401
for regime, (n, T) in regimes.items():
402
N_D_val = plasma_parameter(n, T)
403
if N_D_val > 1:
404
ax3.plot(T, n, 'o', markersize=6, color='blue', markeredgecolor='black')
405
406
# Plot 4: Ratio of Debye length to system size
407
# For tokamak-like parameters
408
n_tokamak = np.logspace(18, 21, 100)
409
T_tokamak = np.logspace(0, 4, 100)
410
system_size = 1.0 # 1 meter characteristic size
411
412
lambda_D_normalized = np.zeros((len(n_tokamak), len(T_tokamak)))
413
for i, n in enumerate(n_tokamak):
414
for j, T in enumerate(T_tokamak):
415
lambda_D_normalized[i, j] = debye_length(n, T) / system_size
416
417
levels_norm = np.logspace(-8, 0, 9)
418
cs2 = ax4.contourf(T_tokamak, n_tokamak, lambda_D_normalized,
419
levels=levels_norm, cmap='viridis',
420
norm=plt.matplotlib.colors.LogNorm())
421
422
ax4.set_xscale('log')
423
ax4.set_yscale('log')
424
ax4.set_xlabel(r'Temperature $T_e$ [eV]', fontsize=12)
425
ax4.set_ylabel(r'Density $n_e$ [m$^{-3}$]', fontsize=12)
426
ax4.set_title(r'Debye Length Normalized to System Size (1 m)', fontsize=13, fontweight='bold')
427
cbar2 = plt.colorbar(cs2, ax=ax4)
428
cbar2.set_label(r'$\lambda_D / L$ (dimensionless)', fontsize=11)
429
430
# Mark fusion-relevant regime
431
ax4.axvspan(1000, 10000, alpha=0.2, color='red', label='Fusion Core')
432
ax4.axhspan(1e19, 1e21, alpha=0.2, color='blue', label='Fusion Density')
433
ax4.legend(loc='lower left', fontsize=9)
434
435
plt.tight_layout()
436
plt.savefig('plasma_parameters_debye_plasma_freq.pdf', dpi=300, bbox_inches='tight')
437
plt.close()
438
439
# Store key values for table
440
debye_values = {}
441
for regime, (n, T) in regimes.items():
442
debye_values[regime] = {
443
'n_e': n,
444
'T_e': T,
445
'lambda_D': debye_length(n, T),
446
'omega_pe': plasma_frequency(n),
447
'N_D': plasma_parameter(n, T)
448
}
449
\end{pycode}
450
451
\begin{figure}[H]
452
\centering
453
\includegraphics[width=0.98\textwidth]{plasma_parameters_debye_plasma_freq.pdf}
454
\caption{Fundamental plasma parameters across density-temperature space. \textbf{Top Left:} Debye shielding length decreases with increasing density as more particles are available to screen perturbations, ranging from millimeters in the ionosphere to nanometers in compressed fusion fuel. Representative regimes span eight orders of magnitude in density. \textbf{Top Right:} Plasma frequency and corresponding oscillation period, showing the fundamental timescale for electrostatic oscillations increases from femtoseconds at solid-density to microseconds in space plasmas. \textbf{Bottom Left:} Plasma parameter $N_D$ in density-temperature space, with the critical boundary $N_D = 1$ (dashed black line) separating strongly-coupled systems from weakly-coupled plasmas where collective effects dominate. Most natural and laboratory plasmas occupy the $N_D \gg 1$ regime (green) where mean-field theory applies. \textbf{Bottom Right:} Ratio of Debye length to system size for fusion-relevant parameters, demonstrating that $\lambda_D/L \ll 1$ ensures quasi-neutrality and justifies the plasma approximation for macroscopic devices.}
455
\end{figure}
456
457
\section{Collisional Processes and Transport}
458
459
Coulomb collisions between charged particles determine transport coefficients and distinguish collisional from collisionless regimes. The 90-degree deflection collision frequency is:
460
\begin{equation}
461
\nu_{ei} = \frac{n_e e^4 \ln\Lambda}{12\pi^{3/2} \epsilon_0^2 m_e^{1/2} (k_B T_e)^{3/2}}
462
\end{equation}
463
464
where $\ln\Lambda$ is the Coulomb logarithm accounting for cumulative small-angle scattering. The electron-ion mean free path is $\lambda_{mfp} = v_{th,e} / \nu_{ei}$, where $v_{th,e} = \sqrt{2k_B T_e / m_e}$ is the thermal velocity.
465
466
The Spitzer electrical conductivity for a fully ionized plasma is:
467
\begin{equation}
468
\sigma_{Spitzer} = 1.96 \times 10^4 \, T_e^{3/2} \, \text{S/m}
469
\end{equation}
470
471
with $T_e$ in eV. This strong temperature dependence ($\sigma \propto T^{3/2}$) arises because faster electrons scatter less frequently and have higher momentum.
472
473
\begin{pycode}
474
# Calculate collision properties
475
T_e_coll = np.logspace(-1, 4, 200) # 0.1 to 10,000 eV
476
477
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(14, 12))
478
479
# Plot 1: Collision frequency vs temperature for different densities
480
densities = [1e18, 1e19, 1e20, 1e21] # m^-3
481
colors = ['blue', 'green', 'orange', 'red']
482
483
for n, color in zip(densities, colors):
484
nu_ei = collision_frequency(n, T_e_coll)
485
omega_pe_val = plasma_frequency(n)
486
487
ax1.loglog(T_e_coll, nu_ei, linewidth=2.5, color=color,
488
label=f'$n_e = {n:.0e}$ m$^{{-3}}$')
489
ax1.axhline(omega_pe_val, linestyle='--', linewidth=1.5, color=color, alpha=0.5)
490
491
ax1.set_xlabel(r'Electron Temperature $T_e$ [eV]', fontsize=12)
492
ax1.set_ylabel(r'Collision Frequency $\nu_{ei}$ [Hz]', fontsize=12)
493
ax1.set_title(r'Electron-Ion Collision Frequency (dashed: $\omega_{pe}$)', fontsize=13, fontweight='bold')
494
ax1.legend(fontsize=10)
495
ax1.grid(True, alpha=0.3, which='both')
496
ax1.set_ylim([1e6, 1e16])
497
498
# Plot 2: Collisionality parameter nu/omega
499
for n, color in zip(densities, colors):
500
nu_ei = collision_frequency(n, T_e_coll)
501
omega_pe_val = plasma_frequency(n)
502
collisionality = nu_ei / omega_pe_val
503
504
ax2.loglog(T_e_coll, collisionality, linewidth=2.5, color=color,
505
label=f'$n_e = {n:.0e}$ m$^{{-3}}$')
506
507
ax2.axhline(1, linestyle='--', linewidth=2, color='black', label=r'$\nu/\omega = 1$')
508
ax2.fill_between(T_e_coll, 1e-6, 1, alpha=0.2, color='blue', label='Collisionless')
509
ax2.fill_between(T_e_coll, 1, 1e6, alpha=0.2, color='red', label='Collisional')
510
511
ax2.set_xlabel(r'Electron Temperature $T_e$ [eV]', fontsize=12)
512
ax2.set_ylabel(r'Collisionality $\nu_{ei}/\omega_{pe}$', fontsize=12)
513
ax2.set_title(r'Collisionality Parameter: Fluid vs Kinetic Regimes', fontsize=13, fontweight='bold')
514
ax2.legend(fontsize=9, loc='upper right')
515
ax2.grid(True, alpha=0.3, which='both')
516
ax2.set_ylim([1e-3, 1e3])
517
518
# Plot 3: Mean free path vs Debye length
519
for n, color in zip(densities, colors):
520
mfp = mean_free_path(n, T_e_coll)
521
ld = debye_length(n, T_e_coll)
522
ratio = mfp / ld
523
524
ax3.loglog(T_e_coll, ratio, linewidth=2.5, color=color,
525
label=f'$n_e = {n:.0e}$ m$^{{-3}}$')
526
527
ax3.axhline(1, linestyle='--', linewidth=2, color='black')
528
ax3.set_xlabel(r'Electron Temperature $T_e$ [eV]', fontsize=12)
529
ax3.set_ylabel(r'$\lambda_{mfp} / \lambda_D$', fontsize=12)
530
ax3.set_title(r'Mean Free Path Normalized to Debye Length', fontsize=13, fontweight='bold')
531
ax3.legend(fontsize=10)
532
ax3.grid(True, alpha=0.3, which='both')
533
534
# Plot 4: Spitzer conductivity
535
sigma_spitzer = spitzer_conductivity(T_e_coll)
536
537
ax4.loglog(T_e_coll, sigma_spitzer, linewidth=3, color='purple')
538
ax4.set_xlabel(r'Electron Temperature $T_e$ [eV]', fontsize=12)
539
ax4.set_ylabel(r'Spitzer Conductivity $\sigma$ [S/m]', fontsize=12)
540
ax4.set_title(r'Electrical Conductivity: $\sigma \propto T_e^{3/2}$', fontsize=13, fontweight='bold')
541
ax4.grid(True, alpha=0.3, which='both')
542
543
# Mark reference materials
544
copper_conductivity = 5.96e7 # S/m at room temperature
545
ax4.axhline(copper_conductivity, linestyle='--', linewidth=2, color='orange',
546
label='Copper (300 K)')
547
548
# Find where plasma exceeds copper conductivity
549
T_exceed_copper = T_e_coll[sigma_spitzer > copper_conductivity][0]
550
ax4.plot(T_exceed_copper, copper_conductivity, 'ro', markersize=10)
551
ax4.annotate(f'$T_e = {T_exceed_copper:.1f}$ eV\n(plasma exceeds Cu)',
552
xy=(T_exceed_copper, copper_conductivity),
553
xytext=(20, -30), textcoords='offset points',
554
fontsize=10, bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.7),
555
arrowprops=dict(arrowstyle='->', lw=2))
556
557
ax4.legend(fontsize=10, loc='lower right')
558
559
plt.tight_layout()
560
plt.savefig('plasma_parameters_collisions.pdf', dpi=300, bbox_inches='tight')
561
plt.close()
562
563
# Calculate collision parameters for regimes
564
collision_data = {}
565
for regime, (n, T) in regimes.items():
566
nu_ei = collision_frequency(n, T)
567
omega_pe_val = plasma_frequency(n)
568
mfp = mean_free_path(n, T)
569
ld = debye_length(n, T)
570
sigma = spitzer_conductivity(T)
571
572
collision_data[regime] = {
573
'nu_ei': nu_ei,
574
'collisionality': nu_ei / omega_pe_val,
575
'mfp': mfp,
576
'mfp_over_ld': mfp / ld,
577
'sigma': sigma
578
}
579
\end{pycode}
580
581
\begin{figure}[H]
582
\centering
583
\includegraphics[width=0.98\textwidth]{plasma_parameters_collisions.pdf}
584
\caption{Collisional processes and transport properties. \textbf{Top Left:} Electron-ion collision frequency decreases as $T^{-3/2}$ due to reduced Coulomb scattering cross-section at higher velocities. Dashed horizontal lines indicate plasma frequencies $\omega_{pe}$ for each density; when $\nu_{ei} < \omega_{pe}$ the plasma oscillates many times between collisions. \textbf{Top Right:} Collisionality parameter $\nu_{ei}/\omega_{pe}$ separates collisional regimes ($> 1$, red shading) where fluid theory applies from collisionless regimes ($< 1$, blue shading) requiring kinetic treatment. Most fusion plasmas are deeply collisionless. \textbf{Bottom Left:} Ratio of electron mean free path to Debye length, demonstrating that collisions typically occur over distances much larger than the screening length, validating the Debye-Hückel approximation. \textbf{Bottom Right:} Spitzer conductivity increases as $T_e^{3/2}$, exceeding copper's conductivity above $\sim 8$ eV. Hot fusion plasmas are excellent electrical conductors despite their low density.}
585
\end{figure}
586
587
\section{Magnetized Plasma Dynamics}
588
589
In the presence of a magnetic field $\mathbf{B}$, charged particles execute helical trajectories with cyclotron frequency:
590
\begin{equation}
591
\omega_c = \frac{eB}{m}
592
\end{equation}
593
594
The Larmor radius (gyroradius) for a particle with perpendicular velocity $v_\perp$ is:
595
\begin{equation}
596
r_L = \frac{v_\perp}{\omega_c} = \frac{m v_\perp}{eB}
597
\end{equation}
598
599
For a thermal distribution, the characteristic thermal Larmor radius is $r_{L,th} = v_{th} / \omega_c$, where $v_{th} = \sqrt{2k_B T/m}$.
600
601
The magnetization parameter $\omega_c \tau_{coll} = \omega_c / \nu$ determines whether particles complete many gyro-orbits between collisions. When $\omega_c \tau_{coll} \gg 1$, transport is highly anisotropic with diffusion predominantly along field lines.
602
603
\begin{pycode}
604
# Magnetic field strengths
605
B_range = np.logspace(-6, 2, 200) # 1 microTesla to 100 Tesla
606
607
# Temperature range
608
T_range = np.logspace(-1, 4, 200) # 0.1 to 10,000 eV
609
610
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(14, 12))
611
612
# Plot 1: Larmor radius vs B field for different temperatures
613
for T in [1, 10, 100, 1000, 5000]:
614
r_L_electron = thermal_larmor_radius(T, B_range, m_e) * 1e3 # mm
615
r_L_proton = thermal_larmor_radius(T, B_range, m_p) * 1e3 # mm
616
617
ax1.loglog(B_range, r_L_electron, linewidth=2, label=f'e$^-$, {T} eV')
618
ax1.loglog(B_range, r_L_proton, linewidth=2, linestyle='--', label=f'p$^+$, {T} eV')
619
620
# Mark typical magnetic fields
621
B_markers = {
622
'Earth': 5e-5,
623
'Tokamak': 5,
624
'Stellarator': 2,
625
'Z-pinch': 10,
626
'Magnetar': 1e8 # Off scale but conceptual
627
}
628
629
for name, B_val in B_markers.items():
630
if B_val < 100:
631
ax1.axvline(B_val, linestyle=':', alpha=0.5, color='gray')
632
ax1.text(B_val, 1e2, name, rotation=90, va='bottom', fontsize=8)
633
634
ax1.set_xlabel(r'Magnetic Field $B$ [T]', fontsize=12)
635
ax1.set_ylabel(r'Thermal Larmor Radius $r_L$ [mm]', fontsize=12)
636
ax1.set_title(r'Larmor Radius: Electron (solid) vs Proton (dashed)', fontsize=13, fontweight='bold')
637
ax1.legend(fontsize=8, ncol=2, loc='upper right')
638
ax1.grid(True, alpha=0.3, which='both')
639
ax1.set_xlim([1e-6, 1e2])
640
ax1.set_ylim([1e-4, 1e4])
641
642
# Plot 2: Cyclotron frequency
643
omega_ce = cyclotron_frequency(B_range, m_e) / (2 * np.pi) # Hz
644
omega_ci = cyclotron_frequency(B_range, m_p) / (2 * np.pi) # Hz
645
646
ax2.loglog(B_range, omega_ce, linewidth=3, color='blue', label='Electron')
647
ax2.loglog(B_range, omega_ci, linewidth=3, color='red', label='Proton')
648
649
ax2.set_xlabel(r'Magnetic Field $B$ [T]', fontsize=12)
650
ax2.set_ylabel(r'Cyclotron Frequency $f_c$ [Hz]', fontsize=12)
651
ax2.set_title(r'Cyclotron Frequency: $f_c = eB/(2\pi m)$', fontsize=13, fontweight='bold')
652
ax2.legend(fontsize=11)
653
ax2.grid(True, alpha=0.3, which='both')
654
655
# Mark frequency bands
656
ax2.axhspan(1e6, 1e9, alpha=0.1, color='green', label='RF range')
657
ax2.axhspan(1e9, 3e11, alpha=0.1, color='yellow', label='Microwave')
658
659
# Plot 3: Magnetization parameter (omega_c / nu)
660
n_mag = 1e20 # Fixed density for tokamak
661
T_mag = np.logspace(0, 4, 200)
662
663
magnetization_electron = np.zeros((len(B_range), len(T_mag)))
664
magnetization_ion = np.zeros((len(B_range), len(T_mag)))
665
666
for i, B in enumerate(B_range):
667
for j, T in enumerate(T_mag):
668
omega_ce_val = cyclotron_frequency(B, m_e)
669
omega_ci_val = cyclotron_frequency(B, m_p)
670
nu_ei = collision_frequency(n_mag, T)
671
672
magnetization_electron[i, j] = omega_ce_val / nu_ei
673
magnetization_ion[i, j] = omega_ci_val / nu_ei
674
675
# Plot electron magnetization
676
levels_mag = np.logspace(-2, 6, 9)
677
cs = ax3.contourf(T_mag, B_range, magnetization_electron,
678
levels=levels_mag, cmap='plasma',
679
norm=plt.matplotlib.colors.LogNorm())
680
ax3.contour(T_mag, B_range, magnetization_electron, levels=[1],
681
colors='white', linewidths=3, linestyles='--')
682
683
ax3.set_xscale('log')
684
ax3.set_yscale('log')
685
ax3.set_xlabel(r'Temperature $T_e$ [eV]', fontsize=12)
686
ax3.set_ylabel(r'Magnetic Field $B$ [T]', fontsize=12)
687
ax3.set_title(r'Electron Magnetization $\omega_{ce}/\nu_{ei}$ ($n_e = 10^{20}$ m$^{-3}$)',
688
fontsize=13, fontweight='bold')
689
cbar = plt.colorbar(cs, ax=ax3)
690
cbar.set_label(r'$\omega_{ce}/\nu_{ei}$', fontsize=11)
691
692
# Mark fusion regime
693
ax3.axvspan(1000, 10000, alpha=0.2, color='cyan')
694
ax3.axhspan(1, 10, alpha=0.2, color='cyan')
695
696
# Plot 4: Ratio of Larmor radius to system size
697
system_size_fusion = 1.0 # 1 meter
698
r_L_normalized = thermal_larmor_radius(1000, B_range, m_e) / system_size_fusion
699
700
ax4.loglog(B_range, r_L_normalized, linewidth=3, color='purple', label='Electron (1 keV)')
701
702
r_L_normalized_ion = thermal_larmor_radius(1000, B_range, m_p) / system_size_fusion
703
ax4.loglog(B_range, r_L_normalized_ion, linewidth=3, color='orange',
704
linestyle='--', label='Proton (1 keV)')
705
706
ax4.axhline(0.01, linestyle=':', linewidth=2, color='green',
707
label=r'$r_L/L = 0.01$ (good confinement)')
708
ax4.axhline(1, linestyle=':', linewidth=2, color='red',
709
label=r'$r_L/L = 1$ (poor confinement)')
710
711
ax4.set_xlabel(r'Magnetic Field $B$ [T]', fontsize=12)
712
ax4.set_ylabel(r'$r_L / L$ (dimensionless)', fontsize=12)
713
ax4.set_title(r'Larmor Radius Normalized to System Size (1 m)', fontsize=13, fontweight='bold')
714
ax4.legend(fontsize=10)
715
ax4.grid(True, alpha=0.3, which='both')
716
ax4.set_xlim([1e-6, 1e2])
717
ax4.set_ylim([1e-6, 1e4])
718
719
# Mark typical fusion fields
720
for name, B_val in [('Earth', 5e-5), ('Tokamak', 5), ('Stellarator', 2)]:
721
if B_val < 100:
722
ax4.axvline(B_val, linestyle=':', alpha=0.5, color='gray', linewidth=1)
723
724
plt.tight_layout()
725
plt.savefig('plasma_parameters_magnetized.pdf', dpi=300, bbox_inches='tight')
726
plt.close()
727
728
# Calculate magnetization parameters
729
magnetic_data = {}
730
magnetic_fields = {
731
'Earth Magnetosphere': 5e-5,
732
'Tokamak (ITER)': 5.3,
733
'Stellarator (W7-X)': 2.5,
734
'RFP': 0.5,
735
'Laser Plasma': 100
736
}
737
738
for field_name, B in magnetic_fields.items():
739
for regime, (n, T) in regimes.items():
740
if 'Tokamak' in regime or 'Solar' in regime:
741
omega_ce_val = cyclotron_frequency(B, m_e)
742
omega_ci_val = cyclotron_frequency(B, m_p)
743
nu_ei = collision_frequency(n, T)
744
r_L_e = thermal_larmor_radius(T, B, m_e)
745
r_L_i = thermal_larmor_radius(T, B, m_p)
746
747
key = f"{regime}_{field_name}"
748
magnetic_data[key] = {
749
'B': B,
750
'omega_ce': omega_ce_val,
751
'omega_ci': omega_ci_val,
752
'magnetization_e': omega_ce_val / nu_ei if nu_ei > 0 else np.inf,
753
'r_L_e': r_L_e,
754
'r_L_i': r_L_i
755
}
756
\end{pycode}
757
758
\begin{figure}[H]
759
\centering
760
\includegraphics[width=0.98\textwidth]{plasma_parameters_magnetized.pdf}
761
\caption{Magnetized plasma parameters and confinement metrics. \textbf{Top Left:} Thermal Larmor radius decreases with magnetic field strength, with electrons (solid) gyrating $\sqrt{m_p/m_e} \approx 43$ times tighter than protons (dashed). Vertical gray lines mark typical field strengths from Earth's magnetosphere ($50 \mu$T) to tokamaks ($\sim 5$ T). At 5 T and 1 keV, electrons have sub-millimeter gyroradii while ions have centimeter-scale orbits. \textbf{Top Right:} Cyclotron frequencies span radio (MHz) to microwave (GHz) bands, determining resonant heating schemes used in fusion devices. \textbf{Bottom Left:} Electron magnetization parameter $\omega_{ce}/\nu_{ei}$ in temperature-field space for fusion density $n_e = 10^{20}$ m$^{-3}$. White dashed contour at unity separates weakly magnetized (fluid-like) from strongly magnetized (guiding-center) regimes. Cyan shading indicates typical tokamak operating space where $\omega_{ce}/\nu_{ei} \sim 10^3$. \textbf{Bottom Right:} Normalized Larmor radius determines confinement quality; $r_L/L < 0.01$ (green line) indicates good magnetic confinement, while $r_L/L \sim 1$ (red line) implies particles reach walls before completing orbits. Multi-Tesla fields are required to confine keV plasmas in meter-scale devices.}
762
\end{figure}
763
764
\section{Wave Propagation in Plasmas}
765
766
Plasmas support a rich spectrum of wave modes arising from coupling between electromagnetic fields, pressure gradients, and magnetic tension. The three fundamental modes are:
767
768
\textbf{1. Langmuir Waves (Electron Plasma Waves):} Electrostatic oscillations at the plasma frequency, representing collective electron motion against a stationary ion background. Dispersion relation:
769
\begin{equation}
770
\omega^2 = \omega_{pe}^2 + \frac{3}{2} k^2 v_{th,e}^2
771
\end{equation}
772
773
\textbf{2. Ion Acoustic Waves:} Electrostatic sound waves in which ion inertia provides the restoring force and electron pressure provides stiffness. Propagation velocity:
774
\begin{equation}
775
c_s = \sqrt{\frac{\gamma_e k_B T_e + \gamma_i k_B T_i}{m_i}}
776
\end{equation}
777
778
For $T_e \gg T_i$ and isothermal electrons ($\gamma_e = 1$), this simplifies to $c_s \approx \sqrt{k_B T_e / m_i}$.
779
780
\textbf{3. Alfvén Waves:} Transverse electromagnetic waves propagating along magnetic field lines with velocity determined by magnetic tension:
781
\begin{equation}
782
v_A = \frac{B}{\sqrt{\mu_0 \rho}} = \frac{B}{\sqrt{\mu_0 n_i m_i}}
783
\end{equation}
784
785
These waves are crucial for energy transport in magnetized plasmas and play a central role in solar corona heating and magnetospheric dynamics.
786
787
\begin{pycode}
788
# Wave propagation calculations
789
n_wave = np.logspace(16, 22, 200) # Density range for wave analysis
790
791
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(14, 12))
792
793
# Plot 1: Phase velocities of different waves
794
T_wave = 100 # eV
795
B_wave = 1.0 # Tesla
796
797
omega_pe_wave = plasma_frequency(n_wave)
798
f_pe_wave = omega_pe_wave / (2 * np.pi)
799
800
# Ion acoustic velocity (assuming T_i = 0.1 * T_e)
801
c_s = ion_acoustic_velocity(T_wave, 0.1 * T_wave, gamma_e=1, gamma_i=3)
802
803
# Alfven velocity
804
v_A_array = alfven_velocity(B_wave, n_wave)
805
806
# Electron thermal velocity
807
v_th_e = np.sqrt(2 * T_wave * e / m_e)
808
809
# Phase velocity of Langmuir wave at k*lambda_D = 0.3
810
k_lambda_D = 0.3
811
lambda_D_array = debye_length(n_wave, T_wave)
812
k_array = k_lambda_D / lambda_D_array
813
v_ph_langmuir = omega_pe_wave / k_array
814
815
ax1.loglog(n_wave, v_A_array * 1e-3, linewidth=3, color='blue', label=r'Alfv\'en $v_A$')
816
ax1.axhline(c_s * 1e-3, linewidth=3, color='green', label=r'Ion Acoustic $c_s$')
817
ax1.axhline(v_th_e * 1e-3, linewidth=3, color='red', linestyle='--', label=r'Electron Thermal $v_{th,e}$')
818
ax1.loglog(n_wave, v_ph_langmuir * 1e-3, linewidth=2.5, color='purple',
819
label=r'Langmuir $v_{ph}$ ($k\lambda_D = 0.3$)')
820
821
ax1.set_xlabel(r'Density $n$ [m$^{-3}$]', fontsize=12)
822
ax1.set_ylabel(r'Velocity [km/s]', fontsize=12)
823
ax1.set_title(f'Wave Phase Velocities ($T_e = {T_wave}$ eV, $B = {B_wave}$ T)',
824
fontsize=13, fontweight='bold')
825
ax1.legend(fontsize=11, loc='best')
826
ax1.grid(True, alpha=0.3, which='both')
827
828
# Speed of light reference
829
ax1.axhline(c * 1e-3, linewidth=2, color='black', linestyle=':', alpha=0.5, label='Speed of light')
830
831
# Plot 2: Langmuir wave dispersion
832
k_range = np.logspace(-3, 2, 300) # k * lambda_D
833
omega_langmuir = np.zeros((len(k_range), 3)) # Three temperatures
834
835
T_dispersion = [10, 100, 1000] # eV
836
n_dispersion = 1e20 # m^-3
837
838
for idx, T_disp in enumerate(T_dispersion):
839
omega_pe_disp = plasma_frequency(n_dispersion)
840
lambda_D_disp = debye_length(n_dispersion, T_disp)
841
v_th_e_disp = np.sqrt(2 * T_disp * e / m_e)
842
843
omega_langmuir[:, idx] = np.sqrt(omega_pe_disp**2 + 1.5 * (k_range / lambda_D_disp * v_th_e_disp)**2)
844
845
ax2.loglog(k_range, omega_langmuir[:, idx] / omega_pe_disp, linewidth=2.5,
846
label=f'$T_e = {T_disp}$ eV')
847
848
ax2.axhline(1, linestyle='--', linewidth=2, color='black', alpha=0.5)
849
ax2.set_xlabel(r'$k\lambda_D$ (dimensionless)', fontsize=12)
850
ax2.set_ylabel(r'$\omega / \omega_{pe}$ (dimensionless)', fontsize=12)
851
ax2.set_title(r'Langmuir Wave Dispersion: $\omega^2 = \omega_{pe}^2 + \frac{3}{2}k^2 v_{th}^2$',
852
fontsize=13, fontweight='bold')
853
ax2.legend(fontsize=11)
854
ax2.grid(True, alpha=0.3, which='both')
855
ax2.set_xlim([1e-3, 1e2])
856
857
# Plot 3: Alfvén velocity across plasma regimes
858
B_alfven = np.logspace(-6, 1, 200) # 1 microT to 10 T
859
n_alfven_values = [1e18, 1e19, 1e20, 1e21]
860
861
for n_alf in n_alfven_values:
862
v_A_sweep = alfven_velocity(B_alfven, n_alf)
863
ax3.loglog(B_alfven, v_A_sweep * 1e-3, linewidth=2.5, label=f'$n = {n_alf:.0e}$ m$^{{-3}}$')
864
865
# Mark regimes where v_A is comparable to other velocities
866
ax3.axhline(c_s * 1e-3, linestyle=':', linewidth=2, color='green', alpha=0.5,
867
label=f'$c_s$ ({T_wave} eV)')
868
ax3.axhline(1e4, linestyle=':', linewidth=2, color='red', alpha=0.5,
869
label='$10^4$ km/s')
870
871
ax3.set_xlabel(r'Magnetic Field $B$ [T]', fontsize=12)
872
ax3.set_ylabel(r'Alfv\'en Velocity $v_A$ [km/s]', fontsize=12)
873
ax3.set_title(r'Alfv\'en Velocity: $v_A = B/\sqrt{\mu_0 n m_p}$', fontsize=13, fontweight='bold')
874
ax3.legend(fontsize=10, loc='lower right')
875
ax3.grid(True, alpha=0.3, which='both')
876
877
# Plot 4: Plasma beta parameter
878
T_beta = np.logspace(-1, 4, 200)
879
B_beta = 5.0 # Tesla (tokamak field)
880
n_beta = 1e20 # m^-3
881
882
# Thermal pressure
883
p_thermal = n_beta * k_B * T_beta * e # Pascals
884
885
# Magnetic pressure
886
p_magnetic = B_beta**2 / (2 * mu_0)
887
888
# Beta parameter
889
beta = p_thermal / p_magnetic
890
891
ax4.loglog(T_beta, beta, linewidth=3, color='darkblue')
892
ax4.axhline(1, linestyle='--', linewidth=2, color='black', label=r'$\beta = 1$')
893
ax4.fill_between(T_beta, 1e-6, 1, alpha=0.2, color='blue', label=r'$\beta < 1$ (Low-$\beta$)')
894
ax4.fill_between(T_beta, 1, 1e2, alpha=0.2, color='red', label=r'$\beta > 1$ (High-$\beta$)')
895
896
ax4.set_xlabel(r'Temperature $T$ [eV]', fontsize=12)
897
ax4.set_ylabel(r'Plasma Beta $\beta = p_{thermal}/p_{magnetic}$', fontsize=12)
898
ax4.set_title(f'Plasma Beta Parameter ($n = {n_beta:.0e}$ m$^{{-3}}$, $B = {B_beta}$ T)',
899
fontsize=13, fontweight='bold')
900
ax4.legend(fontsize=11)
901
ax4.grid(True, alpha=0.3, which='both')
902
903
# Mark fusion-relevant temperature
904
T_fusion = 10000 # eV (10 keV)
905
beta_fusion = (n_beta * k_B * T_fusion * e) / (B_beta**2 / (2 * mu_0))
906
ax4.plot(T_fusion, beta_fusion, 'ro', markersize=10)
907
ax4.annotate(f'Fusion core\n$\\beta = {beta_fusion:.3f}$', xy=(T_fusion, beta_fusion),
908
xytext=(30, -30), textcoords='offset points',
909
fontsize=10, bbox=dict(boxstyle='round', facecolor='yellow', alpha=0.7),
910
arrowprops=dict(arrowstyle='->', lw=2))
911
912
plt.tight_layout()
913
plt.savefig('plasma_parameters_waves.pdf', dpi=300, bbox_inches='tight')
914
plt.close()
915
916
# Calculate wave properties for table
917
wave_data = {}
918
for regime, (n, T) in regimes.items():
919
if 'Tokamak' in regime or 'Solar' in regime:
920
omega_pe_val = plasma_frequency(n)
921
c_s_val = ion_acoustic_velocity(T, 0.1 * T)
922
923
# Assume B field for each regime
924
if 'Tokamak' in regime:
925
B_val = 5.0
926
elif 'Solar' in regime:
927
B_val = 0.01
928
else:
929
B_val = 1e-5
930
931
v_A_val = alfven_velocity(B_val, n)
932
933
wave_data[regime] = {
934
'f_pe': omega_pe_val / (2 * np.pi),
935
'c_s': c_s_val,
936
'v_A': v_A_val,
937
'B': B_val
938
}
939
\end{pycode}
940
941
\begin{figure}[H]
942
\centering
943
\includegraphics[width=0.98\textwidth]{plasma_parameters_waves.pdf}
944
\caption{Wave propagation in plasmas across multiple modes. \textbf{Top Left:} Characteristic velocities for different wave types at 100 eV and 1 T. Alfvén velocity (blue) decreases with increasing density as more mass must be accelerated by magnetic tension. Ion acoustic velocity (green) is density-independent and scales as $\sqrt{T_e/m_i}$. Langmuir wave phase velocity (purple) exceeds thermal velocity due to thermal pressure corrections to the cold plasma dispersion. All remain well below the speed of light (black dotted). \textbf{Top Right:} Langmuir wave dispersion showing transition from cold plasma limit ($\omega \approx \omega_{pe}$ for $k\lambda_D \ll 1$) to kinetic regime where thermal effects dominate ($\omega \propto k$ for $k\lambda_D \gg 1$). Higher temperatures extend the transition region. \textbf{Bottom Left:} Alfvén velocity spans four orders of magnitude from $\sim 10$ km/s in dense fusion plasmas to $> 10^4$ km/s in tenuous magnetospheres. Intersection with ion acoustic velocity (green dotted at 440 km/s for 100 eV) marks regime boundaries for MHD wave coupling. \textbf{Bottom Right:} Plasma beta parameter $\beta = p_{thermal}/p_{magnetic}$ determines whether magnetic field (low-$\beta$, blue) or thermal pressure (high-$\beta$, red) dominates. Tokamaks operate at $\beta \sim 0.05$ (marked point at 10 keV), requiring strong magnetic confinement. The $\beta = 1$ boundary (black dashed) separates magnetic-pressure-dominated from kinetic-pressure-dominated regimes.}
945
\end{figure}
946
947
\section{Comprehensive Parameter Tables}
948
949
\begin{pycode}
950
# Generate comprehensive table of plasma parameters
951
952
print(r'\begin{table}[H]')
953
print(r'\centering')
954
print(r'\caption{Fundamental Plasma Parameters Across Regimes}')
955
print(r'\begin{tabular}{@{}lcccccc@{}}')
956
print(r'\toprule')
957
print(r'Regime & $n_e$ [m$^{-3}$] & $T_e$ [eV] & $\lambda_D$ [m] & $\omega_{pe}/(2\pi)$ [Hz] & $N_D$ & $\nu_{ei}/\omega_{pe}$ \\')
958
print(r'\midrule')
959
960
for regime, (n, T) in sorted(regimes.items()):
961
ld = debye_length(n, T)
962
f_pe = plasma_frequency(n) / (2 * np.pi)
963
N_D = plasma_parameter(n, T)
964
nu_ei = collision_frequency(n, T)
965
omega_pe_val = plasma_frequency(n)
966
coll_ratio = nu_ei / omega_pe_val
967
968
print(f"{regime} & {n:.1e} & {T:.1e} & {ld:.2e} & {f_pe:.2e} & {N_D:.2e} & {coll_ratio:.2e} \\\\")
969
970
print(r'\bottomrule')
971
print(r'\end{tabular}')
972
print(r'\end{table}')
973
974
print()
975
print()
976
977
# Table 2: Magnetized plasma parameters
978
print(r'\begin{table}[H]')
979
print(r'\centering')
980
print(r'\caption{Magnetized Plasma Parameters}')
981
print(r'\begin{tabular}{@{}lccccc@{}}')
982
print(r'\toprule')
983
print(r'Configuration & $B$ [T] & $T_e$ [eV] & $r_{L,e}$ [mm] & $r_{L,i}$ [mm] & $\omega_{ce}/(2\pi)$ [GHz] \\')
984
print(r'\midrule')
985
986
mag_configs = [
987
('Tokamak (ITER)', 5.3, 10000),
988
('Stellarator (W7-X)', 2.5, 2000),
989
('RFP', 0.5, 500),
990
('Solar Corona', 0.01, 100),
991
('Earth Magnetosphere', 5e-5, 1),
992
]
993
994
for name, B, T in mag_configs:
995
r_L_e = thermal_larmor_radius(T, B, m_e) * 1e3 # mm
996
r_L_i = thermal_larmor_radius(T, B, m_p) * 1e3 # mm
997
f_ce = cyclotron_frequency(B, m_e) / (2 * np.pi * 1e9) # GHz
998
999
print(f"{name} & {B:.2e} & {T:.0f} & {r_L_e:.3f} & {r_L_i:.2f} & {f_ce:.2f} \\\\")
1000
1001
print(r'\bottomrule')
1002
print(r'\end{tabular')
1003
print(r'\end{table}')
1004
1005
print()
1006
print()
1007
1008
# Table 3: Wave velocities
1009
print(r'\begin{table}[H]')
1010
print(r'\centering')
1011
print(r'\caption{Wave Propagation Velocities}')
1012
print(r'\begin{tabular}{@{}lcccc@{}}')
1013
print(r'\toprule')
1014
print(r'Regime & $c_s$ [km/s] & $v_A$ [km/s] & $v_{th,e}$ [km/s] & $v_A/c_s$ \\')
1015
print(r'\midrule')
1016
1017
wave_configs = [
1018
('Tokamak Core', 1e20, 5000, 5.0),
1019
('Solar Corona', 1e14, 100, 0.01),
1020
('Solar Wind', 1e7, 10, 1e-5),
1021
]
1022
1023
for name, n, T, B in wave_configs:
1024
c_s_val = ion_acoustic_velocity(T, 0.1 * T) * 1e-3 # km/s
1025
v_A_val = alfven_velocity(B, n) * 1e-3 # km/s
1026
v_th_e_val = np.sqrt(2 * T * e / m_e) * 1e-3 # km/s
1027
ratio = v_A_val / c_s_val
1028
1029
print(f"{name} & {c_s_val:.1f} & {v_A_val:.1f} & {v_th_e_val:.0f} & {ratio:.2f} \\\\")
1030
1031
print(r'\bottomrule')
1032
print(r'\end{tabular}')
1033
print(r'\end{table}')
1034
1035
\end{pycode}
1036
1037
\section{Dimensionless Parameters and Regime Classification}
1038
1039
The physics of plasmas is governed by dimensionless ratios constructed from fundamental scales:
1040
1041
\begin{enumerate}
1042
\item \textbf{Plasma Parameter:} $N_D = n_e \lambda_D^3$ determines coupling strength. For $N_D \gg 1$, collective effects dominate and mean-field theory applies. When $N_D \sim 1$, strong correlation effects become important.
1043
1044
\item \textbf{Collisionality:} $\nu_{ei} / \omega_{pe}$ distinguishes collisional ($> 1$) from collisionless ($< 1$) regimes. Collisionless plasmas require kinetic theory; collisional plasmas admit fluid descriptions.
1045
1046
\item \textbf{Magnetization:} $\omega_{ce} / \nu_{ei}$ determines whether particles complete gyro-orbits between collisions. For $\omega_{ce}/\nu_{ei} \gg 1$, transport is anisotropic and confined along field lines.
1047
1048
\item \textbf{Plasma Beta:} $\beta = p_{thermal} / p_{magnetic} = 2\mu_0 n k_B T / B^2$ measures thermal to magnetic pressure. Low-$\beta$ plasmas ($\beta \ll 1$) are magnetically dominated; high-$\beta$ plasmas are kinetically dominated.
1049
1050
\item \textbf{Normalized Larmor Radius:} $r_L / L$ determines gyrokinetic ordering. For $r_L/L \ll 1$, guiding center approximations are valid and magnetic confinement is effective.
1051
\end{enumerate}
1052
1053
These ratios determine which physical processes are important and which theoretical approximations are valid.
1054
1055
\section{Conclusions}
1056
1057
This comprehensive analysis of fundamental plasma parameters demonstrates the multi-scale nature of plasma physics across twelve orders of magnitude in density (from $10^{6}$ m$^{-3}$ in the solar wind to $10^{26}$ m$^{-3}$ in compressed inertial fusion targets) and five orders of magnitude in temperature (from 0.1 eV in the ionosphere to 10 keV in tokamak cores).
1058
1059
The Debye length, ranging from nanometers to meters, sets the electrostatic shielding scale and determines when quasi-neutrality applies ($\lambda_D/L \ll 1$). The plasma frequency, spanning microhertz to petahertz, establishes the fundamental timescale for charge separation oscillations. All plasma regimes analyzed satisfy $N_D \gg 1$, confirming that collective effects dominate individual particle interactions.
1060
1061
Collision frequencies decrease sharply with temperature ($\nu_{ei} \propto T_e^{-3/2}$), rendering hot fusion plasmas deeply collisionless with $\nu_{ei}/\omega_{pe} \sim 10^{-3}$. This necessitates kinetic treatment of transport and turbulence. The Spitzer conductivity increases as $T_e^{3/2}$, exceeding copper's conductivity above 8 eV and reaching $10^7$ S/m in fusion cores.
1062
1063
In magnetized configurations, the electron Larmor radius scales as $r_{L,e} \propto \sqrt{T_e}/B$, requiring multi-Tesla fields to achieve $r_{L,e}/a < 0.01$ for effective confinement of keV plasmas. The magnetization parameter $\omega_{ce}/\nu_{ei} \sim 10^{3}$ in tokamaks ensures particles complete many gyro-orbits between collisions, enabling classical transport theory.
1064
1065
Wave analysis reveals that Alfvén velocities span $10^{1}$ to $10^{4}$ km/s depending on density and field strength, while ion acoustic velocities remain near $\sqrt{T_e/m_i} \sim 100$ km/s. The plasma beta in tokamaks is typically $\beta \sim 0.05$, indicating magnetic pressure dominance, while solar corona and magnetosphere plasmas can achieve $\beta \sim 1$.
1066
1067
These fundamental parameters provide the foundation for understanding collective phenomena including turbulence, waves, instabilities, and transport across all plasma regimes from astrophysical to laboratory systems.
1068
1069
\begin{thebibliography}{99}
1070
1071
\bibitem{chen1984introduction}
1072
F.F. Chen, \textit{Introduction to Plasma Physics and Controlled Fusion}, 2nd ed., Plenum Press, New York (1984).
1073
1074
\bibitem{goldston1995introduction}
1075
R.J. Goldston and P.H. Rutherford, \textit{Introduction to Plasma Physics}, Institute of Physics Publishing, Bristol (1995).
1076
1077
\bibitem{debye1923theory}
1078
P. Debye and E. Hückel, ``The theory of electrolytes. I. Lowering of freezing point and related phenomena,'' \textit{Phys. Z.} \textbf{24}, 185 (1923).
1079
1080
\bibitem{spitzer1956physics}
1081
L. Spitzer, Jr., \textit{Physics of Fully Ionized Gases}, Interscience Publishers, New York (1956).
1082
1083
\bibitem{tonks1929oscillations}
1084
L. Tonks and I. Langmuir, ``Oscillations in ionized gases,'' \textit{Phys. Rev.} \textbf{33}, 195 (1929).
1085
1086
\bibitem{krall1973principles}
1087
N.A. Krall and A.W. Trivelpiece, \textit{Principles of Plasma Physics}, McGraw-Hill, New York (1973).
1088
1089
\bibitem{alfven1942existence}
1090
H. Alfvén, ``Existence of electromagnetic-hydrodynamic waves,'' \textit{Nature} \textbf{150}, 405 (1942).
1091
1092
\bibitem{wesson2011tokamaks}
1093
J. Wesson and D.J. Campbell, \textit{Tokamaks}, 4th ed., Oxford University Press (2011).
1094
1095
\bibitem{landau1946oscillations}
1096
L.D. Landau, ``On the vibrations of the electronic plasma,'' \textit{J. Phys. USSR} \textbf{10}, 25 (1946).
1097
1098
\bibitem{bohm1949minimum}
1099
D. Bohm, E.H.S. Burhop, and H.S.W. Massey, ``The use of probes for plasma exploration in strong magnetic fields,'' in \textit{The Characteristics of Electrical Discharges in Magnetic Fields}, A. Guthrie and R.K. Wakerling, eds., McGraw-Hill (1949).
1100
1101
\bibitem{fried1961longitudinal}
1102
B.D. Fried and S.D. Conte, \textit{The Plasma Dispersion Function}, Academic Press, New York (1961).
1103
1104
\bibitem{stix1992waves}
1105
T.H. Stix, \textit{Waves in Plasmas}, American Institute of Physics, New York (1992).
1106
1107
\bibitem{bellan2006fundamentals}
1108
P.M. Bellan, \textit{Fundamentals of Plasma Physics}, Cambridge University Press (2006).
1109
1110
\bibitem{freidberg2014plasma}
1111
J.P. Freidberg, \textit{Ideal MHD}, Cambridge University Press (2014).
1112
1113
\bibitem{hazeltine2003plasma}
1114
R.D. Hazeltine and J.D. Meiss, \textit{Plasma Confinement}, Dover Publications (2003).
1115
1116
\bibitem{nrl2019formulary}
1117
NRL Plasma Formulary, Naval Research Laboratory, Washington DC (2019).
1118
1119
\bibitem{miyamoto2005plasma}
1120
K. Miyamoto, \textit{Plasma Physics for Nuclear Fusion}, MIT Press (2005).
1121
1122
\bibitem{helander2002collisional}
1123
P. Helander and D.J. Sigmar, \textit{Collisional Transport in Magnetized Plasmas}, Cambridge University Press (2002).
1124
1125
\bibitem{fitzpatrick2014plasma}
1126
R. Fitzpatrick, \textit{Plasma Physics: An Introduction}, CRC Press (2014).
1127
1128
\bibitem{bittencourt2004fundamentals}
1129
J.A. Bittencourt, \textit{Fundamentals of Plasma Physics}, 3rd ed., Springer (2004).
1130
1131
\end{thebibliography}
1132
1133
\end{document}
1134
1135