MixedSiteSet in TEBD and DMRG

Dear ITensor developers and users,

Thank you for wonderful and useful library. I do DMRG and want to do TEBD with ITensor in C++ version.
In my model, the system consists of the conduction electron subsystem and local spin subsystem. So, I use the MixedSiteSet<Electron, SpinHalf>, so that electrons live in odd sites and identical spins (SpinHalf or SpinOne) on the even ones.
My model Hamiltonian (what is called Kondo-Heisenberg model) is:

H = -t \sum_{i,\alpha} (c^\dagger_{i, \alpha} c_{i+1, \alpha} + c^\dagger_{i, \alpha} c_{i-1, \alpha}) + J_{\text{K}} \sum_{i} \vec{s}_i \cdot \vec{S}_i + J_{\text{H}} \sum_{i} \vec{S}_i \cdot \vec{S}_{i+1}

(First term is nearest neighbor hopping of conduction electron, second one is the spin-exchange term between electron and local spin on the same site (Kondo coupling), and the last one is Heisenberg interaction between adjacent local spins. \alpha is \uparrow or \downarrow) When I make the Hamiltonian in MixedSiteSet, I know that the Kondo coupling term becomes the nearest neighbor interaction, and the hopping term and Heisenberg term become the next-nearest neighbor interaction.

My question is:

(1) when an MPS in MixedSiteSet above is time-evolved by Kondo-Heisenberg Hamiltonian, should I swap the adjacent MPS tensors (Electron site and Spin site) by contracting the two MPS tensors into one and then by using SVD because the hopping terms and the Heisenberg terms are not nearest neighbor interactions. If so, (how) can I do this in ITensor library?

I couldn’t find the solution for the situation where the Hamiltonian has long range term and at the same time where the system consists of non-identical degree of freedom.

(2) if I use ITensor in Julia version, can I solve my problem just by using apply function even when different kinds of degree of freedom exist?

(3) on the other hand, for the ground state by DMRG algorithm, I want to calculate (the degeneracy structure of) the entanglement spectra when dividing the whole system into two parts: (A) some contiguous part of local spin systems and (B) others. So, for this purpose
, I changed the SiteSet.h by adding MyOwnMixedSiteSet class like:

MyOwnMixedSiteSet(int N, 
                 Args const& args = Args::global())
        auto sites = SiteStore(N);
        for(int j = 1; j <= N/2; ++j) sites.set(j,ASiteType({args,"SiteNumber=",j}));
        for(int j = N/2+1; j <= N; ++j) sites.set(j,BSiteType({args,"SiteNumber=",j}));

so that electrons live in the first half of the system (1 \leq i \leq N/2) and spins do in the latter half (N/2<i \leq N) and I can naturally get the desired Schmidt eigenvalue on e.g. i=3N/4. However, when I use this SiteSet, the Kondo coupling term is very long (N/2) interaction and the convergence is not so good (truncation error is \sim 10^{-5}) even for large bond dimension. In general, how big can I the enlarge the system when the long interaction exists? (I want to see the degeneracy structure of entanglement spectra, so I want the system size to be as big as possible.) Can I calculate this kind of entanglement spectra by using MPS of the original MixedSiteSet and by changing the order of MPS tensors in the way I stated in (1) ?

I’m sorry if the similar question has already been asked. Please let me know if my explanation is hard to understand.

Thank you very much in advance.

Best regards,

Riku Masui

1 Like

Hi Riku,
These are good questions and sorry for the slow response.

Related to your question (2), I would recommend the Julia for TEBD with mixed site sets because implementing them in C++ requires doing your own custom swap gates which can be hard in general. In the Julia version, yes the apply function will just do this correctly for you.

For your question about dividing the ground state, it could be very hard to do this using MPS techniques. (It is not just an issue about ITensor, but about whether an efficient way exists to do it using MPS tensor networks.) Changing the ordering of the sites could work to a limited extent, but doing it across the whole system would likely result in very large entanglement and bond dimension and could be hard to converge also.

Maybe the best way to do what you want would be to try to make your region “A” to be kind of small (say some collection of spin sites in the middle of the system) and then explicitly make the reduced density matrix for these sites by writing the tensor network for the square of the wavefunction (looks like two MPS “back to back”) then trace all of the region “B” sites. I could upload a diagram to show what I mean if you have a question about it.