Is some compression on sum of MPOs done automatically?

Greetings!

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?

Thank you

If you use

add(H1,H2; alg="directsum")

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.

https://itensor.github.io/ITensors.jl/stable/MPSandMPO.html#Base.:±Tuple{Vararg{AbstractMPS}}

1 Like

Thank you!

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.