NEAT Documentation

NEAT is a hybrid python/C++ framework for optimizing stellarators for good fast-particle confinement using the near-axis expansion formalism. You can read more about these concepts in the overview section here. The high-level routines are written in python, with calls to C++ where needed for performance. The main components of NEAT are:

  • Interface with physics codes such as gyronimo, pyQSC, pyQIC, SIMSOPT and SIMPLE.

  • Simple to use classes to trace particles in stellarator magnetic fields.

  • Tools for defining objective functions and parameter spaces for optimization.

The design of NEAT 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 problem do not need to be installed. For instance, to just trace particles you don’t need the simsopt or SIMPLE packages.

  • Flexibility: The components used to define a particles, orbits or objective functions can be re-used for applications other than standard optimization

We gratefully acknowledge funding from the EUROfusion and from Fundação para a Ciência e Tecnologia, Portugal (FCT).

NEAT is fully open-source, and anyone is welcome to make suggestions, contribute, and use.

Indices and tables