Skip to content

DESC Stellarator Optimization Suite

DESC solves for and optimizes 3D magnetohydrodynamic (MHD) equilibria using pseudo-spectral numerical methods and automatic differentiation. DESC is an open-source Python code available on github, contributions are welcome!

The theoretical approach and implementation details used by DESC are presented in the following papers and documented at Theory. Please cite our work if you use DESC!

For a more completel list of key DESC publications (methods, recent advances, and applications), see the publications showcase: DESC Publications Showcase.

DESC Code Capabilities

  • Continuation & perturbation workflows: Efficiently follow solution branches and compute perturbed equilibria to explore parameter space or solve for strongly-shaped equilibria. See the Continuation & perturbation tutorial for examples.

  • Stage-one optimization for quasisymmetry, omnigenity and more: Differentiable objectives enable precise quasi-symmetry, omnigenity, stability, and other targets for improved confinement. See the stage-one optimization tutorials for quasi-symmetry and omnigenity for hands-on examples.

  • Constrained optimization: Include engineering and physics constraints (coils, stability, profiles) directly within the optimization using constrained optimization methods to produce practical, buildable configurations. See the Constrained optimization tutorial.

  • Stage-Two filamentary coil design: Stage-two coil optimization workflows (both filamentary as well as REGCOIL/QUADCOIL-like surface current approaches) for optimizing coilsets to support vacuum or finite-pressure equilibria. See the Stage-two coil optimization tutorial for examples.

  • Flexible interface for adding new objectives: Do you have a new objective you want to optimize for while utilizing DESC's automatic differentiation capabilities? Find guidance in our objective development guide.

  • Wrap external codes as objectives: Integrate turbulence, stability or other metrics into optimization pipelines by wrapping external codes. See examples in the tutorial.

The full list of examples and tutorials are available in the DESC docs.

Comments