Docs

Este módulo simula una inyección LBO con el transporte completo de Aurora:
sigue todas las cargas mientras la impureza entra, se ioniza y sale, sin
suponer equilibrio coronal. Con eso ajusta los coeficientes de transporte a la
curva medida de la línea de núcleo (W44, Fe23, Ni25). Se usa en
notebooks/10W3-10W4/10W4b_entregable.ipynb.

from aug.analysis.atomic import load_adf11_subset
from aug.analysis.aurora_lbo import fit_injection
from aug.io import read_lbo_profiles

atom = load_adf11_subset("cache/w_adf11_subset.txt")            # o feni_..., element="Fe"
p = read_lbo_profiles(shot.lbo_paths[0])
rho = p["Te"].rho.to_numpy()
prof = dict(rho=rho, ne=np.interp(rho, p["ne"].rho, p["ne"].value), Te=p["Te"].value.to_numpy())

f = fit_injection("W", res.details[(shot.shot, 1)], prof, atom)                    # estático
f2 = fit_injection("W", res.details[(shot.shot, 1)], prof, atom, mode="switch")    # D_ped cambia en el tiempo
f["params"], f["chi2"], f["metrics"]

Modelo

Qué Cómo
Geometría Sin equilibrio magnético (no tenemos geqdsk). Se usa ρ_pol ≈ r_vol/r_vol,LCFS con r_vol,LCFS = 64 cm (AUG: V ≈ 13.5 m³) y R = 165 cm
Perfiles ne y Te IDA del -lbo, constantes en el tiempo
Datos atómicos ADF11 scd/acd (ver atomic.md)
Fuente synth_LBO de Aurora: subida de 1 ms y caída t_src (ajustada), a 1 cm fuera de la LCFS
Transporte D = D_core (ρ < 0.9), D_ped (0.9 a 1), 1 m²/s en el SOL; v = v_core·ρ/0.9 (núcleo), v_ped (pedestal), 0 en el SOL
Señal Σ_ n_e n_q Δr: cuerda central, sin PEC
Ajuste least_squares sobre la curva normalizada (y − base)/A, con amplitud libre (lineal) y corrimiento temporal libre

Los dos modos ajustan seis parámetros: D_core, D_ped, v_core, v_ped, t_src y el
corrimiento. El modo switch agrega dos más, porque D_ped pasa a D_ped2 en
t_switch.

Cada simulación tarda ~1 s, y un ajuste ~2 min en modo estático o ~5 min en
modo switch. Cada aurora_sim guarda tasas de ~200 MB, así que el ajuste
mantiene como mucho 2 en memoria.

Limitaciones

Detalles técnicos