+1 vote
asked by (130 points)


I want to consider a mixture of 2 bosonic type of sites (with different local dimensions, for example one site with hard core bosons and one site with soft core bosons with a certain cutoff) and perform a swap operation on the 2 sites. I am asking in the context of performing Trotter time evolution with swap gates and I would have to swap the soft core site through a hard core chain.

Can the Swap Gate implemented in 'bondgate.h' be used in this situation with non identical sites with different local dimensions? And can this still be used with IQTensors, if, for example, I want to conserve the total number of hard-core bosons?

Thank you very much!

1 Answer

0 votes
answered by (28.8k points)

Hi Catalin,
The short answer to your question is "no, the swap gate implemented in bondgate.h cannot be used to swap two sites of different dimension". But the longer answer is that it would be hard to make it work within the current design. This is because it uses a SiteSet object that is predicated on the assumption that the sites always have the same dimension throughout the algorithm. One could imagine a design that lifts this restriction perhaps (e.g. swapping the site definitions within the SiteSet itself when a swap gate) but I think that would be much too complicated.

So I think a better way for you to go is to write a special-case function to use in your code. You can use the code in itensor/mps/bondgate.h (the function "makeSwapGate") as a template to start from. Once you generalize the code, you can check that the swap gate returned by your function has the correct matrix elements / tensor components by using "PrintData" to print it out along with all its non-zero components.

Please write back with a comment below if you need help making this function.

Best regards,

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.