landreman / sfincs

SFINCS: the Stellarator Fokker-Planck Iterative Neoclassical Conservative Solver
BSD 2-Clause "Simplified" License
22 stars 11 forks source link

SFINCS: the Stellarator Fokker-Planck Iterative Neoclassical Conservative Solver.

SFINCS calculation of the parallel current J dot B in W7-X

SFINCS is a code which computes neoclassical effects in nonaxisymmetric or axisymmetric toroidal plasmas, such as stellarators and tokamaks. The code solves a drift-kinetic equation for the distribution function of each species. In addition to the neoclassical fluxes, flows, and bootstrap current, one can also obtain other moments such as the density variation on a flux surface, or the distribution function itself.

Documentation is available in several places. A user manual is available in the doc/manual/version3/ subdirectory of this repository; run make from that directory to build the manual. The equations implemented are detailed in the technical documentation in the doc/ directory. The primary published reference is Landreman, Smith, Mollen, and Helander, Physics of Plasmas 21, 042503 (2014). Further details of the velocity-space discretization may be found in [Landreman and Ernst, Journal of Computational Physics 243, 130 (2013)](). The other files in the /doc/ folder of the repository may also be useful.

SFINCS is a descendant of the axisymmetric codes here. SFINCS is also closely related to the radially global tokamak code PERFECT. All of these codes have two independent velocity-space variables: speed and pitch angle. SFINCS and PERFECT both have two independent spatial variables: poloidal and toroidal angles in SFINCS, and poloidal and radial coordinates in PERFECT.

This repository contains several versions of SFINCS: (in order from oldest to newest) singleSpecies, multiSpecies, version3, and other experimental versions that use different discretizations. Except for advanced users, you should almost always use version3, which is fairly stable. For most versions of sfincs, both matlab (serial) and fortran (parallel) editions are available in this repository. The matlab and fortran editions are entirely independent of each other, and they have nearly identical functionality and variable names. Finer resolution can be used in the fortran versions because they are parallelized and therefore able to access more memory. To accurately resolve the distribution function for experimentally relevant magnetic fields and collisionality, you will likely need the fortran versions to access enough memory.

The fortran versions rely on the PETSc library and use the HDF5 library for output. Version3 also has an option to link to the NetCDF library for reading VMEC files. The makefiles for the fortran versions of SFINCS may need to be adapted to link to these libraries on your computing system.

For inquiries, contact Matt Landreman at matt dot landreman at gmail dot com.