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
{{ message }}
Repository navigation
Port gpout_dw / gpout_dw_matrix (psi-resolved torque response profiles and matrices) as the grid-logic diagnostic #423
Summary (revised after fortran-physics-reviewer consultation)
We need to port the ψ-resolved torque response machinery from gpec/gpout.f — gpout_dw (lines 2579–2650) and gpout_dw_matrix (2655–2891) — and use it as the standing grid-logic diagnostic.
The Julia PE currently outputs only the scalar boundary torqueEnergies/toroidal_torque = −2n·Im(⟨Φ_tot, Λ⁻¹Φ_tot⟩/4). A physics review against the Fortran confirms this scalar is a faithful port of gpout.f:1195–1201 (identical quadratic form, /4 normalization, total-flux argument, torque factor). But it is a boundary quadratic form of the inductance matrix — not the volume-resolved quantity:
gpout_dw: ψ-resolved torque/energy density from the actual self-consistent EL solutions, dW(ψ) = Σ conj(u1)·u2 / 2 / (2μ₀) · 2n·i per step, splined; Re of the running ψ-integral = torque (N·m), Im = 2nδW.
gpout_dw_matrix: the mpert×mpert response-matrix generalization per ψ step (dwks/dwk/gind/gres/gindp/gresp; normalized by ξ, Φ_boundary, Φ_x, and coordinate-independently).
Neither has a Julia equivalent (grep confirms). The ψ-integrated gpout_dw torque is the true apples-to-apples comparator for the grid-free KineticForces/fgar NTV torque — the comparison that in Fortran exposed ldp-grid inadequacy.
Measured data motivating the port (DIII-D kinetic-calculated, suppression on)
run
PE scalar torque [N·m]
fgar torque [N·m]
PE/KF
rot factor 1.0, auto grid (290)
0.1831
0.7241
0.25
rot factor 1.0, fixed 1024
0.0830
0.7281
0.11
rot factor 0.2, auto grid (305)
0.0946
0.1282
0.74
rot factor 0.2, fixed 1024
0.0950
0.1286
0.74
Per the review, the scalar-vs-fgar gap is not by itself a bug — the two are different constructions — so these rows are motivation, not defect evidence. Two genuine flags remain:
The scalar's grid instability at rot=1.0 (0.183 → 0.083 doubling the grid, while fgar holds to 0.5%) is a red flag on wt0/plasma_inductance convergence — 92% of the physical torque lives at ψ>0.9 where the ω_E sign flip sits within ~one grid cell and the Δ′ rational brackets clear knots. Worth its own investigation, independent of the port.
Until gpout_dw is ported, no volume-integral cross-check exists — the sharpest grid diagnostic from the Fortran workflow is missing from the Julia code.
Proposed work
Port gpout_dw (ψ-resolved torque/energy profile from solutions; the u1†u2 bilinear with the 2n/2μ₀ energy→torque factor) — output as a ψ profile (and its running integral) in gpec.h5.
Port gpout_dw_matrix (ψ × m × m torque/energy response matrix profiles).
Adopt ψ-integrated gpout_dw torque vs fgar torque as a tracked regression-harness quantity (a DIII-D kinetic-calculated case) — the designated referee for any kinetic grid logic.
Separately: investigate the scalar boundary torque's grid sensitivity (wt0 convergence near the pedestal ω_E crossing).
Full record: handoff/issue376/RESULTS.md §32 (experiment branch). Evidence h5s: ~/scratch_issue376/d3dkin/tx_*.
changed the title [-]Self-consistent PE response torque disagrees with grid-free NTV torque (grid sensitivity + systematic offset)[/-][+]Port gpout_dw / gpout_dw_matrix (psi-resolved torque response profiles and matrices) as the grid-logic diagnostic[/+]on Aug 22, 2026
Correction to the equivalence statement in this issue (and the underlying review): for exact self-consistent solutions, the boundary quadratic form −2n·Im⟨Φ,Λ⁻¹Φ⟩/4 equals the ψ-integral of the gpout_dw torque profile (δW surface-term identity, modulo normalization conventions) — they are two evaluations of the same Euler–Lagrange-model torque, and their numerical difference is precisely the grid/solution-quality diagnostic. The genuinely independent quantity is the KineticForces energy-space NTV; PE-vs-NTV agreement tests whether the EL matrices faithfully discretize the drift-kinetic operator. Output delineation (docstrings + long_names) is in PR #424; the port items in this issue are unchanged.
Activity
EXP - DOC - s32: PE-vs-KF torque cross-validation fails two ways; issue
[-]Self-consistent PE response torque disagrees with grid-free NTV torque (grid sensitivity + systematic offset)[/-][+]Port gpout_dw / gpout_dw_matrix (psi-resolved torque response profiles and matrices) as the grid-logic diagnostic[/+]EXP - DOC - s32 correction: scalar torque is a faithful boundary-form…
logan-nc commentedon Aug 22, 2026
Correction to the equivalence statement in this issue (and the underlying review): for exact self-consistent solutions, the boundary quadratic form −2n·Im⟨Φ,Λ⁻¹Φ⟩/4 equals the ψ-integral of the gpout_dw torque profile (δW surface-term identity, modulo normalization conventions) — they are two evaluations of the same Euler–Lagrange-model torque, and their numerical difference is precisely the grid/solution-quality diagnostic. The genuinely independent quantity is the KineticForces energy-space NTV; PE-vs-NTV agreement tests whether the EL matrices faithfully discretize the drift-kinetic operator. Output delineation (docstrings + long_names) is in PR #424; the port items in this issue are unchanged.
PE - DOCS - Delineate the boundary-response torque from the KineticFo…