VMEX 0.3.0
Differentiable, JAX-native VMEC. This release extends the vmex.mirror open/closed magnetic-mirror lane with two new hybrid geometries, promotes the axisymmetric free-boundary mirror to 50 % β, and clears a batch of pre-release QA issues.
Added
- QI–mirror hybrid (Fourier vs B-spline).
vmex.mirror.splice_straight_legscuts a closed magnetic axis at its curvature minima and splices in exactly-straight mirror legs;build_qi_mirror_hybridreturns a solvable setup. The newexamples/qi_mirror_hybrid_fourier_vs_bspline.pycuts the nfp = 2 QI axis at its zero-curvature symmetry planes and compares the two axis representations: a global Fourier series rings at the straight↔curved seam and decays only ~1/N, while the local B-spline reproduces the straight mirror cell to machine precision (~1e-12). - Toroidally rotating ellipse for the stellarator–mirror hybrid. A new
section_turnsparameter continuously rotates the elliptical cross-section around the closed circuit while the legs keep an exactly straight axis. Two turns lift the traced transform fromiota = 0.085toiota = 0.141ats = 0.75.section_turns = 0reproduces the prior geometry exactly. (The rotating-elliptical-section hybrid remains a research candidate — it passes the minor-radius bulk gate but its device-normalized strong force still plateaus on a scoped near-axis defect; the circular-section hybrid is supported.)
Changed
- Axisymmetric free-boundary mirror validated through 50 % β (was 25 %). A size-scaled Krylov span in the Newton-GMRES polish clears the fine-grid restart starvation; on the
(ns, nxi, elements, ntheta) = (13, 25, 13, 24)grid every β point from 0 through 50 % converges (≤ 44 Newton-GMRES iterations) with bulk minor-radius force1.21e-4 → 2.41e-3, far below the0.05promotion gate. - CI timeout headroom for the borderline parity (25 → 35 min) and implicit-gradient (10 → 15 min) jobs.
Fixed
- ESSOS
Coils.from_json— track the ESSOS rename (removedCoils_from_json); the--coilsCLI path and the two ESSOS coil examples now use the classmethod with a legacy fallback. - ESSOS
Coils.to_mgridguard — clearVmecInputErrorinstead of an opaqueAttributeErroron older ESSOS builds. tools/fetch_assets.py— repointed at the realvmec_jax_*.tar.gzfixture bundles (thevmex_*names 404-ed).- Stale lasym-rejection test + docstrings — the implicit lane has supported FD-validated lasym since the 4-family boundary map + traceable
readin.fdelta rotation landed; retired the obsolete rejection test and corrected the docstrings.
Full changelog: https://github.com/uwplasma/vmex/blob/main/CHANGELOG.md