ED with Itensor

Hi Kristin, The short answer is yes. Here is a code sample:

using ITensors
let
    N=6
    s=siteinds("S=1/2",N;conserve_qns=true)
    os = OpSum()
    for j in 1:(N - 1)
        os += "Sz", j, "Sz", j + 1
        os += 0.5, "S+", j, "S-", j + 1
        os += 0.5, "S-", j, "S+", j + 1
    end
    cb=combiner(dag(s)...)
    cbp=combiner(s'...)
    H = prod(MPO(os, s))*cb*cbp
    E,V=eigen(H,combinedind(cb),combinedind(cbp))
    @show sort(array(real(diag(E))))
end

Efficiency can be improved with ishermitian=true in the eigen call.
I hope this helps.
JR
2 Likes