# Sz_i - Sz_j Correlator at Different Times

+1 vote

I am working with a Heisenberg spin-1 AF chain, trying to get the out-of-time correlators for z-components of the spins at different sites so that I can construct the spectral function. More explicitly, I am trying to calculate objects of the form

$$e^{i E_0 t} <0|S^z_i e^{-i H t} S^z_j |0>$$

In the correlators example http://itensor.org/docs.cgi?page=tutorials/correlations the MPS are turned into ITensor objects so that indices can be contracted. However, we can only time evolve MPS (I am using FitApplyMPO). I need to apply Sz_j before time evolving.. How can I accomplish this? I keep on getting errors.

Thanks so much for your help!

+1 vote

Hi jamarks,
So you have the right idea, namely that you should apply @@S^z_j@@ to your MPS, then time evolve it, then measure @@S^z_i@@ after time evolving (and by measure, I mean compute @@S^z_i@@ "sandwiched" between your original state "0" on one side and your time-evolved state on the other side).

To apply @@S^z_j@@ to an MPS, all you need to do is this:

psi.Aref(j) *= sites.op("Sz",j);
psi.Aref(j).noprime(Site);


The first line gets the @@S^z_j@@ operator from the site set "sites" and contracts it with the jth "A" tensor or MPS tensor of the MPS psi.

The second line removes the prime on the site index that results from the first line, since site operators have one unprimed index and one primed index by our library's convention.

Hope that helps!

Miles

commented by (230 points)
Thanks so much! That was exactly what I needed