-
Notifications
You must be signed in to change notification settings - Fork 30
Description
Per discussion with David, we've outlined a conceptual path to supporting arbitrarily complicated effective spin models using SU(N) states.
Step 1. Generators of rotation $F$ on each site.
To populate interactions (and verify their symmetry-consistency) the system needs to know how to "rotate" a pair coupling operator specified on a single bond. This requires generators of rotations in the
Step 2. Magnetic moment $\mu$
The magnetic moment dipole is physically meaningful, as it participates in Zeeman coupling and long-range dipole-dipole couplings, and is an observable for experimental scattering. Currently, it is specified through the effective spin
Step 3. Multiple shifted magnetic moments, needed for entangled units
By construction, an entangled unit will be associated with multiple sites of the "bare" model. Here one must track multiple magnetic moment dipoles, and their real-space translations, for each entangled unit. These individual translations become relevant for (1) long-range dipole-dipole interactions, (2) incorporating proper phase factors into the intensities of a spin wave theory calculation.
Practical upshot
- The field
sys.Nsgets replaced bysys.Fs :: Union{Vector{Int}, Vector{Dipole}}to define total angular momentum for each local Hilbert space. The three components are generators of rotation. Like before, the first branch would denote the dimensionNof the irrep of su(2), such that$s = (N-1)/2$ . The second branch gives the option for explicit angular momentumDipoleoperatorsF. - The field
sys.gsgets replaced by asys.Ms :: Union{Vector{Mat3}, Vector{Dipole}}which defines the magnetic moments. The first branch gives the g-tensor to be used as$\mu = -g F$ , where$F$ is the angular momentum fromsys.Fs. The second branch gives the option for explicit magnetic moment operatorsM. May also want a fieldsys.momentsto cache the expectations ofsys.Ms.
Design question: Much of Sunny's UI assumes the existence of a unique spin dipole at each site. Coupling between these spins are set in functions like set_exchange!, and also the callback forms of set_pair_coupling! and set_onsite_coupling!. When we move to general su(2) representations, the concept of a "local spin" becomes ambiguous? One option is to define this local spin as the total angular momentum defined in sys.Fs. But maybe the safer option is to print an error "When working with generalized spin, the coupling operator must be passed explicitly as a matrix".