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
- Con una sola línea, D y v están degenerados: muchas combinaciones dan casi
la misma curva. Los valores sirven para comparar grupos ajustados con el
mismo modelo, no como mediciones absolutas. - La geometría es aproximada (no hay geqdsk) y la señal sale de la cuerda
central, sin la línea de visión real. - Los perfiles son fijos: el modelo no incluye el enfriamiento ni los cambios
de ECRH durante el decaimiento. - No hay recycling: el material que sale del plasma confinado se pierde.
Detalles técnicos
- Timing:
dt_start = 1e-5ydt_increase = 1.005. Condt_increase = 1.01
la fuente LBO se pierde y la simulación da cero. - OMFIT: Aurora importa
omfit_classes.utils_math.atomic_element. Si OMFIT no
está instalado,_prepare_aurora()registra un reemplazo mínimo (Z y A). - numpy ≥ 2: se agrega
np.trapz = np.trapezoid, que Aurora todavía usa.