You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Continuation of #63, here are some ideas for notation that generalizes to entangled units:
# The common case avoids notational issuesset_onsite_coupling!(sys, S -> S[3]^2, i)
set_pair_coupling!(sys, (Si, Sj) -> Si'*J*Sj, bond)
# Equivalent to above
S =spin_matrices(3/2)
set_onsite_coupling!(sys, S[3]^2, i)
Si, Sj =to_product_space(S, S)
set_pair_coupling!(sys, Si'*J*Sj, bond)
# Working in a local tensor product space S=3/2 ⊗ S=1 for explicit spin-orbitSystem(... [SiteInfo(i; ProductSpace(3/2, 1), magnetic_dipole)] ...)
S, L =to_product_space(spin_matrices.([3/2, 1])...)
set_onsite_coupling!(sys, S'*L, i)
Si, Li, Sj, Lj =to_product_space(spin_matrices.([3/2, 1, 3/2, 1])...)
set_pair_coupling!(sys, Si'*Sj, bond)
# Projecting onto multiplets S=1/2 ⊕ S=3/2System(... [SiteInfo(i; MultipletSpace(1/2, 3/2), magnetic_dipole)] ...)
S, L =to_product_space(spin_matrices.([3/2, 1])...)
# P is a (2*4)x(4*3) matrix that maps from tensor product space to projected# multiplet space
P =projector_onto_multiplets(; j1=3/2, j2=1, J=(1/2, 3/2))
set_onsite_coupling!(sys, P'*S'*L*P, i)
# Building interactions between multiplets should project only at the final# step
Si, Li, Sj, Lj =to_product_space(spin_matrices.([3/2, 1, 3/2, 1])...)
PP =kron(P, P)
set_pair_coupling!(sys, PP'*(Si'*Sj + (Si'*Sj)^2)*PP, bond)
# If the Hilbert space gets too large, it's also possible to project earlier,# but this requires a lot of care.
T = [P'*S[α]*P for α in1:3]
Ti, Tj =to_product_space(T, T)
set_pair_coupling!(sys, Ti'*Tj, bond) # This is OKset_pair_coupling!(sys, (Ti'*Tj)^2, bond) # This is wrong, projection happened too early!
The text was updated successfully, but these errors were encountered:
Significant progress with #178, which now supports anonymous function syntax in set_onsite_coupling! and set_pair_coupling!, and general quadrupole-quadrupole couplings in all modes.
The next big task is to teach System about the SU(2) representation via some generalization of SpinInfo
For tensor product spaces, the current plan is to create a wrapper on top of System. Implementation of these entangled units is underway in @ddahlbom's branch. Support for a direct sum of multiplet spin representations is not currently planned.
Continuation of #63, here are some ideas for notation that generalizes to entangled units:
The text was updated successfully, but these errors were encountered: