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
The PE singular-coupling jump is evaluated at ψ_s ± spot_psi with a hard-coded numerator (SingularCoupling.jl:378):
spot_psi =5e-4/ (abs(nn) *abs(sing_surf.q1))
annotated "spot = 5e-4 matches Fortran default singfac_min". That annotation is wrong on both counts: the Fortran quantity is sing_spot, its own namelist knob (default 5e-4, gpec.f:123), unrelated to singfac_min. So the Julia port reproduces the Fortran default but drops the knob — and drops a second capability entirely.
What Fortran actually does
gpec.f:486-508 builds a per-surfacesing_spots(ising) array:
default: sing_spots(ising) = sing_spot (5e-4);
with use_res_spot = .TRUE. (requires gal_flag): sing_spots(ising) = sing_resspot·(n·|q′|)·sfac^(−1/3) + sing_spot, i.e. the matching radius is set by the resistive resonant-layer width (the S^(−1/3) scaling from singtype(ising)%restype), floored at sing_spot.
Consumed as lpsi/rpsi = respsi ∓ spots(ising)/(nn·|q1|) (gpout.f:598-603, and the same in gpout_singfld:1658-1663). The netCDF output even ships them as sing_spots ("Sweet spots used for calculating resonant jump quantities").
Proposed work
Baseline fidelity: expose sing_spot as a control ([PerturbedEquilibrium]), replace the literal, and fix the misleading annotation. Default 5e-4 keeps current behaviour bit-identical.
Per-surface resistive spot: port the use_res_spot branch — matching radius from the resistive layer width per surface, floored at sing_spot. The ingredients exist on the Julia side (ForceFreeStates/Resist.jl, the Galerkin Δ′ path, the inner-layer solvers).
Also worth noting: a matching-radius bias of exactly this kind was already found and fixed on the Riccati side (#412), which is precedent that the radius choice materially moves Δ′-family numbers.
Problem
The PE singular-coupling jump is evaluated at ψ_s ±
spot_psiwith a hard-coded numerator (SingularCoupling.jl:378):annotated "spot = 5e-4 matches Fortran default singfac_min". That annotation is wrong on both counts: the Fortran quantity is
sing_spot, its own namelist knob (default5e-4,gpec.f:123), unrelated tosingfac_min. So the Julia port reproduces the Fortran default but drops the knob — and drops a second capability entirely.What Fortran actually does
gpec.f:486-508builds a per-surfacesing_spots(ising)array:sing_spots(ising) = sing_spot(5e-4);use_res_spot = .TRUE.(requiresgal_flag):sing_spots(ising) = sing_resspot·(n·|q′|)·sfac^(−1/3) + sing_spot, i.e. the matching radius is set by the resistive resonant-layer width (the S^(−1/3) scaling fromsingtype(ising)%restype), floored atsing_spot.Consumed as
lpsi/rpsi = respsi ∓ spots(ising)/(nn·|q1|)(gpout.f:598-603, and the same ingpout_singfld:1658-1663). The netCDF output even ships them assing_spots("Sweet spots used for calculating resonant jump quantities").Proposed work
sing_spotas a control ([PerturbedEquilibrium]), replace the literal, and fix the misleading annotation. Default 5e-4 keeps current behaviour bit-identical.use_res_spotbranch — matching radius from the resistive layer width per surface, floored atsing_spot. The ingredients exist on the Julia side (ForceFreeStates/Resist.jl, the Galerkin Δ′ path, the inner-layer solvers).handoff/issue376/RESULTS.md§36): on a DIII-D kinetic-calculated case, the resonant-layer surface term is ~20% of the total NTV torque and the PE-vs-NTV comparison agrees to 0.8% only once that layer window is excluded — so the choice of matching radius is not cosmetic there. Related: Feature Request: Integrate self consistent kinetic workflow with the riccati integrator workflow #375 (Riccati + kinetic) and Port gpout_dw / gpout_dw_matrix (psi-resolved torque response profiles and matrices) as the grid-logic diagnostic #423 (torque cross-check).Also worth noting: a matching-radius bias of exactly this kind was already found and fixed on the Riccati side (#412), which is precedent that the radius choice materially moves Δ′-family numbers.