How to calculate dynamical spin structure factor S(k,w) of a spin chain?

0 votes
asked Oct 8 by soshi (120 points)

I am trying to calculate a dynamical spin structure factor S(k, w) of a spin chain (e.g., 1d Heisenberg Model, in order to check if I can see the spin wave dispersion).

An implementation that I am thinking of is;

(Step 1) get the groundstate |psi_0> by DMRG for a given Hamiltonian (I can already do this easily)

(Step 2) calculate the time-dependent correlation function,
where the superscript a={x, y, z} is a spin component, and the subscript r is a site index, and t is time.

Simplifying the above expression by using the interaction picture,
C^a(r, t)=<psi0| S^zr(0) exp(-i(H-E0)t) S^z0(0) |psi0> ,
where E
0 is the groundstate energy, which I already calculated in step(1)

(Step 3) then Fourier transforming,
C^a(r,t) ---> S^a(k, w)

I want to know an efficient way of doing Step 2. It would be great if you can provide a sample code (for me, looking at a sample working code is the best way to learn).
Also if you have any practical tips (e.g., how to choose the interval of time-evolutions to get the most accurate S(k,w) etc ), please make some comments as well.



(The most naive implementation I can think of for Step2 is;
for each r & t,
(Step2.1) define three MPOs,
A=S^zr(0), B=exp(-i(HE0) t), C=S^z0(0)
(Step2.2) calculate the total MPO by multiplying the three MPOs,
(Step2.3) calculate the overlap,
I am not sure if this implementation works, and even if it does, I believe it is computationally super inefficient. )

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.