Number of Schmidt eigenvalues obtainable in ITensor


I used the following code to calculate the Schmidt eigenvalues at a particular bond b=10 (the center of a 1d lattice system), and I found that the number of Schmidt eigenvalues are capped at 1024, which somehow happens to be 2^{10}. This is the case for the three maximum bond dimensions I used: 6000, 7000 and 8000. This is strange because the local Hilbert space dimension in my case is way bigger than 2. So I’m wondering if ITensor automatically keep the largest 1024 values of the Schmidt eigenvalues.

b = 10
orthogonalize!(psi, b)
_,S = svd(psi[b], (linkind(psi, b-1), siteind(psi,b)))
schmidt = zeros(1,dim(S,1))
for n = 1:dim(S, 1)
     schmidt[n] = S[n,n]

Thank you,

Yes so if your physical dimension was 2 then I believe you know that 2^10 is the maximum dimension possible for bond 10. But you mentioned that your physical dimension is greater than 2.

When you say you used maximum dimensions of 6000 etc. do you mean for the DMRG algorithm or which algorithm to compute your MPS?

Most importantly, what bond dimensions does your MPS actually have? There could be various reasons why they might not have reached the maximum possible value.

Hi Miles,

Thanks for suggesting checking the bond dimension of the MPS. It turns out that I made a silly mistake by setting the center bond to be 10. Even though the number of unit cells in my case is 20, the number of bonds are actually more than that due to the multiple sites within a unit cell.

Once corrected, the number of Schmidt values matches the maximum bond dimension I set.

Thanks again,

Glad my reply was helpful and that you found the issue!