+1 vote
asked by (360 points)

Hello everyone!

I have been trying to use ITensor to calculate the properties of a Hubbard Hamiltonian with 3 internal components.

I think the questions is related in a way to this one:


although I cannot see how to construct such a model by simply extending the Hubbard code with more sites in an unit cell.

How can we construct the set of operators required to approach this problem? Do we have examples of that?



1 Answer

+2 votes
answered by (70.1k points)

Hi Rafael,
I think your idea of using more than one site in a unit cell is the right thing to do for creating multi-component / multi-band models of interacting electrons. Basically let's say you have 3 "flavors" or "labels" of electrons. Then sites 1,4,7,10 etc. are all considered (by you) to be flavor 1; sites 2,5,8, etc. flavor 2; and 3,6,9, etc. flavor 3.

You then just define the Hamiltonian parameters as from on paper, so like if t1 is the hopping between sites which are both flavor 1, you just have t1 go between every third site, being sites 1,4,7, (i.e. the flavor 1 sites). That is it's a 3rd neighbor hopping. Similar for a t2.

In contrast, a local term like a Hunds interaction would happen inside the unit cell, so like between just sites 2 and 3, then sites 5 and 6, etc. repeating that way.

If that's still not too clear, perhaps you could provide the specific Hamiltonian or a link to it and we could discuss more?


commented by (120 points)
Hi, I have closely related followup questions.  
 Is there any example in Julia for implementing multi-flavor Hubbard model?
commented by (70.1k points)
Hi Asad, we don't have any example of that that I know of. But here is how to do it: you just need to assign different sites to the flavors. So like if there are two flavors, then you could use odd numbered sites for flavor 1 and even for flavor 2. Then a first-neighbor hopping between sites of flavor 1 becomes a second-neighbor hopping under this mapping.

Does that give you what you are looking for?

Best regards,
commented by (120 points)
Thank you for your reply. I kind of did something like your solution. I label one flavor for site index 1 to N and another flavor for site index N+1 to 2N, and accordingly constructed different terms. I have one confusion. Say I have N sites, do I need different site indices objects for different flavors like
s1 = siteinds("S=1/2",N)
s2= siteinds("S=1/2",N)

or, is it fine if I just define one site indices object like this
s = siteinds("S=1/2",2*N)
commented by (70.1k points)
Hi Asad, would you be ok with asking this as a new question? Also it would be helpful if you posted which Hamiltonian you are wanting to simulate. We could discuss more on a new thread, for example it will be quite important not to organize the sites from 1..N then N+1,...2N but in a different pattern most likely.
commented by (120 points)
Hi Miles, thanks, I will post it as a new question.
Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.