Published July 31, 2026
| Version v0.17.3
Software
Open
DESC
Authors/Creators
- 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_fixedargument toBoundaryErrorto remove the equilibrium from the optimization. This can be used instead of adding aFixParameter(eq)constraint. - Adds
check_intersectionargument toinitialize_modular_coils,initialize_helical_coilsandinitialize_saddle_coils - Default value of
check_intersectionfor 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 usingqr_multiplyto applyQwithout forming it explicitly. - Adds a pure-JAX
qr_multiplyfallback (a blocked Householder / compact-WY implementation) forjax < 0.10.0, so the aboveQ-avoidance speedup is available on the currently pinned JAX with no jaxlib rebuild (~1.5-2x faster than formingQon CPU for tall Jacobians, larger on GPU). - Adds
surf_batch_sizekwarg 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_sizeas an additional kwarg tomake_boozmn_output, as well as the objectivesOmnigenityandQuasisymmetryBoozer
- Also adds
Bug Fixes
- Fixes bug that was always setting NFP=1 in
to_FourierRZmethods. - Fixes the possible permission error in
from_input_filemethod ofEquilibrium,FourierRZToroidalSurfaceandFourierRZCurveclasses 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 likepython -m desc input.vmecretains the current behavior of writing an input file for the converted DESC input. - Fixes a bug in
_CoilObjectivefor objectives which are computed per-grid node when at least one entry ofweightis zero. - Fixes
VMECIO.savemetadata for current-density variables and corrects the asymmetriccurrvmnsmagnetic-axis extrapolation. - Bug (#2120) in
desc.magnetic_fields.OmnigenousFieldcomputing NaNs when theB_lmcorresponded to flat magnetic wells fixed byinterpaxv0.3.14, updated tests to exercise this. - Fixes bug in
reactor_QA.pyscript where the current profile was allowed to have a nonzero rho^1 component, which resulted in an unphysical profile near-axis.- Updates
"reactor_QA"indesc.examplesto fix this. Note that if using"reactor_QA"example fromv0.16.0until this fix, the current profile in that example has this issue.
- Updates
- Fixes bug in
CoilSet.from_symmetrythat ignored the passed incheck_intersectionvalue. This caused redundant checks in various other functions such asplot_coils.
Breaking Changes
- Name change in
_CoilObjectivereplacingcoilset_maskwithobjective_mask. Custom subclasses with_broadcast_input="node"that previously usedcoilset_maskshould switch toobjective_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
Files
PlasmaControl/DESC-v0.17.3.zip
Additional details
Related works
- Is supplement to
- Software: https://github.com/PlasmaControl/DESC/tree/v0.17.3 (URL)
Software
- Repository URL
- https://github.com/PlasmaControl/DESC