Skip to content

InnerLayer.SLAYER - API! - Default the layer radial label to the toroidal-flux label - #599

Merged
logan-nc merged 8 commits into
developfrom
refactor/slayer-flux-radial-label
Oct 30, 2026
Merged

logan-nc merged 8 commits into
developfrom
refactor/slayer-flux-radial-label

Conversation

@logan-nc

@logan-nc logan-nc commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Release note

  • Audience: users
  • Numerical impact: every SLAYER layer quantity of a default run moves, and with it the critical resonant field. On the DIII-D-like layer deck the minor radius rs moves by up to 46 %, the r-based shear by 57 %, the Lundquist number by 10 %, D_norm, tau_k, Q_e, Q_i and the Q roots by 17 to 84 %, the growth rate by up to 68 % (coupled: 44 %) and the real frequency by ≤ 0.12 %. The critical resonant field moves on the 3/1 surface (br_crit −5.8 %, Q_peak +41 %, Q0 +30 %) and appears on the 4/1 surface, which has none on develop (br_crit NaN → 1.6e-4, Q_peak NaN → 0.40) because the larger tau_k raises its Q0 from 0.21 to 0.34; 2/1 has none on either. Ideal DCON, perturbed-equilibrium and layer-overlap truncation quantities are untouched (harness @ bcec399)
  • Migration: callers of build_slayer_inputs, radial_label or resistive_layer_overlap that want the old outboard-midplane chord must now pass rs_method=:midplane explicitly. The [SLAYER] theta_sample key is still accepted but now has no effect from TOML (the flux label does not depend on poloidal angle) and warns when nonzero. The HDF5 Tearing/PerSurface/rs dataset is now the toroidal-flux minor radius √(2ψ_t/B₀).

SLAYER's layer stack (minor radius, r-based shear, Lundquist number, resistive and diffusion times, Delta-prime reference length) is now expressed by default in the toroidal-flux radial label r = √(2ψ_t/B₀), the coordinate the Fitzpatrick layer formalism is derived in, instead of the outboard midplane chord.

Closes #417.

Changes

  • Three rs_method defaults (radial_label, build_slayer_inputs, resistive_layer_overlap) flipped from :midplane to :flux, with their docstrings. No formula changed.
  • SLAYERControl validation warns when theta_sample is nonzero; the theta docstrings of build_slayer_inputs and resistive_layer_overlap now say it is used only by rs_method=:midplane.
  • HDF5 PerSurface/rs long name and the layer-overlap table in docs/src/stability.md name the label: minor radius √(2ψ_t/B₀).
  • runtests_slayer_inputs.jl pins the expected rs to rs_method=:flux while building with the default, so a future default change fails the test. runtests_layer_overlap_fitzpatrick.jl expects the theta_sample warning.

Regression report

Run on alfven (3 threads, Julia 1.11.7, pinned manifest) at bcec3990a, the branch with develop b6a28892d merged (after #441 and #581), against that develop: --cases diiid_slayer_n1,diiid_slayer_n1_coupled,diiid_slayer_n1_chi_perp_e,diiid_slayer_n1_winding,diiid_truncation_n1,diiid_n1 --refs origin/develop,bcec3990a; no stale-baseline banner. The percentages are those of the earlier run against develop 5b2258e5a to within rounding, and #441's new D_geo row moves with the r-based shear (57 %), as the flux label implies. The SLAYER and CRF rows are expected to move. The CRF rows read N/A because develop has NaN on the 2/1 and 4/1 surfaces; the per-surface values are:

develop br_crit branch br_crit develop Q_peak branch Q_peak develop Q0 branch Q0
2/1 NaN NaN NaN NaN 2.463 3.192
3/1 1.402e-3 1.320e-3 0.717 1.009 1.121 1.635
4/1 NaN 1.584e-4 NaN 0.401 0.206 0.335

(The table's per-surface values are from the run against develop 5b2258e5a; the rerun after #441 shows the same rows changed, with the same N/A pattern.) diiid_truncation_n1 (12 unchanged) confirms the layer-overlap cut does not move, and diiid_n1 is 53 unchanged.

Full regression report
Case: diiid_slayer_n1 — DIII-D-like H-mode equilibrium, n=1, SLAYER tearing-mode analysis (uncoupled per-surface, AMR, validity-gated)

Regression Report: diiid_slayer_n1
Ref 1: origin/develop  @ b6a28892d (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Ref 2: bcec3990a  @ bcec3990a (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Quantity  origin/develop  bcec3990a  Diff  Status
SLAYER surface indices                   [6 elem]  [6 elem]  0.0e+00             OK
SLAYER poloidal m                        [6 elem]  [6 elem]  0.0e+00             OK
SLAYER toroidal n                        [6 elem]  [6 elem]  0.0e+00             OK
SLAYER minor radius rs                   [6 elem]  [6 elem]  2.486e-01 (45.90%)  ** CHANGED **
SLAYER r-based shear                     [6 elem]  [6 elem]  5.348e+01 (57.27%)  ** CHANGED **
SLAYER Lundquist S                       [6 elem]  [6 elem]  7.344e+06 (9.84%)   ** CHANGED **
SLAYER D_norm                            [6 elem]  [6 elem]  3.499e-01 (16.76%)  ** CHANGED **
SLAYER P_perp                            [6 elem]  [6 elem]  3.6e-15             OK
SLAYER tauk                              [6 elem]  [6 elem]  1.756e-05 (29.61%)  ** CHANGED **
SLAYER iota_e                            [6 elem]  [6 elem]  1.1e-16             OK
SLAYER Q_e                               [6 elem]  [6 elem]  1.428e+00 (84.27%)  ** CHANGED **
SLAYER Q_i                               [6 elem]  [6 elem]  1.009e+00 (84.27%)  ** CHANGED **
SLAYER toroidal critical-Δ factor D_geo  [6 elem]  [6 elem]  4.668e+00 (57.27%)  ** CHANGED **
SLAYER Q_root [2/1,3/1,4/1]              [3 elem]  [3 elem]  5.442e-01 (29.58%)  ** CHANGED **
SLAYER ω_Hz [2/1,3/1,4/1]                [3 elem]  [3 elem]  3.561e+01 (0.11%)   ** CHANGED **
SLAYER γ_Hz [2/1,3/1,4/1]                [3 elem]  [3 elem]  9.370e+02 (67.54%)  ** CHANGED **
SLAYER no_root flags [2/1,3/1,4/1]       [3 elem]  [3 elem]  0.0e+00             OK
CRF b_r/B_φ crit [2/1,3/1,4/1]           [3 elem]  [3 elem]  N/A                 ** CHANGED **
CRF Q_peak [2/1,3/1,4/1]                 [3 elem]  [3 elem]  N/A                 ** CHANGED **
CRF Q0 [2/1,3/1,4/1]                     [3 elem]  [3 elem]  7.292e-01 (29.61%)  ** CHANGED **
CRF b_r crit in tesla [2/1,3/1,4/1]      [3 elem]  [3 elem]  N/A                 ** CHANGED **
SLAYER enabled flag                      1         1         0.0e+00             OK
Runtime (s)                              276.2s    280.5s    --
Summary: 15 changed, 7 unchanged


Case: diiid_slayer_n1_coupled — DIII-D-like H-mode equilibrium, n=1, SLAYER coupled multi-surface determinant with kinetic-file E×B rotation (reuses the n=1 deck via overrides)

Regression Report: diiid_slayer_n1_coupled
Ref 1: origin/develop  @ b6a28892d (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Ref 2: bcec3990a  @ bcec3990a (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Quantity  origin/develop  bcec3990a  Diff  Status
SLAYER tauk                  [6 elem]  [6 elem]  1.756e-05 (29.61%)  ** CHANGED **
SLAYER q_shift               [6 elem]  [6 elem]  7.292e-01 (29.61%)  ** CHANGED **
SLAYER coupled Q_root        [1 elem]  [1 elem]  5.443e-01 (29.60%)  ** CHANGED **
SLAYER coupled ω             [1 elem]  [1 elem]  2.519e+00 (0.01%)   ** CHANGED **
SLAYER coupled γ             [1 elem]  [1 elem]  1.293e+02 (44.22%)  ** CHANGED **
SLAYER coupled no_root flag  [1 elem]  [1 elem]  0.0e+00             OK
SLAYER enabled flag          1         1         0.0e+00             OK
Runtime (s)                  280.4s    284.5s    --
Summary: 5 changed, 2 unchanged


Case: diiid_slayer_n1_chi_perp_e — DIII-D-like H-mode equilibrium, n=1, SLAYER tearing-mode analysis with P_perp_model = chi_perp_e

Regression Report: diiid_slayer_n1_chi_perp_e
Ref 1: origin/develop  @ b6a28892d (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Ref 2: bcec3990a  @ bcec3990a (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Quantity  origin/develop  bcec3990a  Diff  Status
SLAYER surface indices                   [6 elem]  [6 elem]  0.0e+00             OK
SLAYER poloidal m                        [6 elem]  [6 elem]  0.0e+00             OK
SLAYER toroidal n                        [6 elem]  [6 elem]  0.0e+00             OK
SLAYER minor radius rs                   [6 elem]  [6 elem]  2.486e-01 (45.90%)  ** CHANGED **
SLAYER r-based shear                     [6 elem]  [6 elem]  5.348e+01 (57.27%)  ** CHANGED **
SLAYER Lundquist S                       [6 elem]  [6 elem]  7.344e+06 (9.84%)   ** CHANGED **
SLAYER D_norm                            [6 elem]  [6 elem]  3.499e-01 (16.76%)  ** CHANGED **
SLAYER P_perp                            [6 elem]  [6 elem]  1.4e-14             OK
SLAYER tauk                              [6 elem]  [6 elem]  1.756e-05 (29.61%)  ** CHANGED **
SLAYER iota_e                            [6 elem]  [6 elem]  1.1e-16             OK
SLAYER Q_e                               [6 elem]  [6 elem]  1.428e+00 (84.27%)  ** CHANGED **
SLAYER Q_i                               [6 elem]  [6 elem]  1.009e+00 (84.27%)  ** CHANGED **
SLAYER toroidal critical-Δ factor D_geo  [6 elem]  [6 elem]  4.668e+00 (57.27%)  ** CHANGED **
SLAYER Q_root [2/1,3/1,4/1]              [3 elem]  [3 elem]  5.442e-01 (29.59%)  ** CHANGED **
SLAYER ω_Hz [2/1,3/1,4/1]                [3 elem]  [3 elem]  1.880e+01 (0.06%)   ** CHANGED **
SLAYER γ_Hz [2/1,3/1,4/1]                [3 elem]  [3 elem]  7.493e+02 (66.06%)  ** CHANGED **
SLAYER no_root flags [2/1,3/1,4/1]       [3 elem]  [3 elem]  0.0e+00             OK
CRF b_r/B_φ crit [2/1,3/1,4/1]           [3 elem]  [3 elem]  N/A                 ** CHANGED **
CRF Q_peak [2/1,3/1,4/1]                 [3 elem]  [3 elem]  N/A                 ** CHANGED **
CRF Q0 [2/1,3/1,4/1]                     [3 elem]  [3 elem]  7.292e-01 (29.61%)  ** CHANGED **
CRF b_r crit in tesla [2/1,3/1,4/1]      [3 elem]  [3 elem]  N/A                 ** CHANGED **
SLAYER enabled flag                      1         1         0.0e+00             OK
Runtime (s)                              285.5s    291.7s    --
Summary: 15 changed, 7 unchanged


Case: diiid_slayer_n1_winding — DIII-D-like H-mode equilibrium, n=1, SLAYER tearing-mode analysis with root_classification = winding

Regression Report: diiid_slayer_n1_winding
Ref 1: origin/develop  @ b6a28892d (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Ref 2: bcec3990a  @ bcec3990a (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Quantity  origin/develop  bcec3990a  Diff  Status
SLAYER surface indices                   [6 elem]  [6 elem]  0.0e+00             OK
SLAYER poloidal m                        [6 elem]  [6 elem]  0.0e+00             OK
SLAYER toroidal n                        [6 elem]  [6 elem]  0.0e+00             OK
SLAYER minor radius rs                   [6 elem]  [6 elem]  2.486e-01 (45.90%)  ** CHANGED **
SLAYER r-based shear                     [6 elem]  [6 elem]  5.348e+01 (57.27%)  ** CHANGED **
SLAYER Lundquist S                       [6 elem]  [6 elem]  7.344e+06 (9.84%)   ** CHANGED **
SLAYER D_norm                            [6 elem]  [6 elem]  3.499e-01 (16.76%)  ** CHANGED **
SLAYER P_perp                            [6 elem]  [6 elem]  3.6e-15             OK
SLAYER tauk                              [6 elem]  [6 elem]  1.756e-05 (29.61%)  ** CHANGED **
SLAYER iota_e                            [6 elem]  [6 elem]  1.1e-16             OK
SLAYER Q_e                               [6 elem]  [6 elem]  1.428e+00 (84.27%)  ** CHANGED **
SLAYER Q_i                               [6 elem]  [6 elem]  1.009e+00 (84.27%)  ** CHANGED **
SLAYER toroidal critical-Δ factor D_geo  [6 elem]  [6 elem]  4.668e+00 (57.27%)  ** CHANGED **
SLAYER Q_root [2/1,3/1,4/1]              [3 elem]  [3 elem]  5.442e-01 (29.58%)  ** CHANGED **
SLAYER ω_Hz [2/1,3/1,4/1]                [3 elem]  [3 elem]  3.561e+01 (0.11%)   ** CHANGED **
SLAYER γ_Hz [2/1,3/1,4/1]                [3 elem]  [3 elem]  9.370e+02 (67.54%)  ** CHANGED **
SLAYER no_root flags [2/1,3/1,4/1]       [3 elem]  [3 elem]  0.0e+00             OK
CRF b_r/B_φ crit [2/1,3/1,4/1]           [3 elem]  [3 elem]  N/A                 ** CHANGED **
CRF Q_peak [2/1,3/1,4/1]                 [3 elem]  [3 elem]  N/A                 ** CHANGED **
CRF Q0 [2/1,3/1,4/1]                     [3 elem]  [3 elem]  7.292e-01 (29.61%)  ** CHANGED **
CRF b_r crit in tesla [2/1,3/1,4/1]      [3 elem]  [3 elem]  N/A                 ** CHANGED **
SLAYER enabled flag                      1         1         0.0e+00             OK
Runtime (s)                              289.1s    284.7s    --
Summary: 15 changed, 7 unchanged


Case: diiid_truncation_n1 — DIII-D-like, n=1, psihigh=0.9999 with the resistive-layer overlap cap binding (truncation only)

Regression Report: diiid_truncation_n1
Ref 1: origin/develop  @ b6a28892d (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Ref 2: bcec3990a  @ bcec3990a (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Quantity  origin/develop  bcec3990a  Diff  Status
layer-overlap cap applied              1              1              0.0e+00  OK
layer-overlap psilim                   9.985081e-01   9.985081e-01   0.0e+00  OK
first overlapping surface index        7              7              0.0e+00  OK
diffusive-resistive layer widths (Δψ)  [7 elem]       [7 elem]       0.0e+00  OK
qlim                                   6.200000e+00   6.200000e+00   0.0e+00  OK
psilim                                 9.949767e-01   9.949767e-01   0.0e+00  OK
mpert                                  37             37             0.0e+00  OK
# singular surfaces                    5              5              0.0e+00  OK
singular q values                      [5 elem]       [5 elem]       0.0e+00  OK
singular psi locations                 [5 elem]       [5 elem]       0.0e+00  OK
plasma energy Re(ep[1])                -1.377408e+00  -1.377408e+00  0.0e+00  OK
total energy Re(et[1])                 7.978614e-01   7.978614e-01   0.0e+00  OK
Runtime (s)                            201.1s         204.7s         --
Summary: 12 unchanged


Case: diiid_n1 — DIII-D-like equilibrium, n=1, ideal + perturbed equilibrium

Regression Report: diiid_n1
Ref 1: origin/develop  @ b6a28892d (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Ref 2: bcec3990a  @ bcec3990a (2026-10-29)
       env: julia 1.11.7, x86_64-linux-gnu, manifest 6f3e1b5f (pinned), 3 threads/3 BLAS, jit build
Quantity  origin/develop  bcec3990a  Diff  Status
total energy Re(et[1])                        7.979260e-01     7.979260e-01     0.0e+00    OK
total energy Im(et[1])                        1.122448e-06     1.122448e-06     0.0e+00    OK
plasma energy Re(ep[1])                       -1.377302e+00    -1.377302e+00    0.0e+00    OK
vacuum energy Re(ev[1])                       2.175228e+00     2.175228e+00     0.0e+00    OK
vacuum matrix min eigenvalue                  1.873975e-01     1.873975e-01     0.0e+00    OK
plasma energy (all)                           [35 elem]        [35 elem]        0.0e+00    OK
vacuum energy (all)                           [35 elem]        [35 elem]        0.0e+00    OK
total energy (all)                            [35 elem]        [35 elem]        0.0e+00    OK
ODE steps (saved)                             1225             1225             0.0e+00    OK
ODE steps (total)                             1220             1220             0.0e+00    OK
q0                                            1.204212e+00     1.204212e+00     0.0e+00    OK
q95                                           4.781723e+00     4.781723e+00     0.0e+00    OK
beta_t                                        1.327024e-02     1.327024e-02     0.0e+00    OK
beta_n                                        1.372511e+00     1.372511e+00     0.0e+00    OK
internal inductance li1                       8.842269e-01     8.842269e-01     0.0e+00    OK
internal inductance li2                       7.080757e-01     7.080757e-01     0.0e+00    OK
internal inductance li3                       7.304340e-01     7.304340e-01     0.0e+00    OK
poloidal beta betap1                          6.680739e-01     6.680739e-01     0.0e+00    OK
poloidal beta betap2                          5.349836e-01     5.349836e-01     0.0e+00    OK
poloidal beta betap3                          5.518764e-01     5.518764e-01     0.0e+00    OK
# singular surfaces                           5                5                0.0e+00    OK
singular psi locations                        [5 elem]         [5 elem]         0.0e+00    OK
singular q values                             [5 elem]         [5 elem]         0.0e+00    OK
current beta betaj                            4.236480e-01     4.236480e-01     0.0e+00    OK
plasma volume                                 1.829472e+01     1.829472e+01     0.0e+00    OK
plasma current                                1.152130e+00     1.152130e+00     0.0e+00    OK
mpert                                         35               35               0.0e+00    OK
npert                                         1                1                0.0e+00    OK
toroidal field bt0                            2.006573e+00     2.006573e+00     0.0e+00    OK
wall field bwall                              3.880145e-01     3.880145e-01     0.0e+00    OK
aspect ratio                                  2.845746e+00     2.845746e+00     0.0e+00    OK
elongation kappa                              1.708322e+00     1.708322e+00     0.0e+00    OK
q profile (checksum)                          549ab41cae62...  549ab41cae62...  identical  OK
pressure profile (checksum)                   46df23b5c0f0...  46df23b5c0f0...  identical  OK
Mercier D_I profile (checksum)                c1144fa7136e...  c1144fa7136e...  identical  OK
resistive interchange D_R profile (checksum)  4ef2f6e16cfb...  4ef2f6e16cfb...  identical  OK
ballooning Delta' profile (checksum)          5e9e84ea37d6...  5e9e84ea37d6...  identical  OK
island half-widths                            [5 elem]         [5 elem]         0.0e+00    OK
Chirikov parameter                            [5 elem]         [5 elem]         0.0e+00    OK
||resonant area-weighted field||              5.286406e-04     5.286406e-04     0.0e+00    OK
dominant-coupling singular values             [3 elem]         [3 elem]         0.0e+00    OK
|forcing overlap with dominant mode|          1.419633e-04     1.419633e-04     0.0e+00    OK
|delta_nominal| of coil set 1                 7.074913e-05     7.074913e-05     0.0e+00    OK
||ddelta/d(shift)|| over coil sets            1.246839e-04     1.246839e-04     0.0e+00    OK
||ddelta/d(tilt)|| over coil sets             4.175436e-07     4.175436e-07     0.0e+00    OK
PE plasma energy                              3.321081e+00     3.321081e+00     0.0e+00    OK
PE vacuum energy                              3.174319e+00     3.174319e+00     0.0e+00    OK
PE surface energy                             5.521989e+00     5.521989e+00     0.0e+00    OK
PE toroidal torque                            9.083706e-07     9.083706e-07     0.0e+00    OK
NTV torque FGAR [N·m]                         5.539348e-01     5.539348e-01     0.0e+00    OK
NTV kinetic energy dW FGAR [J]                8.225554e-02     8.225554e-02     0.0e+00    OK
Runtime (s)                                   254.1s           264.1s           --
||forcing b~|| (root-area-weighted)           4.683171e-04     4.683171e-04     0.0e+00    OK
resonant area-weighted field b^r              [5 elem]         [5 elem]         0.0e+00    OK
Summary: 53 unchanged

Notes for reviewers


🤖 Generated with Claude Code

https://claude.ai/code/session_01VdRsGGg4YRG6E9fgLGbpdF

logan-nc and others added 2 commits October 26, 2026 21:09
…idal-flux label

The Fitzpatrick layer widths are derived in r = sqrt(2 psi_t / B0), so make
that label the default for rs, the r-based shear, S, tau_R and the Delta-prime
reference length instead of the outboard-midplane chord. The overlap scan
already evaluated its criterion in this label; the layer stack now agrees.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186CLfjeJeSusNTva5RMfGU
@logan-nc logan-nc added this to the GPEC v2.0.0 milestone Oct 27, 2026
@logan-nc logan-nc self-assigned this Oct 27, 2026
@github-actions github-actions Bot added api Config key, output dataset or exported name changed changed-results Results move or an interface breaks - read before upgrading labels Oct 27, 2026
@d-burg
d-burg self-requested a review October 27, 2026 19:29

@d-burg d-burg left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @logan-nc. The flip itself looks right to me: the flux label is the coordinate the Fitzpatrick layer formalism is written in, and the change is confined to the three defaults. A few claude things before it can land:

Checked on current develop. I merged develop 0b4b9fbfb into the branch locally (clean) and reran diiid_slayer_n1 on feynman. The shifts are essentially the ones in your report, so #501's P_perp_model=:D_perp default doesn't change the picture. The branch still needs the develop merge and a new stamp for CI.

theta_sample becomes a no-op. TearingProblem passes theta=control.theta_sample to build_slayer_inputs, and :flux ignores θ. Since rs_method isn't in the TOML, no deck can reach a θ-dependent label any more, but the [SLAYER] key is still accepted and its docstring (Tearing/Runner/Control.jl) still says it sets where the minor radius is sampled. So "the TOML interface is unchanged" isn't quite true: either warn when theta_sample is set, or document that it only affects rs_method=:midplane callers of the API.

Stale header. The file comment at the top of LayerInputs.jl still says the minor radius is taken at the outboard midplane from rzphi_rsquared((ψ, 0.0)).

Test. Deriving the expected rs from radial_label(equil) makes the test follow the default, which also means it can't catch the default changing again. Pinning rs_method=:flux explicitly would.

Interaction with #441 and #415. Neither conflicts textually with this branch.

  • #441: its toroidal-D_geo wiring test in runtests_slayer_inputs.jl builds its reference k_ref from surface_minor_radius/surface_da_dpsi, so with this PR merged six assertions fail (dgeo_val, kpar_val, k_ref). The physics is fine: dgeo_val and k_ref move by the same factor (0.811), which is the expected scaling with K. It's a test that hard-codes the midplane label, and I'll make it label-agnostic on #441 so the merge order doesn't matter.
  • #415: its tests pass on the combined tree, but its harness pins move: br_crit 5.8 %, Q_peak 40.8 %, Q0 29.6 % (through tauk). Whichever of the two merges second needs a new stamp.

Overall I'm in favor of shipping this in 2.0 for the improved inner layer model accuracy.

d-burg and others added 2 commits October 29, 2026 01:00
…er the flux label, and pin it in the layer-input test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@logan-nc
logan-nc marked this pull request as ready for review October 29, 2026 13:38
logan-nc and others added 2 commits October 29, 2026 10:32
@logan-nc

Copy link
Copy Markdown
Collaborator Author

@d-burg I pushed 0049f1e0a on top of your cd80162. It merges current develop, which includes #415 (critical resonant field), so br_crit, Q_peak and Q0 now move with this PR. It also updates two theta docstrings that still described the midplane chord (build_slayer_inputs, resistive_layer_overlap), names the label in the HDF5 PerSurface/rs long name (minor radius √(2ψ_t/B₀)), and makes runtests_layer_overlap_fitzpatrick.jl expect the new theta_sample warning. The targeted tests pass on the merged tree. The harness is re-running at the merged head across all six affected cases, _coupled, _chi_perp_e, _winding and diiid_truncation_n1 included, and I'll post the report and the new stamp when it finishes. Your approval predates these commits, so please re-confirm. The PR now closes #417.

@logan-nc
logan-nc requested a review from d-burg October 29, 2026 14:43
@matt-pharr
matt-pharr added this pull request to the merge queue Oct 29, 2026
@matt-pharr
matt-pharr removed this pull request from the merge queue due to a manual request Oct 29, 2026
@matt-pharr
matt-pharr added this pull request to the merge queue Oct 29, 2026
@matt-pharr
matt-pharr removed this pull request from the merge queue due to a manual request Oct 29, 2026
…ux-radial-label

# Conflicts:
#	test/runtests_layer_overlap_fitzpatrick.jl
@logan-nc
logan-nc force-pushed the refactor/slayer-flux-radial-label branch from 249f268 to 0049f1e Compare October 29, 2026 18:30
@logan-nc
logan-nc enabled auto-merge October 29, 2026 18:34
Keep both the derived toroidal geometric factor's description and the flux-label note on theta_sample in the SLAYER control docstring.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186CLfjeJeSusNTva5RMfGU
@logan-nc
logan-nc added this pull request to the merge queue Oct 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks Oct 29, 2026
@logan-nc
logan-nc added this pull request to the merge queue Oct 30, 2026
Merged via the queue into develop with commit 1c71c9b Oct 30, 2026
15 of 16 checks passed
@logan-nc
logan-nc deleted the refactor/slayer-flux-radial-label branch October 30, 2026 00:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api Config key, output dataset or exported name changed changed-results Results move or an interface breaks - read before upgrading

Projects

None yet

Development

Successfully merging this pull request may close these issues.

InnerLayer.SLAYER - API - Choose one default radial label for the Fitzpatrick layer formalism

2 participants