+1 vote
asked by (140 points)
edited by

essentially I am trying to measure the speed of sound in my system and for that I want to project an excited state onto a lattice momentum eigenstate. (In the Julia Version of ITensor)
So I am looking at a spin-1/2 system that has translational invariance and N sites and would like to project certain states represented by an MPS with open boundary conditions onto states of definite lattice momentum via an projector of the form

@@P_l= \sum_k exp(2\piikl/N)T^k@@

where @@T^k@@ is a translator that acts as

@@T^k |s_1,s_2,...,s_N> = |s_{N-k+1},s_{N-k+2},...,s_{N-k}>@@

, so translating the spin configuration by k sites.
I saw the function movesites but my impression from the documentation was that it just takes the tensor from one site and somehow puts it onto the new site, so the tensor that was on the new site gets lost. If I am mistaken please correct me.
I thought that probably I can just multiply the sitetensors with delta tensors to change the index to change the siteindex to the translated one but then if I want to compute expectation values I will need to make a rather complicated multiplication. Therefore I wanted to know whether you know of a workaround to implement such a procedure for open boundary MPS, where I really get a MPS back that can be easily used afterwards? Or a nice other way to measure the speed of sound in the system?

commented by (70.1k points)
Just to understand some more, what would you like to happen to the last site if say you are translating all of the sites to the right by one? Would the last site become the new first site?

Also do you need to obtain the state P_l |psi> (the projected MPS) as another MPS? Or are you able to write the quantitie(s) you want to compute as something like <psi|P_l O P_l|psi> or as <eta|P_l|psi> where |psi> is your original ground state and <eta| is some other state or perhaps |psi> again? In other words, can you leave P_l as an operator and not have to fully act it on your state? (As is done in certain parts of this paper: https://arxiv.org/pdf/2102.10982.pdf)

There may be different things that are better and worse to do in terms of what bond dimensions will result. It's kind of a frontier / research topic  so the best approach may not be known yet.
commented by (140 points)
thanks for your answer. Yes the last site should become the first site.
So what I'd like to do is having taking some state |psi> and in the end compute:
<psi|P_k H P_k |psi>
where H is the Hamiltonian, so I don't need to act on the state directly, I can also use a "transformed" hamiltonian.
I will look at the paper, thanks for it.
commented by (70.1k points)
Yes, I think this is a technical enough and complicated enough task that it will be quite important to consider all your options. Summing MPS may technically work but could result in very large bond dimensions and/or not be the most cost-effective way. So the idea of acting P_k onto H (on paper ideally, so you could re-make each transformed H anew using OpSum/AutoMPO, say) sounds like it could be a good idea. And there may be other ways to go.

It definitely does seem like a case that calls for evaluating each (scalar) term in your sum individually at the very last, rather than by acting a sum over Pk's onto an MPS.

Hope that helps!

commented by (140 points)
Thanks for your suggestions,
 I also think that I'll generate the scalar terms each in some way and sum them up.
Projection of the operator might work, I'll think about it. Thanks a lot!

Please log in or register to answer this 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.