Equilibrium - g-file reader differentiates FPOL and PRES and discards FFPRIM and PPRIME, putting rounding noise on Δ′
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
- #506 de @d-burg — cerrado sin fusionar
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Start by reading read_efit and the in-repo examples/DIIID-like_ideal_example/TkMkr_D3Dlike_Hmode.geqdsk file to understand how FPOL, FFPRIM, PRES, and PPRIME are handled. Compare the reported Δ′ results when using the file’s derivative arrays, paying particular attention to the end-node caveats and cases where pressure arrays disagree. Done means a fix has an explicit end-node treatment and its effects on the cited regression cases are understood.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
For eq_type = "efit", read_efit parses FFPRIM and PPRIME and discards them. F′ and p′ then come from cubic splines of FPOL and PRES. F′ enters the Euler-Lagrange matrices directly (jtheta = -F′), and Δ′ depends on how F′ varies across each rational surface. F changes by only a few percent across the plasma, so rounding noise in FPOL leaves F′ nearly right in value (0.04 % rms) but wrong in slope at the node scale: the error in dF′/dψ grows as roughly 1/(h²δ) (h = node spacing, δ = fractional variation of F). On 257-node g-files written in single precision this puts noise of a few units on Δ′(2/1).
Evidence
Static, in-repo file. examples/DIIID-like_ideal_example/TkMkr_D3Dlike_Hmode.geqdsk (257 nodes; every FPOL value is exactly a single-precision number). The spline F′ matches FFPRIM/F to 0.04 % rms, but its slope scatters about the FFPRIM-derived slope by up to 37 % near q = 2. No F″ is formed explicitly; the slope enters through the ψ-variation of the splined coefficient matrices:
Same state, two g-files. Five pairs of g-files of one equilibrium state (inputs agree to 1e-5) gave Δ′(2/1) differing by up to 6.2 (rms 3.7). The gap is unchanged on develop, on an identical fixed ψ grid, and with #398, #480 and #491 applied. Swapping only the FPOL block between the two files moves 82–101 % of the gap with it. Rebuilding FPOL as the integral of the file's own FFPRIM closes it (rms 0.17).
Noise ladder. Seeded relative noise on FPOL shifts Δ′(2/1) linearly, about 9e7 × noise: 0.15 at 1e-9, 2.1 at single precision (2.4e-8). The same experiment on FFPRIM is about 900 times less sensitive.
Ten g-files of different provenance. Δ′(2/1), n = 1, Riccati, auto grid:
writer, nodes, precision of FPOL |
as written | F from FFPRIM |
F and P from FFPRIM, PPRIME |
|---|---|---|---|
| TokaMaker 257, single (the in-repo example above) | 9.21 | 7.27 | 7.29 |
| TokaMaker 257, single | 5.89 | 6.25 | 6.11 |
| TokaMaker 257, single | 16.48 | 14.40 | 14.52 |
| TokaMaker 257, single | 9.43 | 9.12 | 9.10 |
| TokaMaker 257, single (near a Δ′ pole) | −29.1 | −0.03 | −39.0 |
| EFIT 257, double | −1.56 | −1.42 | −1.40 |
| kinetic EFIT 257, single | −10.10 | −6.83 | −5.46 |
| EFIT 129, single | 2.76 | 2.93 | 2.96 |
| kinetic EFIT 129, single | 3.03 | 2.86 | 3.00 |
| EFIT 65, double | −3.981 | −3.974 | −3.974 |
The effect grows with g-file resolution and with single precision: negligible at 65 nodes, about ±0.2 at 129, units at 257 single precision. Rebuilding P as well changes 2/1 by ≤ 0.14 on eight of ten files.
Caveats for a fix
FFPRIMis not clean at the end nodes of TokaMaker files (axis-node spike, last-node drop). The 2/1 result is insensitive to how these are integrated (12.35 spline quadrature, 12.50 trapezoid), but an edge 4/1 entry is not (13 as written, 35 or 50 rebuilt). A fix needs an explicit end-node treatment.- For P the question is consistency, not noise: where
PRESandPPRIMEdisagree the result moves (kinetic EFIT 257 above, and outer surfaces), and these tests do not say which array is right. - Every
efit-type result will move, including the regression cases built on the in-repo example.
Notes
- Upstream: TokaMaker's
gs_save_eqdskwrites every array asREAL(x,4). Writing doubles would reduce the noise to the 9-digit print limit (about ±0.1 here), but would not help existing files or single-precision EFIT output. - The Fortran reader has the same behaviour, and its CHEASE reader already builds P by integrating the file's dp/dψ.
- Runs: commit
1b385a504;read_efitis unchanged on develop57ec7e16a. Settings:psilow = 0.01,psihigh = 0.998,mtheta = 512,delta_mlow = delta_mhigh = 8,qlow = 1.02,dmlim = 0.2,sing_order = 6.
- Lenguaje dominante
- Julia
- Estrellas
- 11
- Forks
- 7
- Merge medio
- 3 d 22 h
- PR fusionados (30 d)
- 70
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OpenFUSIONToolkit/GPEC
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
OpenFUSIONToolkit/GPEC#644 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 74/100
OpenFUSIONToolkit/GPEC#648 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
OpenFUSIONToolkit/GPEC#643 ·
Los mantenedores suelen responder en 3 días
-
PerturbedEquilibrium - FEATURE - Complete the resistive perturbed-equilibrium workflow from Galerkin and matched resultsPosiblemente ocupada @matt-pharr la tomó hace 2 días. Abiertofeature
OpenFUSIONToolkit/GPEC#635 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 3 días
-
test
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
OpenFUSIONToolkit/GPEC#633 · 2 comentarios ·
Los mantenedores suelen responder en 3 días
Todos los issues de OpenFUSIONToolkit/GPEC
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
QuantumSavory/QuantumClifford.jl#853 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
JuliaPackaging/Yggdrasil#15441 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
JuliaSmoothOptimizers/Penelopt.jl#260 ·
Los mantenedores suelen responder en 1 día
-
authority-de-dommel ready-for-agent
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
Deltares/Ribasim-NL#997 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Sienna-Platform/InfrastructureSystems.jl#675 ·
Los mantenedores suelen responder en 2 días