Hi,

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*\pi*i*k*l/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?

Best,

Lev