Metadata-Version: 2.1
Name: simsopt
Version: 0.17.0
Summary: Framework for optimizing stellarators
Home-page: https://github.com/hiddenSymmetries/simsopt
Download-URL: https://pypi.org/project/simsopt
Author: "Matt Landreman, Bharat Medasani, Florian Wechsung"
Author-email: mattland@umd.edu, mbkumar@gmail.com, wechsung@nyu.edu
Maintainer: "Bharat Medasani"
Maintainer-email: mbkumar@gmail.com
License: GNU Lesser General Public License Version 3
Project-URL: Bug Tracker, https://github.com/hiddenSymmetries/simsopt/issues
Project-URL: Documentation, https://simsopt.readthedocs.io
Project-URL: Source Code, https://github.com/hiddenSymmetries/simsopt/archive/master.zip
Keywords: plasma physics,plasma,magnetohydrodynamics,mhd,nuclear fusion reactor,fusion,stellarator,vmec,spec,optimization,Biot-Savart,magnetostatics
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/markdown
License-File: COPYING
License-File: COPYING.LESSER
Requires-Dist: numpy (>=1.21)
Requires-Dist: jax (>=0.2.5)
Requires-Dist: jaxlib (>=0.1.56)
Requires-Dist: scipy (>=1.5.4)
Requires-Dist: Deprecated (>=1.2.10)
Requires-Dist: nptyping (>=1.3.0)
Requires-Dist: monty (>=2021.6.10)
Requires-Dist: ruamel.yaml
Requires-Dist: sympy
Requires-Dist: f90nml
Requires-Dist: randomgen
Requires-Dist: pyevtk
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Provides-Extra: mpi
Requires-Dist: mpi4py (>=3.0.3) ; extra == 'mpi'
Provides-Extra: spec
Requires-Dist: py-spec (>=3.0.1) ; extra == 'spec'
Requires-Dist: pyoculus (>=0.1.1) ; extra == 'spec'
Requires-Dist: h5py (>=3.1.0) ; extra == 'spec'
Provides-Extra: vis
Requires-Dist: matplotlib ; extra == 'vis'
Requires-Dist: vtk (>=8.1.2) ; extra == 'vis'
Requires-Dist: PyQt5 ; extra == 'vis'
Requires-Dist: mayavi ; extra == 'vis'

# simsopt

![GitHub](https://img.shields.io/github/license/hiddensymmetries/simsopt)
[![codecov](https://codecov.io/gh/hiddenSymmetries/simsopt/branch/master/graph/badge.svg?token=ltN6qonZ5p)](https://codecov.io/gh/hiddenSymmetries/simsopt)
[![DOI](https://zenodo.org/badge/247710081.svg)](https://zenodo.org/badge/latestdoi/247710081)

![SIMSOPT](docs/source/logo.png)
![SIMSOPT](docs/source/coils_and_surfaces.png)

`simsopt` is a framework for optimizing
[stellarators](https://en.wikipedia.org/wiki/Stellarator).
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](https://en.wikipedia.org/wiki/Open%E2%80%93closed_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](https://github.com/hiddenSymmetries/simsopt/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](https://simsopt.readthedocs.io/en/latest/installation.html),
[instructions for the Docker
container](https://simsopt.readthedocs.io/en/latest/containers.html), and
other information can be found in the [main simsopt documentation
here.](https://simsopt.readthedocs.io)

Some of the physics modules with compiled code reside in separate
repositories. These separate modules include

- [VMEC](https://github.com/hiddenSymmetries/VMEC2000), for MHD
  equilibrium.
- [SPEC](https://github.com/PrincetonUniversity/SPEC), for MHD
  equilibrium.
- [booz_xform](https://hiddensymmetries.github.io/booz_xform), for
  Boozer coordinates.
  
If you use `simsopt` in your research, kindly cite the code using
[this reference](https://doi.org/10.21105/joss.03525):

[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](https://simsopt.readthedocs.io/en/latest/publications.html).

We gratefully acknowledge funding from the [Simons Foundation's Hidden
symmetries and fusion energy
project](https://hiddensymmetries.princeton.edu). 
