Sunny is a Julia package for modeling atomic-scale magnetism. Through spin dynamics simulations, it enables direct comparison with experimental scattering data, e.g., neutrons or x-rays. Ease of use is a priority, with tools for symmetry-guided modeling and interactive visualization.
At low-temperatures, Sunny supports the usual linear spin wave theory of spin dipoles, and its multi-flavor generalization. At finite temperatures, Sunny can calculate the dynamical structure factor using classical spin dynamics with quantum corrections. Langevin coupling to a thermal bath makes possible the study of non-equilibrium dynamics, e.g., thermal transport, pump-probe experiments, and spin-glass relaxation. Sunny also provides powerful Monte Carlo algorithms for collecting statistics in thermal equilibrium.
A unique feature of Sunny is its treatment of spins as SU(N) coherent states. This theory generalizes Landau-Lifshitz spin dynamics to a nonlinear Schrödinger equation, which retains
Install Sunny and try the Tutorials. For traditional linear spin wave theory, see also the SpinW ports.
See Version History for new features and breaking changes. To install a specific version of Sunny, say v0.x
, use the command add Sunny@0.x
.
Sunny is inspired by SpinW, especially regarding symmetry analysis and traditional spin wave theory. Relative to other spin wave codes, this table highlights Sunny's special features (as of 2024):
McPhase | SpinW | Sunny | |
---|---|---|---|
Symmetry-guided modeling | ❌ | ✅ | ✅ |
Interactive graphics | ❌ | ✅ | ✅ |
Incommensurate spiral order | ❌ | ✅ | ✅ |
Arbitrary couplings of quantum operators | ✅ | ❌ | ✅ |
Interaction renormalization corrections | ❌ | ❌ | ✅ |
Multi-flavor spin wave theory | ✅ | ❌ | ✅ |
Classical SU(N) spin dynamics | ❌ | ❌ | ✅ |
Fast long-range dipole interactions | ❌ | ❌ | ✅ |
Programming language | C++ | Matlab | Julia |
Codes like Spirit and Vampire focus less on capturing quantum effects, but might be preferred for large-scale classical spin dynamics, e.g., for micromagnetics.
We want to interact with you! Please join our Slack community and say hello. If you encounter a problem with Sunny, please ask on the Slack #helpdesk
channel or file a Github issue. If you use Sunny in a paper, please let us know and add it to our Literature Wiki.