Hi,
I want to build an MPO using a custom defined ITensor operator. The MPO can be constructed using
MPO(::sites, ::list of op) (reference to definition : https://itensor.github.io/ITensors.jl/dev/MPSandMPO.html).
However, the caveat is that the list of operators are two-body. For example, for spin half systems, this two body operator could be Z \otimes Z or the one shown below.
using ITensors
using LinearAlgebra
sites = siteinds("Qubit", 6)
function ITensors.op(::OpName"TwoSiteOp", ::SiteType"Qubit"; θ1, θ2)
M = cos(θ1)*Diagonal(ones(4)) - im*sin(θ2)*[1 0 0 0; 0 -1 0 0; 0 0 -1 0; 0 0 0 1]
return M
end
Now, the question is how can one construct an MPO for the defined âsiteindsâ, sites?
The op list will be made of various operators with different \theta 1 and \theta 2.
Any suggestion for this will be very helpful.