Dear ITensor team,
I have questions about the implementation of above Hamiltonian. This is an anyonic fermion Hamiltonian. I have few questions regarding this.
1.
function ITensors.op(::OpName"exp_nupP", ::SiteType"Electron", s::Index) # exp(i\*θ\*nup)
nup_opP = op("Nup", s)
return exp(1im \* theta \* nup_opP)
end
function ITensors.op(::OpName"Cdagup_Ndn", ::SiteType"Electron", s::Index) # exp(i\*θ\*nup)
return op("Cdagup", s) \* op("Ndn", s)
end
function ITensors.op(::OpName"exp_nupM", ::SiteType"Electron", s::Index) # exp(-i\*θ\*nup)
nup_opM = op("Nup", s)
return exp(-1im \* theta \* nup_opM)
end
function ITensors.op(::OpName"exp_ndnP", ::SiteType"Electron", s::Index) # exp(i\*θ\*ndn)
ndn_opP = op("Ndn",s)
return exp(1im \* theta \* ndn_opP)
end
function ITensors.op(::OpName"exp_ndnM", ::SiteType"Electron", s::Index) # exp(-i\*θ\*ndn)
ndn_opM = op("Ndn",s)
return exp(-1im \* theta \* ndn_opM)
end
os = OpSum()
for j in 1:(N-1)
\# Hopping !!
os -= J,"Cdagup",j,"exp_ndnP",j,"Cup",j+1 #
os -= J,"Cdagup",j+1,"exp_ndnM",j,"Cup",j # complex conjugate
os -= J,"Cdagdn",j,"exp_nupP",j,"Cdn",j+1 #
os -= J,"Cdagdn",j+1,"exp_nupM",j,"Cdn",j
end
Is this way of writing the Hamiltonian is correct or should I first make a composite operator of "Cdagup’’ and ‘‘exp_ndnP’’ and then put it in the os.
- I am trying to find out the correlation matrix \langle C_{l,\uparrow}^{\dagger} C_{j,\downarrow} \rangle. The energy is converged nicely within few sweeps but the correlation matrix is not giving the correct result specially the imaginary part. Even if I increase the number of sweeps a lot it does not change much. The total electron density is okay but the upspin and downspin electron density shows wiggles even for 500 sweeps. I am working with 2 particles in 40 sites.
Any help or suggestion appreciated.
Thank you in advance.!!