Skip to content

Add OmnigenityHarmonics Objective and new OmnigenousField types #1846

@DMCXE

Description

@DMCXE

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 in magnetic_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 to objectives/_omnigenity.py. This objective enables the direct optimization of OmnigenousField, OmnigenousFieldOOPS, and OmnigenousFieldLCForm 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 for OmnigenousFieldOOPS and OmnigenousFieldLCForm have been implemented in plotting.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])
Image

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions