Hamiltonian MPO of different kinds of spins
Posted: 03 Jan 2025, 05:02
Hello.
I'm trying to build an MPO for a spin chain of different spins.
For example, system is 1D chain of 4 spin-1 sites and 2 spin-1/2 sites.
And the Hamiltonian is as follows:
\(H_{s1} = \sum_{i \neq j} \vec{S_{i}} \cdot J_{ij} \cdot \vec{S_{j}} + \sum_{i} (D S_{zi}^2 - h S_{zi})\)
\(H_{h} = \sum_{k \neq l} \vec{I_{k}} \cdot J_{kl} \cdot \vec{I_{l}} - h \sum_{k} I_{zk} \)
\(H_{int} = \sum_{i, k} \vec{S_{i}} \cdot A_{ik} \cdot \vec{I_k} \)
\(H_{total} = H_{s1} + H_{h} + H_{int} \)
where \(\vec{S}\) and \(\vec{I}\) are spin operators for the spin-1 and spin-1/2 respectively, \(J\) is the dipole-dipole interaction coefficient, \(A\) is the hyperfine interaction coefficient, and \(h\) is the external magnetic field.
Does anyone know how to build the Hamiltonian and corresponding MPO with TeNPy?
I'm trying to build an MPO for a spin chain of different spins.
For example, system is 1D chain of 4 spin-1 sites and 2 spin-1/2 sites.
Python: Select all
from tenpy.networks.site import SpinHalfSite, SpinSite
N_s1 = 3
N_half = 2
sites_s1 = [SpinSite(1, conserve=None) for _ in range(N_s1)]
sites_half = [SpinHalfSite(conserve=None) for _ in range(N_half)]
sites = sites_s1 + sites_half
\(H_{s1} = \sum_{i \neq j} \vec{S_{i}} \cdot J_{ij} \cdot \vec{S_{j}} + \sum_{i} (D S_{zi}^2 - h S_{zi})\)
\(H_{h} = \sum_{k \neq l} \vec{I_{k}} \cdot J_{kl} \cdot \vec{I_{l}} - h \sum_{k} I_{zk} \)
\(H_{int} = \sum_{i, k} \vec{S_{i}} \cdot A_{ik} \cdot \vec{I_k} \)
\(H_{total} = H_{s1} + H_{h} + H_{int} \)
where \(\vec{S}\) and \(\vec{I}\) are spin operators for the spin-1 and spin-1/2 respectively, \(J\) is the dipole-dipole interaction coefficient, \(A\) is the hyperfine interaction coefficient, and \(h\) is the external magnetic field.
Does anyone know how to build the Hamiltonian and corresponding MPO with TeNPy?