+1 vote
asked by (130 points)

Is it possible to use the ITensor for simulating the dynamics of a Bose-Hubbard model?

The information on "Time Evolving an MPS with an MPO" work pretty well for spin models, but it still not clear to me how to initialise a 1D chain with real bosons and how to set the operators in the autoMPO.

1 Answer

+1 vote
answered by (70.1k points)

Hi, yes ITensor would be ideal for studying dynamics of Bose-Hubbard.

First of all, to set up a Hilbert space of bosons, you will need to create a new type of site set object. A good example of this is the file itensor/mps/sites/hubbard.h, which is where the Hubbard site set is defined. If you copy the code in there and make a new class, say Boson, then the main change you will need is to change the number of sectors in the IQIndex site definition from the 4 sectors used in the Hubbard model to the number of particle sectors you want for Bose-Hubbard model (you will have to truncate the number at some maximum value, whatever you choose). Replace the spinful-fermion QN (quantum numbers) with ones appropriate for bosons, as described on this page: http://itensor.org/docs.cgi?page=classes/qn

Next you will need to define your operators, using code like how they are defined for the Hubbard site set (or look at the other site sets for further examples).

Finally, to do the actual time evolution, you can do two things:
(1) you can use Trotter gates if the model is next-neighbor along the MPS path, or use a combination of Trotter and swap gates if the model is not next-neighbor along the path (e.g. a 2D model simulated by an MPS). If you are not familiar with this approach, there are details in this paper: https://arxiv.org/abs/1002.1305

(2) Or you can use the MPO approach discussed in the ITensor page you linked. To use AutoMPO to make the exp(-itH) operator, just write your Hamiltonian as in the AutoMPO examples on that page and on the front page, but replace the spin operators in those examples with the names of the operators you defined for your custom site set. The names can be anything you want since they are just strings. The AutoMPO system relies on the site set you define to convert the operator names into actual tensors.

Hope that helps you get started. If you decide to proceed and get stuck somewhere, please just reply and I can help or you can email me.

  • Miles
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.