Excited states of effective Hamiltonian

How do I use this algorithm? What does that parameter do?
Post Reply
aeberharter
Posts: 3
Joined: 04 Nov 2019, 13:36

Excited states of effective Hamiltonian

Post by aeberharter »

I have an already converged infinite system (iMPS). Now I want to obtain the first 5 excited energies (states do not really matter) of the effective Hamiltonian of the converged system.

What I did so far is:

Code: Select all

def lanczos_arpack_spectrum(H, psi, k, lanczos_params={}):
    """
    <Removed docs to increase readability>
    """
    H_flat, psi_flat = FlatHermitianOperator.from_guess_with_pipe(H.matvec, psi, dtype=H.dtype)
    tol = get_parameter(lanczos_params, 'P_tol', 1.e-14, "Lanczos")
    N_min = get_parameter(lanczos_params, 'N_min', None, "Lanczos")
    Es = speigsh(H_flat, k=k, which='SA', v0=psi_flat, tol=tol, ncv=N_min, return_eigenvectors=False)
    return Es
 
This works and gives me k energies. However it is very slow for large bond dimensions. The class LanczosGroundState supports orthogonal_to which should enable me to successively calculate the excited states. I have tried this code:

Code: Select all

psi = engine.prepare_update() # engine is of type TwoSiteEngine
ortho = []
E0 = []
for i in range(k):
   (E, psi1, _) = lanczos(engine.eff_H, psi, dmrg_params['lanczos_params'], orthogonal_to = [x.copy() for x in ortho])
   E0.append(E)
   ortho.append(psi1.copy())
The ground state energy coincides with the one of the previous method but the excited energies are off. Furthermore the energies by this method are not sorted even though they should be sorted if the ground state is correctly found in each step.

Edit: Apparently my initial state is very close to the ground state and thus an extremely bad guess for the excited states. I should probably use a random initial states for the higher eigenstates.

Thank you for your help!
User avatar
Johannes
Site Admin
Posts: 413
Joined: 21 Jul 2018, 12:52
Location: TU Munich

Re: Excited states of effective Hamiltonian

Post by Johannes »

Indeed, the guess should be very close to the actual ground state if DMRG converged well; this will lead to problems for Lanczos.
Did choosing a different initial state help?
You can also try to e.g. apply Sx or Sz operators on the initial guess of the ground state, if you have some idea of what the excited states should look like.
Post Reply