Skip to content

VMEX 0.3.0

Latest

Choose a tag to compare

@rogeriojorge rogeriojorge released this 20 Jul 14:07
9e759d0

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_legs cuts a closed magnetic axis at its curvature minima and splices in exactly-straight mirror legs; build_qi_mirror_hybrid returns a solvable setup. The new examples/qi_mirror_hybrid_fourier_vs_bspline.py cuts 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_turns parameter continuously rotates the elliptical cross-section around the closed circuit while the legs keep an exactly straight axis. Two turns lift the traced transform from iota = 0.085 to iota = 0.141 at s = 0.75. section_turns = 0 reproduces 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 force 1.21e-4 → 2.41e-3, far below the 0.05 promotion 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 (removed Coils_from_json); the --coils CLI path and the two ESSOS coil examples now use the classmethod with a legacy fallback.
  • ESSOS Coils.to_mgrid guard — clear VmecInputError instead of an opaque AttributeError on older ESSOS builds.
  • tools/fetch_assets.py — repointed at the real vmec_jax_*.tar.gz fixture bundles (the vmex_* names 404-ed).
  • Stale lasym-rejection test + docstrings — the implicit lane has supported FD-validated lasym since the 4-family boundary map + traceable readin.f delta rotation landed; retired the obsolete rejection test and corrected the docstrings.

Full changelog: https://github.com/uwplasma/vmex/blob/main/CHANGELOG.md