Hi there!
I am trying to apply TEBD to electronic systems. I start with a two-site system
I use dmrg to get the ground state, then evolve it with gates created by
function genGate(tau,sites,N,ene,t)
gates = ITensor[]
for i in 1:(N-1)
s1 = sites[i]
s2 = sites[i+1]
hj =
-t * op("Cdagup", s1) * op("Cup", s2) +
-t * op("Cdagup", s2) * op("Cup", s1) +
-t * op("Cdagdn", s1) * op("Cdn", s2) +
-t * op("Cdagdn", s2) * op("Cdn", s1)
if i == 1
hj += ene * op("Ntot", s1) * op("I", s2)
end
Gj = exp(-im * tau / 2 * hj )
push!(gates, Gj)
end
return gates
end
The ground state is obtained with t=1,\epsilon=0.6. For time evolution, I use \tau=0.01.
- If the gates are created with t=2,\epsilon=0, \langle n_{1\uparrow}(t)\rangle from TEBD matches with my ED benchmark.
- If the gates are created with t=0,\epsilon=1.2, \langle n_{1\uparrow}(t)\rangle also matches.
- If the gates are created with t=1,\epsilon=1.2, the results don’t match. I would expect \langle n_{1\uparrow}(t)\rangle decreases in time since the onsite energy is higher, but the TEBD result of it increases with time.
Following the discussion in the forum https://itensor.discourse.group/t/proper-way-to-construct-fermion-gates/172, I think since I use OpSum()
and apply
methods, the Jordan-Wigner string issue should be handled automatically. Or should I do it by hand since I mixed fermionic operator c with bosonic operator n in the gates?
Again, many thanks for developing and maintaining such good package!
Best,
Zhen