Dimensional units, the VMEX kinetic-bootstrap coupling, and a 28-deck
validation against SFINCS Fortran v3.
New public modules
dkx.units the SFINCS reference set and the Hat-to-SI conversions. The
set is derived, not asserted: nBar=1e20, TBar=1 keV, mBar=m_p,
BBar=1 T, RBar=1 m, lnLambda=17 is the only choice reproducing
both Delta=4.5694e-3 and nu_n=8.330e-3, and a test recomputes
both from SI so it cannot drift.
dkx.bootstrap KineticBootstrapCurrent, the kinetic <j.B> as an objective term
with the interface vmex.core.optimize expects. One import and
one tuple turns a vmex optimization drift-kinetic.
Validation
28 upstream decks against SFINCS Fortran v3, both codes converged on all 28.
Parity median 3.98e-08; 89% of 114 field comparisons under 1e-4. The two
outliers are the reference under-converging (its own true residual 0.111
against DKX's 2.04e-13) and catastrophic cancellation in vd = vm + vE, where
the two terms cancel to 3635x below their own size.
Against Redl on a finite-beta precise-QA equilibrium: 0.93, 0.95, 0.98 with
the Fokker-Planck operator, resolution-converged to 3.5%.
Gradients against Fortran central differences: 6.8e-04, at 5.6x the speed.
Fixed
dkx wout_*.nc: 23m30s to 37-46 s, and correct where four independent bugs had
compounded to a ~14x error in the bootstrap panel -- a vacuum wout read as a
1e9 m^-3 plasma, gradients written to the wrong radial coordinate, a constant
temperature zeroing the main drive, and pitch-angle scattering on the
parallel-momentum moment.
postprocess-upstream --save wrote blank pages.
The persistent compilation cache grew without bound; now capped at 4 GB.