yingjerkao / Sunny.jl

A Julia library implementing SU(N) classical spin dynamics for modeling quantum spin Hamiltonians

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Stable Dev Build Status

Overview

Sunny is a Julia package for modeling atomic-scale magnetism using classical spin dynamics with quantum corrections. It provides powerful tools to estimate dynamical structure factor intensities, $\mathcal{S}(𝐪,ω)$, enabling quantitative comparison with experimental scattering data, e.g., neutrons or x-rays.

A unique feature of Sunny is its treatment of spins as SU(N) coherent states. Each quantum spin-S state is a superposition of $N=2S+1$ levels, and evolves under unitary, SU(N) transformations. Through neglect of entanglement, the formalism allows to generalize the Landau-Lifshitz dynamics of spin dipoles to a dynamics of spin multipoles. The theory becomes especially useful for modeling materials with strong single-ion anisotropy effects (see our FeI₂ tutorial). In the future, the theory could also be used to model explicit spin-orbit coupling, or 'units' of locally entangled spins.

At low-temperatures, Sunny supports the usual linear spin wave theory (LSWT) for spin dipoles, and its 'multi-boson' generalization. At finite temperatures, the full classical dynamics (with quantum correction factors) may be preferable to capture anharmonic effects. The coupling of SU(N) spins to a thermal bath also makes possible the study of various non-equilibrium dynamics, e.g., thermal transport, pump-probe experiments, and spin-glass relaxation.

Sunny provides a number of tools to facilitate the specification and solution of spin Hamiltonians. This includes spacegroup symmetry analysis, powerful Monte Carlo sampling algorithms, and interactive 3D visualization. Efficient simulation is made possible by several algorithmic developments.

Try it out!

To see Sunny in action, a good starting point is our FeI₂ tutorial. This compound includes effective spin-1 moments with strong easy-axis anisotropy. The coupled dipole-quadrupole dynamics is efficiently described within the formalism of SU(3) coherent states, and is crucial to explain neutron scattering data.

Try it yourself by downloading Julia, and installing Sunny within Julia's built-in package manager. New Julia users can refer to our Getting Started guide.

Sunny is evolving rapidly. 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.

Related projects

Sunny is heavily inspired by the SpinW code. In particular, Sunny's symmetry analysis, model specification, and LSWT features will be familiar to users of SpinW. Sunny differs from SpinW in its support for nonlinear classical spin dynamics. Such dynamics can be useful, e.g., to study thermal fluctuations, non-equilibrium dynamics, transport, or disorder in systems with large magnetic supercells.

Another LSWT code is SpinWaveGenie which is written in C++ and very fast. With future optimizations, Sunny aims to achieve comparable performance.

Conversely, there exist many powerful codes for studying classical spin dynamics, including Spirit and Vampire. Compared to these codes, Sunny puts more emphasis on capturing quantum effects of magnetic compounds.

A distinguishing feature of Sunny compared to previous codes is its support for simulating generalized spins via the theory of SU(N) coherent states.

Join our community

If you're using Sunny, we'd like to interact with you. Please join our Slack community and say hello. If you find an unexpected behavior in Sunny, you can also file an issue. If you write a paper using Sunny, please add it to our Literature Wiki.

About

A Julia library implementing SU(N) classical spin dynamics for modeling quantum spin Hamiltonians

License:MIT License


Languages

Language:Julia 94.5%Language:JavaScript 5.1%Language:HTML 0.3%