0 votes
asked by (370 points)

Hi there,

I wanna do tebd for Holstein model. In this case, electrons are coupled by next-nearest hopping. I know that for identical sites (all electrons or all bosons), we can apply SwapGate, but what should I do for non-identical sites (here it's fermion-boson mixture)?

1 Answer

0 votes
answered by (70.1k points)

Hi, good question. For this case (different site types), you can also use swap gates to time evolve with further-neighbor interactions. The swap gate would be defined in a straightforward / standard way, similar to a "crossed" pair of identity operators (diagrammatically it looks like two lines crossing over each other).

The main limitation of our existing system, however, is that the part of the code in the BondGate class that makes swap gates for you currently assumes both sites have the same dimension.

So until we extend our system to handle this case, I'd recommend one of these courses of action (I think #2 actually would be best!):

1) extend the code in itensor/mps/bondgate.h in the makeSwapGate function for your needs, i.e. to make a swap gate which is defined appropriately for two different dimension sites

2) rather than using swap gates at all, use a different trick, which eventually I want to make the standard approach in ITensor. This other trick is, whenever reaching a step which involves a swap "gate", to not actually use a gate at all, but just merge (contract) the two neighboring MPS tensors whose site indices are to be swapped, then SVD the merged tensor back apart so that afterward the site indices are in the reverse order. This skips the extra cost of applying a gate to the MPS and automatically works for any dimension of sites. To implement this idea #2, you'd have to modify or make your own version of the code in itensor/mps/tevol.h for the gateTEvol function, which is actually a rather simple algorithm.

Best regards,

commented by (70.1k points)
Of course, please let me know if you have questions about the above information and different approaches.
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.