I have a question but I think I kind of understands why, mostly want to confirm with you guys who know the inner working of the code
I was testing the following, say I defined some sites:
s = siteinds("Fermion", N, conserve_qns=true)
And two different initial states:
state = [ isodd(i) ? "Occ" : "Emp" for i in 1:N ]
m = randomMPS(s, state)
M = randomMPS(s, state, linkdims = 20)
Here 20 is just some arbitrary number but the point is M has larger bond dim than m
The Hamiltonian is only defined on a fraction of the sites, say only N/2 sites, no terms are acting on the other half of the sites.
When I ran the excited state search DMRG, both m and M yield the same and correct ground state energy.
However DMRG with m gave the correct ladder of energies (the correct energy spectrum itself is not degenerate), whereas the M performed much worse and kept giving either the same energy (degenerate) or simply incorrect answer (local minima?)
My guess is that the undefined sites were actually involved in the calculation, as there’s not an explicit mechanism to break the degeneracy (e.g. some bias potential), so the code finds degenerate energies by ‘shifting around’ the particles between the undefined sites, and the state with larger bond dimension can do that much more easily.
This is of course a very hand wavy explanation, so I’m interested in knowing what you guys think.