Skip to content

Commit 19b6017

Browse files
d-burgclaude
andcommitted
REGRESSION - IMPROVEMENT - Disambiguate the Δ' variants; pin SLAYER inner-layer outputs
Three distinct Δ' quantities exist and their labels no longer distinguish them poorly: - "Δ′ STRIDE-like BVP (PEST3)" — SingularSurfaces/Delta_prime_matrix from the riccati fundamental-matrix BVP; the tearing-stability Δ'. Pinned at source (riccati case) and now also as ingested by SLAYER, so a change in what SLAYER consumes is caught even when the source case is not run. - "Δ′ Galerkin RDCON (PEST3)" — the resistive-DCON Galerkin outer solution. Both outer solvers are arranged in the PEST3 convention; the labels now say so explicitly. - "PE driven-response Δ′ (SingularCoupling jump)" — the forced ∂b^ψ/∂ψ jump over 2π·χ₁ under applied flux: a driven-response diagnostic, not a tearing-stability Δ', and the case comment now says so. The per-surface ca-based Δ' (compute_delta_prime_from_ca!) is a stub — documented as not physically valid, never written to gpec.h5 — and is deliberately not pinned. The SLAYER case also gains the inner-layer solve's own per-surface outputs: complex layer thickness δ_s, δ_s/d_β, |δ_s| [m], and d_β [m]. The adaptive-scan Δ(Q) sample arrays are deliberately NOT pinned: AMR sample locations move under any refinement change, so they have no stable identity. Validated end-to-end: 21 quantities extract on the DIII-D SLAYER deck. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 06fb902 commit 19b6017

4 files changed

Lines changed: 54 additions & 6 deletions

File tree

regression-harness/cases/diiid_n1_riccati.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ example_dir = "examples/DIIID-like_riccati_deltaprime_example"
1616
h5path = "SingularSurfaces/Delta_prime_matrix"
1717
type = "complex_matrix"
1818
extract = "diagonal_complex"
19-
label = "delta prime (BVP diagonal)"
19+
label = "Δ′ STRIDE-like BVP (PEST3) diagonal"
2020
noise_threshold = 1e-8
2121
order = 10
2222

2323
[quantities.delta_prime_raw]
2424
h5path = "SingularSurfaces/Delta_prime_raw"
2525
type = "complex_matrix"
2626
extract = "all_complex"
27-
label = "delta prime (raw side-major)"
27+
label = "Δ′ STRIDE-like BVP (PEST3) raw side-major"
2828
noise_threshold = 1e-8
2929
order = 11
3030

regression-harness/cases/diiid_slayer_n1.toml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,52 @@ label = "SLAYER no_root flags [2/1,3/1,4/1]"
132132
noise_threshold = 0
133133
order = 34
134134

135+
# Outer-region Δ' consumed by the SLAYER matching — the same STRIDE-like BVP (PEST3) matrix
136+
# the riccati case pins at source; tracked here too so a change in what SLAYER actually
137+
# ingests is caught even if the source case is not run.
138+
[quantities.slayer_delta_prime_diag]
139+
h5path = "Tearing/PerSurface/Delta_prime_matrix"
140+
type = "complex_matrix"
141+
extract = "diagonal_complex"
142+
label = "Δ′ STRIDE-like BVP (PEST3) diagonal, as ingested by SLAYER"
143+
noise_threshold = 1e-8
144+
order = 40
145+
146+
# Inner-layer solve outputs per surface (the resistive-layer Riccati solution itself, not the
147+
# outer matching). The adaptive-scan Δ(Q) sample arrays are deliberately NOT pinned: AMR sample
148+
# locations move under any refinement change, so they have no stable identity to pin.
149+
[quantities.slayer_delta_s]
150+
h5path = "Tearing/LayerWidths/delta_s"
151+
type = "complex_vector"
152+
extract = "all_complex"
153+
label = "SLAYER inner-layer thickness δ_s (complex, Riccati)"
154+
noise_threshold = 1e-10
155+
order = 41
156+
157+
[quantities.slayer_delta_s_over_d_beta]
158+
h5path = "Tearing/LayerWidths/delta_s_over_d_beta"
159+
type = "complex_vector"
160+
extract = "all_complex"
161+
label = "SLAYER inner-layer δ_s/d_β (complex, dimensionless)"
162+
noise_threshold = 1e-10
163+
order = 42
164+
165+
[quantities.slayer_delta_s_abs]
166+
h5path = "Tearing/LayerWidths/delta_s_abs"
167+
type = "real_vector"
168+
extract = "all_real"
169+
label = "SLAYER inner-layer physical thickness |δ_s| [m]"
170+
noise_threshold = 1e-12
171+
order = 43
172+
173+
[quantities.slayer_d_beta]
174+
h5path = "Tearing/LayerWidths/d_beta"
175+
type = "real_vector"
176+
extract = "all_real"
177+
label = "SLAYER β-weighted ion drift scale d_β [m]"
178+
noise_threshold = 1e-12
179+
order = 44
180+
135181
# Settings (catches accidental config drift)
136182
[quantities.slayer_enabled]
137183
h5path = "Tearing/enabled"

regression-harness/cases/gal_resistive_diiid.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ order = 11
3131
h5path = "SingularSurfaces/GalerkinDeltaPrime/pest3_Delta"
3232
type = "complex_matrix"
3333
extract = "diagonal_complex"
34-
label = "gal PEST3 Δ diagonal"
34+
label = "Δ′ Galerkin RDCON (PEST3) diagonal"
3535
noise_threshold = 1e-6
3636
order = 20
3737

@@ -40,7 +40,7 @@ order = 20
4040
h5path = "SingularSurfaces/GalerkinDeltaPrime/Delta_prime_raw"
4141
type = "complex_matrix"
4242
extract = "norm"
43-
label = "||gal Δ′ matrix||"
43+
label = "||Δ′ Galerkin RDCON (PEST3) matrix||"
4444
noise_threshold = 1e-6
4545
order = 21
4646

regression-harness/cases/gal_resistive_pe.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,14 @@ label = "penetrated b field"
6666
noise_threshold = 1e-8
6767
order = 32
6868

69-
# Per-surface Δ' from the PE singular-coupling analysis
69+
# Per-surface driven-response Δ' from the PE singular-coupling jump (∂b^ψ/∂ψ across the
70+
# rational surface over 2π·χ₁, forced by the applied flux). This is a driven-response
71+
# diagnostic, NOT the tearing-stability Δ' of the STRIDE-like BVP or Galerkin RDCON solvers.
7072
[quantities.pe_delta_prime]
7173
h5path = "PerturbedEquilibrium/SingularCoupling/Delta_prime"
7274
type = "complex_vector"
7375
extract = "all_complex"
74-
label = "PE Δ' per surface"
76+
label = "PE driven-response Δ′ (SingularCoupling jump)"
7577
noise_threshold = 1e-8
7678
order = 33
7779

0 commit comments

Comments
 (0)