The W44_133 line only exists where there is W⁴⁴⁺, and that fraction depends on
Te. This module computes where W⁴⁴⁺ sits in each profile and runs a toy LBO
simulation to separate atomic effects from transport effects. It is used in
notebooks/10W3-10W4/10W4.ipynb.
from aug.analysis.atomic import load_w_atom_data, w44_profile_metrics, toy_lbo_signal, signal_metrics
from aug.io import read_lbo_profiles
atom = load_w_atom_data(subset_path="cache/w_adf11_subset.txt")
p = read_lbo_profiles(shot.lbo_paths[0])
rho = p["Te"].rho
ne = np.interp(rho, p["ne"].rho, p["ne"].value)
m = w44_profile_metrics(rho, ne, p["Te"].value, atom)
m["f44_axis"], m["rho_peak"], m["S_Te_w"]
sim = toy_lbo_signal(rho, ne, p["Te"].value, atom, D=0.7)
signal_metrics(sim["t"], sim["signal"])
Atomic data
- ADF11 from OPEN-ADAS:
scd50_w.dat(ionization, CADW) andacd50_w.dat
(recombination, ADPAK). With Aurora installed,load_w_atom_data()
downloads them the first time. - Offline,
subset_pathpoints to a plain-text subset of those same files:
scd at a single density, since it does not depend on ne, and acd at
log ne = 13 and 14, which covers 1e19 to 1e20 m⁻³. At those nodes the values
are identical to the original files (checked with checksums).
Installing Aurora
The PyPI wheel (aurorafusion 3.0.6) does not build with scikit-build-core ≥
0.8. From the repo:
brew install gcc # gfortran
git clone https://github.com/fsciortino/Aurora && cd Aurora
sed -i '' 's/cmake.minimum-version = "3.17.2"/cmake.version = ">=3.17.2"/; s/ninja.minimum-version = "1.10"/ninja.version = ">=1.10"/' pyproject.toml
uv pip install --no-deps .
Without Aurora, w_fractional_abundance does the same calculation in numpy.
Metrics (w44_profile_metrics)
| Key | Meaning |
|---|---|
f44_axis, f44_max, rho_peak |
W⁴⁴⁺ fraction on axis, its maximum, and where the maximum is |
shell |
maximum at ρ > 0.15 and on-axis value < ½ of the maximum |
rho_emis, rho_emis_w |
maximum and centroid of ne²·f44 (where the line looks; no PEC or geometry) |
S_Te_axis, S_Te_w |
d ln f44 / d ln Te on axis and weighted by emissivity. With S < 0, the signal rises when Te drops even though the W content is unchanged |
Zmean_axis |
mean W charge on axis |
Toy LBO (toy_lbo_signal)
A cylinder of radius a = 0.5 m, ∂n/∂t = (1/r)∂ᵣr(D∂ᵣn − v n) + S, n(a) = 0,
with the source at ρ = 0.97. Transport (D, v) is the same for every profile;
only the f44(ρ) window changes. Signal = Σ n_W·ne·f44 dρ (central chord), with
instantaneous coronal equilibrium. Options:
dTe_frac: Te drops in proportion to the total W (cooling), so the window
moves in time.src_dur,src_tau: prolonged W influx (edge reservoir).D_ped,v_ped: a transport barrier in the pedestal.
It is a simple limiting case, not a prediction. It tells you which effects can
produce a given curve shape and which cannot.
References: F. Sciortino et al., Plasma Phys. Control. Fusion 63,
112001 (2021) (Aurora); T. Pütterich et al., Plasma Phys. Control. Fusion
50, 085016 (2008) (W spectra and ionization balance in AUG).