First, thank you for your work on this very nice Julia package.
I have 2 MPOs, H1 and H2, which are translationally invariant, of length 6, and bond dimension D=3 everywhere.
with:
add(H1,H2, cutoff = 0)
I would naively expect a new MPO with bond dimension D’=6 everywhere, but instead the new bond dimensions are [5,6,5,4,2]. Is this due to how ITensor deal with the sum internally or am I missing something?
it should do what you expect. I am pretty sure the default algorithm will use the SVD to compress the MPO, but if you set cutoff = 0 in principle this compression should be lossless, but can still wind up producing an MPO of smaller bond dimension.