-
Notifications
You must be signed in to change notification settings - Fork 37
Description
Description
This pull request introduces the OOPS (Omnigenity OPtimization like quasi-Symmetry) method into DESC, as described in [1]. OOPS leverages the concept of a homeomorphism to enable the optimization of omnigenity, as well as other concepts like pseudo-symetry and piecewise omnigenity, in spectral space, analogous to the optimization of quasisymmetry. A key advantage of this method is that it is independent of any specific parameterization. One can use the Cary-Shasharina mapping [2], the Landreman-Catto mapping [3], the current DESC mapping, or any others. It only requires a method for constructing the target magnetic field. Generally, it has better roubustness. The goal of this PR is to implement OOPS within DESC's flexible and efficient framework.
To facilitate discussion, I have created this Draft Pull Request. #1845
Core Changes
The main changes included in this PR are:
- New
OmnigenousField
Types: Two new parameterizations for omnigenous fields have been added inmagnetic_field/_core.py
:OmnigenousFieldOOPS
: The example mapping used in the OOPS paper [1].OmnigenousFieldLCForm
: The mapping form proposed by Landreman et al. [3], referred to here as the "LCForm".
- New
OmnigenityHarmonics
Objective: A new objective,OmnigenityHarmonics
, has been added toobjectives/_omnigenity.py
. This objective enables the direct optimization ofOmnigenousField
,OmnigenousFieldOOPS
, andOmnigenousFieldLCForm
in spectral space. - New Computations: Necessary parameters have been registered in
compute/_omnigenity.py
. The core addition is the function_B_omni_nonsymmetric
, which calculates the non-symmetric components of the omnigenous field,B(η,α)
. - New Plotting Functions: To support visualization of these new field types,
plot_boozer_surface_XXX
routines forOmnigenousFieldOOPS
andOmnigenousFieldLCForm
have been implemented inplotting.py
.
Examples
Here are some examples in Ref. [1]. They can be optimized using DESC. We have implemented an optimization workflow in DESC with objectives, procedures, and resolutions that are nearly identical to the corresponding SIMSOPT scripts. Following the same process, starting from a circular torus, we use a resolution continuation method to optimize the configuration up to a spectral resolution of M=N=7
. Depending on whether jax-cache is enabled, a precisely poloidal omnigenous (PO) configuration can be optimized within 10-15 minutes on a single NVIDIA RTX 5090 GPU. (With a configuration nearly identical to the one described in Ref. [1])
Known I/O Limitation
While the I/O interface can successfully save and load the degrees of freedom of OmnigenousFieldLCForm
(s_dofs
, d_dofs
), it does not currently support serializing the function definitions themselves. This means that when loading from a saved state, the user must manually re-supply the Python functions for S_function
and D_function
.
References
[1] H. Liu, G. Yu, et al., "Optimizing omnigenity like quasisymmetry for stellarators," arxiv:2502.09350 (2025).
[2] J. R. Cary and S. G. Shasharina, Helical Plasma Confinement Devices with Good Confinement Properties, Phys. Rev. Lett. 78, 674 (1997).
[3] M. Landreman and P. J. Catto, "Omnigenity as generalized quasisymmetry," Physics of Plasmas 19, 056103 (2012).