Entanglement Spectrum with momentum

To charactorize the topological property of a certain state, the entanglement in k-space are often calculated. But I haven’t found an detailed instruction about it.

How can we get entanglement spectrum seperated with momentum?
and can we get this spectrum in ITensor forum?

Thanks for any help.

A way to do what you are asking is to work in a basis of “sites” which are actually in “momentum space” in the y direction around a cylinder, describing a quasi-2D system.

For example, this ITensor example code uses a basis called “ElecK” which means electron sites in momentum space. (You can see on line 28 that the siteinds function takes an argument modulus_ky=Ny which is the lattice size used to determine the k-space momentum points for this basis.)

Then, when you compute the entanglement spectrum of such a system on a cylinder, you can retrive the momentum “quantum numbers” associated with each of the Schmidt values (singular values) when doing the SVD across the cut. That way you can label the entanglement spectrum with y-momentum.

Thanks for your fast reply.
I still can’t get the point of transforming the Halmiltonian.
How can I put momentum QN k into k-space site?
A simple example would be very helpful.
Is it easy to rewrite the model of a 4-site SpinHalf Heisenberg 1d chain in PBC?
We can have kx=0,0.50π,1.00π,1.50π. then how can we set site?
2 sites are ok,if it can save your time.

I partly solve the problem by measuring the expectation value of the physical quantity for the state with its singular value.


This question also confuses me. Have you solved the problem of how to calculate the momentum entanglement spectrum in ITensor?

I just measure the momentum of my decomposed state.
Fortunately, they have good momentum QN, not sum of energy degenerate states of different momentums.
This may not be the proper solution. I just use it with tiny endurable error.


I’m glad to hear about your progress. Your efforts have paid off. But this question seems a little confused to me. I sincerely hope that you can share a simple and minimal code as an example for me or other beginners have relevant questions?

Sincerely hope to get your reply! Any help from you is very important for beginners like me!!

assume the wave function wf
Ia[x] is the physical label of the subsystem.
then do the SVD to get entanglement:

    ITensor S, V;
    auto U = ITensor(Ia[0], Ia[1], Ia[2], Ia[3], Ia[4], Ia[5], Ia[6], Ia[7], Ia[8], Ia[9]);
    auto spectrum1 = svd(wf, U, S, V);

then measure the physical quantity (write in MPS) of the subsystem
X_rho = prime(dag(U)* MPS_X * U;

for example, Sz@i
rho_z[i] = prime(prime(dag(U), format("n=%d", i)),"Link") * op(sites, "Sz", i) * U;

I’m rewritting the momentum measure. My old way refers https://arxiv.org/pdf/hep-th/9810032.pdf

1 Like