Skip to content

KineticForces: preserve periodic vpar spline and enumerate bounce roots exactly - #341

Draft
krystophny wants to merge 2 commits into
OpenFUSIONToolkit:developfrom
redmod-team:bugfix/periodic-vpar-spline
Draft

KineticForces: preserve periodic vpar spline and enumerate bounce roots exactly#341
krystophny wants to merge 2 commits into
OpenFUSIONToolkit:developfrom
redmod-team:bugfix/periodic-vpar-spline

Conversation

@krystophny

Copy link
Copy Markdown

Summary

  • fit the closed-poloidal-turn parallel-velocity factor with PeriodicBC()
  • enumerate roots span-by-span, splitting cubic intervals at stationary points
  • canonicalize the physically identical theta=0/1 seam
  • retain descending root order and existing deepest-well/transit behavior

This ports the relevant endpoint-condition correction from PrincetonUniversity/GPEC#284 without reverting the independent fixes already present from #310.

Why

Wrapping an endpoint-fit cubic closes its value but not its derivatives, leaving a nonphysical seam. The former global root heuristic can also miss a genuine close root pair. The new analytic periodic oracle fails on the old implementation and passes here.

Validation

  • kinetic test suite: 292/292 passed on Julia 1.12.6
  • analytic periodic seam/root regression: old implementation fails; this branch passes with C2 closure and exact close-pair detection
  • TC24 phiI010 L5 full runs: finite TGAR/PGAR results; real-torque change below 3.1e-9 relative
  • DIII-D FGAR/TGAR non-regression: unchanged integration counts; real-torque change below 1.1e-6 relative
  • corrected Fortran KineticForces: single METHOD_REGISTRY for NTV method flags, docs, and dispatch #284 TC24 archive: completes normally where the old endpoint fit reached LSODE ISTATE=-5
  • solovev_kinetic_ntv: all six comparisons pass; the previously missed close bounce pair is found

One unrelated solovev_kinetic_nuzero harness sensitivity remains documented: it occurs before KineticForces is called and varies with adaptive multithreaded ForceFreeStates execution. CI remains the Julia 1.11/formatter authority.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant