Hello there,
I did post a related question to this one trying to solve a subsidiary problem. Here I would like to present on what I am failing to implement i.e. to use ITensor properly. I suspect this to be a rather generic usecase, as time dependent correlators should not be rare to be found.
What I am trying to do is to calculate the single particles Green’s function via this method:
Here \ket{\phi_i(t)} := e^{-iHt}c_i^\dag\ket{0}. I tried to implement this by finding the ground state via DMRG, act with "Cdagup"-Operators on all sites and evolve a copy in time and take the inner product. Below a Code example is provided by truncating the unecessary parts:
using ITensors, ITensorMPS
#some hamiltonias like Hubbard or else
include("MyMPOOperators")
#sites
N = 8
#tried with both: wiht/without conserve_qns!
sites = siteinds("Electron",N; conserve_qns=true)
#get ground state
H = my_mpo_hamiltonian(params...)
E_0, psi0 = dmrg(H,psi0, --proper cutoff--)
#produce c_i^\dag stats
phi = [apply(sites, "Cdagup", i) for i in 1:N]
#evolve middle index in time
phit = copy(phi[cld(N,2)])
green = Array{ComplexF64}(undef, N,100)
for n in 1:100 #some time domain
phit = tdvp(H, -1im * .1,
phit,
nsite=2,
maxdim = 300,#some dimensions tried 30-1000 for small site numbers
cutoff = 1.0e-16,
)
#calc green
for i in 1:N
green[i,n] = inner(phi[i], phit)
end
end
now what went wrong:
-
Jordan Wigner (
JW)handling?:
Plotting results from that kind of implementation results in every other site having zero amplitude for all time. Thats how I learned that ITensor may not handleJWproperly either when usingapply, orinner. -
Handling them manually by attaching
"F"for 1 up tosite-1beforehand of"Cdagup"results in an checkerboard like overlap:Where we see here \braket{0|c_i c_j^\dag|0} calculated using the
applymethod. Which looks a bit weird to me. These non-local amplitudes appear then as ghost particles gaining in amplitude during time evolution.
I did these tests with/without using conserve_qns, which I was told to fix the problems I have.
Anyhow, I would appreachiate, If someone could help me to correctly implement the time dependent correlator. I suspect that neither apply nor inner does any assumptions about the statistics/particles, which the MPSs are supposed to mimic. I am also failing on determining which methods from ITensor handle them correctly (beside MPO of course, which cannot be used due to odd parity operators -"Cdagup" cannot be initialized using MPO).
I would apprechiate If someone could help me to correctly calculate Green’s functions as described in the beginning. If there is a better option for that be my guest ![]()
