simsopt


simsopt
is a framework for optimizing
stellarators.
The high-level routines of simsopt
are in python, with calls to C++
or fortran where needed for performance. Several types of components
are included:
- Interfaces to physics codes, e.g. for MHD equilibrium.
- Tools for defining objective functions and parameter spaces for
optimization.
- Geometric objects that are important for stellarators - surfaces and
curves - with several available parameterizations.
- Efficient implementations of the Biot-Savart law and other magnetic
field representations, including derivatives.
- Tools for parallelized finite-difference gradient calculations.
The design of simsopt
is guided by several principles:
- Thorough unit testing, regression testing, and continuous
integration.
- Extensibility: It should be possible to add new codes and terms to
the objective function without editing modules that already work,
i.e. the open-closed principle.
This is because any edits to working code can potentially introduce bugs.
- Modularity: Physics modules that are not needed for your
optimization problem do not need to be installed. For instance, to
optimize SPEC equilibria, the VMEC module need not be installed.
- Flexibility: The components used to define an objective function can
be re-used for applications other than standard optimization. For
instance, a
simsopt
objective function is a standard python
function that can be plotted, passed to optimization packages
outside of simsopt
, etc.
simsopt
is fully open-source, and anyone is welcome to use it, make
suggestions, and contribute.
Several methods are available for installing simsopt
. One
recommended approach is to use pip:
pip install simsopt
For detailed installation instructions on some specific systems, see
the wiki.
Also, a Docker container is available with simsopt
and its components pre-installed, which
can be started using
docker run -it --rm hiddensymmetries/simsopt
More installation
options,
instructions for the Docker
container, and
other information can be found in the main simsopt documentation
here.
Some of the physics modules with compiled code reside in separate
repositories. These separate modules include
If you use simsopt
in your research, kindly cite the code using
this reference:
[1] M Landreman, B Medasani, F Wechsung, A Giuliani, R Jorge, and C Zhu,
"SIMSOPT: A flexible framework for stellarator optimization",
J. Open Source Software 6, 3525 (2021).
See also the simsopt publications page.
We gratefully acknowledge funding from the Simons Foundation's Hidden
symmetries and fusion energy
project.