Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
e411624
Add DetailedPhysics class for enhanced plasma processing models
chris-ashe Oct 22, 2025
05538c3
:sparkle: Add Debye length calculations to DetailedPhysics class
chris-ashe Oct 22, 2025
2a09458
:sparkle: Add electron Debye length profile variable to physics module
chris-ashe Oct 22, 2025
2e23b5e
Add volume averaged electron Debye length variable to physics module
chris-ashe Oct 22, 2025
04220f8
Add detailed Debye length calculations and output to physics module
chris-ashe Oct 22, 2025
1e1e5b6
:sparkle: Add Lorentz factor and relativistic particle speed calculat…
chris-ashe Oct 22, 2025
dafdc20
:sparkle: Add electron thermal velocity profile variable to physics m…
chris-ashe Oct 22, 2025
baf610b
:sparkle: Add electron thermal velocity profile calculation and plott…
chris-ashe Oct 22, 2025
8a7ba0d
Add Planck's constant and new physics calculations to DetailedPhysics…
chris-ashe Oct 22, 2025
dcebf67
:sparkle: Add electron-electron Coulomb logarithm profile variable to…
chris-ashe Oct 22, 2025
05528bd
:sparkle: Add plasma frequency calculation to DetailedPhysics class
chris-ashe Oct 22, 2025
b4544d3
:sparkle: Add electron plasma frequency profile variable to physics m…
chris-ashe Oct 22, 2025
6ec77c2
:sparkle: Add electron thermal frequency profile calculation to Detai…
chris-ashe Oct 22, 2025
3f8297f
:sparkle: Add Larmor frequency calculation method to DetailedPhysics …
chris-ashe Oct 22, 2025
e0cd32d
Add electron Larmor frequency profile variable for toroidal magnetic …
chris-ashe Oct 22, 2025
5a82867
:sparkle: Add Larmor frequency calculation for electron profile in De…
chris-ashe Oct 22, 2025
9b00dbd
:sparkle: Add Larmor frequency profile for toroidal magnetic field in…
chris-ashe Oct 22, 2025
931d2f9
:sparkle: Add calculation and plotting for plasma Coulomb logarithms …
chris-ashe Oct 23, 2025
c3ccd3b
Post rebase changes
chris-ashe Dec 8, 2025
b09637c
:sparkle: Add documentation for Detailed Plasma Physics and link in m…
chris-ashe Dec 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions documentation/physics-models/detailed_physics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Detailed Plasma Physics

It can sometimes be useful to calculate rough values for key plasma paramters that are normally used in higher fidelity codes. The `DetailedPhysics()` class stores functions that are called and the end of the run to show rough values for key plasma behavior parameters. The calculation is done at the end as no other methods currently depend on these values.

## Detailed Plasma Physics | `DetailedPhysics()`


------------------

### Debye length | `calculate_debye_length()`

Calculates the Debye lenght given by:

$$
\lambda_{D} = \sqrt{\frac{\epsilon_0 k_B T_e}{n e^2}}
$$

-------------------

### Relativistic particle speed | `calculate_relativistic_particle_speed()`

$$
v = c \times \sqrt{\left(1- \frac{1}{\left(1+\frac{E}{mc^2}\right)^2}\right)}
$$

------------------

### Coulomb Logarithm | `calculate_coulomb_log_from_impact()`

Calculates the Coulomb logarithm assuming a straight line Landau-Spitzer method

$$
\ln \Lambda = \ln{\left(\frac{b_{\text{max}}}{b_{\text{min}}}\right)}
$$

The maximum impact parameter is given by the Debye length calculated by [`calculate_debye_length()`](#debye-length--calculate_debye_length)
$$
b_{\text{max}} = \lambda_{\text{Debye}}
$$

The minimum impact paramter is the largest of either the classical distance of closest approach or the Debye length.

$$
\begin{split}b_{\text{min}} ≡
\left\{
\begin{array}{ll}
λ_{\text{de Broglie}} & \mbox{if } λ_{\text{de Broglie}} ≥ ρ_⟂ \\
ρ_⟂ & \mbox{if } ρ_⟂ ≥ λ_{\text{de Broglie}}
\end{array}
\right.\end{split}
$$

$ρ_⟂$ is the classical distance of closest approach calculated by [`calculate_classical_distance_of_closest_approach()`](#classical-distance-of-closest-approach----calculate_classical_distance_of_closest_approach)

------------------

### Classical distance of closest approach | `calculate_classical_distance_of_closest_approach()`

$$
\frac{Z_1Z_2e^2}{4\pi \epsilon_0 E_{\text{kinetic}}}
$$

---------------------

### DeBroglie Wavelength | `calculate_debroglie_wavelength()`

$$
\lambda_{\text{DeBroglie}} = \frac{h}{2\pi m v}
$$

----------------------

### Plasma Frequency | `calculate_plasma_frequency()`

$$
\omega_p = \sqrt{\frac{n_ie^2}{\epsilon_0 m_i}}
$$

---------------------

### Larmor Frequency | `calculate_larmor_frequency()`

$$
f_{\text{Larmor}} = \frac{Z_ieB}{2\pi m_i}
$$
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ nav:
- Confinement time: physics-models/plasma_confinement.md
- L-H transition: physics-models/plasma_h_mode.md
- Plasma Core Power Balance: physics-models/plasma_power_balance.md
- Detailed Plasma Physics: physics-models/detailed_physics.md
- Pulsed Plant Operation: physics-models/pulsed-plant.md
- Engineering Models:
- Machine Build: eng-models/machine-build.md
Expand Down
5 changes: 4 additions & 1 deletion process/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,12 +189,15 @@
https://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl?ele=W
"""

SPEED_LIGHT = 299792458
SPEED_LIGHT = 299792458.0
"""Speed of light in vacuum (c) [m/s]
Reference: National Institute of Standards and Technology (NIST)
https://physics.nist.gov/cgi-bin/cuu/Value?c|search_for=light
"""

PLANCK_CONSTANT = 6.62607015e-34
"""Planck's constant [J.s]"""

D_T_ENERGY = (
(DEUTERON_MASS + TRITON_MASS) - (ALPHA_MASS + NEUTRON_MASS)
) * SPEED_LIGHT**2
Expand Down
30 changes: 30 additions & 0 deletions process/data_structure/physics_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -1320,6 +1320,24 @@
n_charge_plasma_effective_mass_weighted_vol_avg: float = None
"""Plasma mass-weighted volume averaged plasma effective charge"""

len_plasma_debye_electron_profile: list[float] = None
"""Profile of electron Debye length in plasma (m)"""

len_plasma_debye_electron_vol_avg: float = None
"""Volume averaged electron Debye length in plasma (m)"""

vel_plasma_electron_profile: list[float] = None
"""Profile of electron thermal velocity in plasma (m/s)"""

plasma_coulomb_log_electron_electron_profile: list[float] = None
"""Profile of electron-electron Coulomb logarithm in plasma"""

freq_plasma_electron_profile: list[float] = None
"""Electron plasma frequency profile (Hz)"""

freq_plasma_larmor_toroidal_electron_profile: list[float] = None
"""Profile of electron Larmor frequency in plasma due to toroidal magnetic field (Hz)"""


def init_physics_module():
"""Initialise the physics module"""
Expand Down Expand Up @@ -1638,6 +1656,12 @@ def init_physics_variables():
global n_charge_plasma_effective_vol_avg
global n_charge_plasma_effective_profile
global n_charge_plasma_effective_mass_weighted_vol_avg
global len_plasma_debye_electron_profile
global len_plasma_debye_electron_vol_avg
global vel_plasma_electron_profile
global plasma_coulomb_log_electron_electron_profile
global freq_plasma_electron_profile
global freq_plasma_larmor_toroidal_electron_profile

m_beam_amu = 0.0
m_fuel_amu = 0.0
Expand Down Expand Up @@ -1898,3 +1922,9 @@ def init_physics_variables():
n_charge_plasma_effective_vol_avg = 0.0
n_charge_plasma_effective_profile = []
n_charge_plasma_effective_mass_weighted_vol_avg = 0.0
len_plasma_debye_electron_profile = []
len_plasma_debye_electron_vol_avg = 0.0
vel_plasma_electron_profile = []
plasma_coulomb_log_electron_electron_profile = []
freq_plasma_electron_profile = []
freq_plasma_larmor_toroidal_electron_profile = []
Loading
Loading