Published July 31, 2026 | Version v0.17.3

DESC

  • 1. Thea Energy
  • 2. University of Maryland, College Park
  • 3. Princeton University
  • 4. University of Wisconsin-Madison

Description

This release introduces significant speed improvements for the default optimizer lsq-exact, especially for problems with big Jacobians.

New Features

  • Adds eq_fixed argument to BoundaryError to remove the equilibrium from the optimization. This can be used instead of adding a FixParameter(eq) constraint.
  • Adds check_intersection argument to initialize_modular_coils, initialize_helical_coils and initialize_saddle_coils
  • Default value of check_intersection for coil related functions now defaults to False (no check). Previously, the default was True, and this was causing redundant checks.

Performance Improvements

  • Speeds up the "qr" trust-region subproblem and Newton-step solves in the least-squares optimizers by reusing the Jacobian QR factorization across the Levenberg-Marquardt parameter sweep, and by using qr_multiply to apply Q without forming it explicitly.
  • Adds a pure-JAX qr_multiply fallback (a blocked Householder / compact-WY implementation) for jax < 0.10.0, so the above Q-avoidance speedup is available on the currently pinned JAX with no jaxlib rebuild (~1.5-2x faster than forming Q on CPU for tall Jacobians, larger on GPU).
  • Adds surf_batch_size kwarg to Boozer and omnigenous field compute variables, to allow for tuning of the memory usage when computing these quantities by choosing how many surfaces to simultaneously compute.
    • Also adds surf_batch_size as an additional kwarg to make_boozmn_output, as well as the objectives Omnigenity and QuasisymmetryBoozer

Bug Fixes

  • Fixes bug that was always setting NFP=1 in to_FourierRZ methods.
  • Fixes the possible permission error in from_input_file method of Equilibrium, FourierRZToroidalSurface and FourierRZCurve classes when used with a VMEC input file. Now the automatically generated DESC input file is written to a temporary, in-memory buffer, not to disk. Note that invoking DESC from the command like python -m desc input.vmec retains the current behavior of writing an input file for the converted DESC input.
  • Fixes a bug in _CoilObjective for objectives which are computed per-grid node when at least one entry of weight is zero.
  • Fixes VMECIO.save metadata for current-density variables and corrects the asymmetric currvmns magnetic-axis extrapolation.
  • Bug (#2120) in desc.magnetic_fields.OmnigenousField computing NaNs when the B_lm corresponded to flat magnetic wells fixed by interpax v0.3.14, updated tests to exercise this.
  • Fixes bug in reactor_QA.py script where the current profile was allowed to have a nonzero rho^1 component, which resulted in an unphysical profile near-axis.
    • Updates "reactor_QA" in desc.examples to fix this. Note that if using "reactor_QA" example from v0.16.0 until this fix, the current profile in that example has this issue.
  • Fixes bug in CoilSet.from_symmetry that ignored the passed in check_intersection value. This caused redundant checks in various other functions such as plot_coils.

Breaking Changes

  • Name change in _CoilObjective replacing coilset_mask with objective_mask. Custom subclasses with _broadcast_input="node" that previously used coilset_mask should switch to objective_mask.

New Contributors

  • @jpbrodrick89 made their first contribution in https://github.com/PlasmaControl/DESC/pull/2244
  • @WenyinWei made their first contribution in https://github.com/PlasmaControl/DESC/pull/2258
  • @IssraAli made their first contribution in https://github.com/PlasmaControl/DESC/pull/2264

Full Changelog: https://github.com/PlasmaControl/DESC/compare/v0.17.2...v0.17.3

Notes

If you use this software, please cite it using the metadata from this file. To cite a specific version of DESC, please cite the correct version from Zenodo at https://zenodo.org/search?page=1&size=20&q=conceptrecid:%224876504%22&sort=-version&all_versions=True

Files

PlasmaControl/DESC-v0.17.3.zip

Files (421.9 MB)

Name Size
md5:4e75a3eda40095e5db7c83386a5b19ce
421.9 MB Preview Download

Additional details

Related works