Errors in TEBD on a Mixed-Site Model

Dear all,

I am performing a 1D TEBD calculation for a mixed-site model. My model is the lattice Schwinger model, which includes fermions on odd lattice sites and spin-1/2 particles on even lattice sites. The model involves a three-body interaction of type \sum_jc_j^\dagger s^+_{j+1}c_{j+2} + \text{h.c.} I have enforced fermion number conservation using the method mentioned in [about MixedSiteSet for electron and spin] and adopting the open boundary condition.

I have successfully obtained the ground state using DMRG, but I encounter errors when performing dynamics evolution using TEBD. My TEBD evolution is based on op() and apply(). Specifically, when I construct operator

hj = op("Cdag",sites[1]) * op("S+",sites[2]) * op("C",sites[3]) + op("Cdag",sites[3]) * op("S-",sites[2]) * op("C",sites[1]); #without error

U = exp(-im*dt/2*hj);  #without error

apply(U,psi0;cutoff) #error occurs

, the error “ERROR: MethodError: no method matching isless(::Vector{Float64}, ::Float64)” occurs.

I have also tried

hj = op("Cdag",sites[1]) * op("S+",sites[2]) * op("C",sites[3]); #without error

apply(hj,psi0;cutoff)  #error occurs

, but it yields the same error.

However, the program runs smoothly when I keep only one of the three op(), e.g.,

hj = op("Cdag",sites[1]);
apply(hj,psi0;cutoff)

hj = op("S+",sites[2]);
apply(hj,psi0;cutoff)

These work well. I would like to understand the cause of this issue and how I can resolve it.

Best,
Lee

Hi Lee,
I think I might have found the issue. Is the variable cutoff defined anywhere in your code? When I tried your code, it ran for a step or two but then crashed when the variable cutoff turned out to be a function that is exported by ITensors itself. When I actually put a line like

cutoff = 1E-8

in the code above yours, then everything worked ok.

Best regards,
Miles