OTOC
Closed this issue · 1 comments
Dear Jose,
I am trying to use your algorithm to calculate otoc, mainly using instruction ”imaginary_exponential“. But I found that my computational efficiency is far lower than the efficiency of quench evolution. For example, if I want to calculate<G | A (t) BA (t) B | G>, then I need to calculate U (- t) AU (t) B | G>, which has a significantly higher algorithm complexity than calculating U (t) B | G>in my code. May I ask if there is room for improvement in speed?
This is my code:
ts = np.linspace(0.0,tot,tn)
wf = fc.get_gs()
wf=(fc.Nup[0]-fc.Ndn[0])*wf
wft= imaginary_exponential(h,wf,ts=ts)
wftt=[(fc.Nup[5]-fc.Ndn[5])wfti for wfti in wft]
wfttt=[imaginary_exponential(-h,wftt[i],ts=[toti/(tn-1)])[0] for i in range(tn)]
Thank you.
Dear apdfjapfjap,
thanks for the message. The efficiency of the time evolution can be slightly improved if you choose a bigger time step. Nonetheless, of course the time step should be small enough so that the results are converged. This is the parameter "dt" of the function you called, by default it is "dt=1e-3". You can perhaps try with "dt=1e-2", as this would require less time steps for the evolution (but it would be good to make a check that the results are converged for the time scale you are interested in).
Best regards,
Jose