Hey everyone,
I am performing Heisenberg evolution of an MPO. I have performed several weeks to make sure the code is giving the correct results based off benchmarks to other works, and now I want to make my code more efficient before adding multi-threading. I figured if I could use the conserved_qns = true feature the MPO would more sparse and speed up computation. It seems the issue when my gates(TEBD) apply to the MPO I get an error.
function initial(N::Int, mu::Float64, index)
rho = MPO(N)
for x=1:Int(0.5*N)
rho[x] = 0.5*(op("Id", index[x]) + 2*mu*op("Sz",index[x])
end
for x=Int(0.5*N+1):N
rho[x] = 0.5*(op("Id", index[x]) - 2*mu*op("Sz",index[x])
end
return rho
end
The gate function is the same the one found in the examples on the GitHub page. All functions work properly when the conserve_qns=true, the issue occurs when using "apply" to act on the MPO.
apply(gates, rho; cutoff=1e-8, maxdim=64, apply_dag=true)
When this is done I get the error, "In 'svd' the left or right indices are empty.." I am not sure why this occurs when the siteinds are set to conserve but any help is appreciated.
Chris