Hi,
I’m trying to figure out a seemingly very simple problem.
At this moment, I’m simply testing to obtain some lowest eigenstates of the following ED hamiltonian in superblocks (E>0):
\begin{pmatrix}
H_{bulk}+E\cdot I & 0 \\
0 & H_{bulk}
\end{pmatrix}
One can easily expect to obtain the bulk spectrum, plus a ‘copy’ of the same energies but shifted upwards by E.
The code for the bulk system has been tested and worked as expected.
Currently in my implementation, I defined my sites as
sites = Vector{Index}(undef, L + 1)
for i= 1 : L + 1
sites[i] = siteind("Fermion"; addtags="n=$i", conserve_qns =false)
end
Essentially, the ‘bulk’ lives on sites 2 to L+1, and I have some energy penalty terms to fix particle numbers on sites 2 to L+1.
I thought because I have QN conservation explicitly turned off, site 1 could freely hop on and off, so it would either give me the bulk spectrum when site 1 is 0, or +E when site 1 is 1, as below
ampo = OpSum()
ampo += E, "N", 1
#additional code for the bulk hamiltonian
But it turns out as I varied E, the spectrum of the system stayed exactly the same, which means the code does not see any change in site 1. (the gap between, say lowest 20 excited states, are much larger than E in general, so at least I should be able to see some shifted states)
Of course I can do this by manually adding E to my bulk spectrum, but I’m curious if there’s a way I can rigorously implement it. Sorry if this is a convoluted way to overcomplicate a problem.