You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EQUIL - NEW FEATURE - Record the resistive-layer domain scan in gpec.h5
The scan now runs whenever kinetic profiles are reachable, with only the
enforcement gated by psihigh_from_layer_overlap, so the file always records what
the layer physics wanted for the domain.
Equilibrium/psihigh_resolved domain actually reconstructed
Equilibrium/psihigh_resistive_layers where adjacent layers start to overlap
Equilibrium/ResistiveLayers/ per-surface widths for every scored surface
rational_psi, rational_m, rational_n, r_s,
delta_s_abs [m], delta_s_psi [1], extrapolated
Comparing the two scalars answers "did the domain honour the layer physics", which
previously required reading the run log.
Both width forms are kept deliberately: delta_s_abs is the physical thickness and
delta_s_psi is the same width in normalized flux, which is what the overlap
criterion compares against surface spacing. delta_s_abs matches the leaf name
already used in Tearing/LayerWidths per the one-name-per-quantity rule.
psihigh_resolved matches the name PR #367 (immutable input structs) introduces.
It is written explicitly here only because that PR has not landed; once it does,
EquilibriumParameters carries the field and the EQUIL_H5_NAMES loop writes it, so
the explicit line must be deleted or the dataset is created twice. The write site
says so.
Also threads resistivity_model and lnLambda_form from SLAYERControl into the scan;
it had hardcoded SauterNeoModel/:nrl, so a deck selecting another closure would get
a different eta -- and hence a different delta_s -- from the SLAYER stage.
h5 schema test passes (the metadata contract covers the new datasets).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSrf6JCViFfVzqzkQ66o6b
"Equilibrium/R_axis"=> (; long_name="R-coordinate of the magnetic axis", units="m"),
66
66
"Equilibrium/Z_axis"=> (; long_name="Z-coordinate of the magnetic axis", units="m"),
67
+
"Equilibrium/psihigh_resolved"=>
68
+
(;
69
+
long_name="normalized poloidal flux at the outer edge of the reconstructed equilibrium domain; may differ from the requested [Equilibrium] psihigh via the separatrix clamp or the resistive-layer truncation",
70
+
units="1"
71
+
),
72
+
"Equilibrium/psihigh_resistive_layers"=>
73
+
(;
74
+
long_name="normalized poloidal flux at which adjacent rational surfaces' resistive layers begin to overlap; NaN when not computed (no kinetic profiles, multi-n run, or no overlap in range). Compare with psihigh_resolved to check the domain against the layer physics",
75
+
units="1"
76
+
),
77
+
"Equilibrium/ResistiveLayers/rational_psi"=>
78
+
(; long_name="normalized poloidal flux of each rational surface scored by the resistive-layer scan", units="1", dims=("rational",)),
79
+
"Equilibrium/ResistiveLayers/rational_m"=>
80
+
(; long_name="poloidal mode number m of each scored rational surface", dims=("rational",)),
81
+
"Equilibrium/ResistiveLayers/rational_n"=>
82
+
(; long_name="toroidal mode number n of each scored rational surface", dims=("rational",)),
83
+
"Equilibrium/ResistiveLayers/r_s"=>
84
+
(; long_name="minor radius of each scored rational surface", units="m", dims=("rational",)),
85
+
"Equilibrium/ResistiveLayers/delta_s_abs"=>
86
+
(; long_name="physical resistive layer thickness |δ_s| at each scored rational surface", units="m", dims=("rational",)),
87
+
"Equilibrium/ResistiveLayers/delta_s_psi"=>
88
+
(;
89
+
long_name="the same layer thickness in normalized flux, |δ_s|/|da/dψ|, so it is directly comparable with the spacing between rational surfaces",
90
+
units="1",
91
+
dims=("rational",)
92
+
),
93
+
"Equilibrium/ResistiveLayers/extrapolated"=>
94
+
(;
95
+
long_name="flag: this surface was located outside the equilibrium grid (edge q-law for a diverted plasma, or the real q profile for an inverse equilibrium) rather than found within it",
0 commit comments