Skip to content

Commit

Permalink
Add Quadratic flux minimizing surface functionality (#1264)
Browse files Browse the repository at this point in the history
- Add ``SurfaceQuadraticFlux`` objective which minimizes the quadratic
magnetic flux through a ``FourierRZToroidalSurface`` object, allowing
for optimizing for Quadratic flux minimizing (QFM) surfaces.
- Allow ``ToroidalFlux`` objective to accept
``FourierRZToroidalSurface`` so it can be used to specify the toroidal
flux through a QFM surface.
- Add ``eq_fixed`` flag to ``ToroidalFlux`` to allow for the
equilibrium/QFM surface to vary during optimization, useful for
single-stage optimizations.
- Add tutorial notebook showcasing QFM surface capability.

Resolve #1162
  • Loading branch information
dpanici authored Dec 3, 2024
2 parents 2741269 + 82ed185 commit 1b7735e
Show file tree
Hide file tree
Showing 11 changed files with 1,364 additions and 63 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Changelog
=========

New Features

- Adds ``from_input_file`` method to ``Equilibrium`` class to generate an ``Equilibrium`` object with boundary, profiles, resolution and flux specified in a given DESC or VMEC input file
- Adds function ``solve_regularized_surface_current`` to ``desc.magnetic_fields`` module that implements the REGCOIL algorithm (Landreman, (2017)) for surface current normal field optimization
* Can specify the tuple ``current_helicity=(M_coil, N_coil)`` to determine if resulting contours correspond to helical topology (both ``(M_coil, N_coil)`` not equal to 0), modular (``N_coil`` equal to 0 and ``M_coil`` nonzero) or windowpane/saddle (``M_coil`` and ``N_coil`` both zero)
Expand All @@ -13,6 +14,10 @@ New Features
* use of both this and the ``QuadraticFlux`` objective allows for REGCOIL solutions to be obtained through the optimization framework, and combined with other objectives as well.
- Changes local area weighting of Bn in QuadraticFlux objective to be the square root of the local area element (Note that any existing optimizations using this objective may need different weights to achieve the same result now.)
- Adds a new tutorial showing how to use``REGCOIL`` features.
- Adds ``SurfaceQuadraticFlux`` objective which minimizes the quadratic magnetic flux through a ``FourierRZToroidalSurface`` object, allowing for optimizing for Quadratic flux minimizing (QFM) surfaces.
- Allows ``ToroidalFlux`` objective to accept ``FourierRZToroidalSurface`` so it can be used to specify the toroidal flux through a QFM surface.
- Adds ``eq_fixed`` flag to ``ToroidalFlux`` to allow for the equilibrium/QFM surface to vary during optimization, useful for single-stage optimizations.
- Adds tutorial notebook showcasing QFM surface capability.


Bug Fixes
Expand Down
1 change: 1 addition & 0 deletions desc/objectives/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
PlasmaCoilSetMinDistance,
QuadraticFlux,
SurfaceCurrentRegularization,
SurfaceQuadraticFlux,
ToroidalFlux,
)
from ._equilibrium import (
Expand Down
Loading

0 comments on commit 1b7735e

Please sign in to comment.