quimb icon indicating copy to clipboard operation
quimb copied to clipboard

Excited states with DMRG and TEBD with non-local hamiltonian

Open sajjan02purdue opened this issue 8 months ago • 2 comments

What is your issue?

Hi, I am a new user to quimb. Amazing package ! I have a couple of questions which I wanted answered if possible . Here they are :

  1. I have a hamiltonian in 1D (say H) which has non-local terms like $Sx_i Sz_j Sy_k Sx_l$ (this a 4-local one). I also have 3-local terms like ($Sx_i Sz_j Sx_l$) added to the same and usual two-local ones ($Sz_i Sz_j$) where $S_{alpha}$ are spin operators for qutrits (S=1). Right now I am building each term by storing the individual tensors in a list like $[I,I,I...Sx_i, I, I, ...Sz_j, I, I, I ....Sy_k, I, I, I,....Sx_l,....I,I]$ where each individual tensor in the list is reshaped to (1,1,3,3). The entire list is then fed to MatrixProductOperator( ) to convert to an MPO and all the MPOs of different localities are added and compressed to get the final H. While this method is good, I am also aware of the FSA technique where W tensors are constructed showing transitions from states. I know how to do them for each term and proceed as above. However if I have to construct W tensors for different terms of different locality together, I am not sure how to go about doing that in quimb . Any pointers will help

  2. If I use the hamiltonian in 1) and do DMRG, I can easily get the ground state energy and MPS. However I am also looking for excited states. I saw quimb has DMRG-X , but its functionality involves finding an excited state which has high overlap with a given MPS. Thats not what I want, what I am looking for is once the ground state is estimated, what are the next higher excited states (say p of them) above in energy ? One easy way would be to use the ground state $|\psi \rangle$ MPS and make an effective Hamiltonian $H_{eff} = H + \lambda |\psi\rangle \langle \psi|$ but making an outer product of an MPS is also going to likely blow-up storage. So is there a simpler thing which I can do get access to excited states or simpler scalable ways of making outer products of MPS as above would also help ? I have seen some DMRG packages allows weights to be supplied too, is such a feature there ?

  3. Can the hamiltonian constructed in 1) be fed to a fourth order TEBD routine for time evolving a given MPS and computing dynamic correlators like $\langle Sx_i (t) Sx_j \rangle$ in the standard way or are there any specific adjustments that needs to be made for non-locality that I am not aware of ?

Any help with the above questions will be greatly appreciated. Thanks a lot in advance .

sajjan02purdue avatar May 01 '25 17:05 sajjan02purdue

Hi @sajjan02purdue.

  1. For general multi term MPOs you can look at quimb.experimental.operatorbuilder. Unfortunately it currently only supports $d=2$ i.e. spin-1/2 or qubits, but it would be very easy to modify the mpo building method to support higher $d$. It uses a greedy kind of finite state machine which is not totally optimal for very complicated hamiltonians, e.g. qu chemistry, but pretty decent.

  2. I have not implemented excited state DMRG myself, though I recall some people have some quimb implementations of this. It's not a high priority to add myself, simply because DMRG and 1D algorithms have lots of options elsewhere. Similarly for weights. However, I would very gladly see such things contributed!

  3. For TEBD you typically don't construct the MPO, since you apply the terms in there trotterization individually, you would just need to find a trotterization of the relevant terms, exponential your gates, and apply each to your state using probably this core function: mps.gate_nonlocal. A better option might be to find a TDVP implementation, which does take the MPO, and can be more suited to non-nearest-neighbor hamiltonians.

jcmgray avatar May 02 '25 23:05 jcmgray

Ok, thank you so much for the reply @jcmgray . These pointers will be quite useful

sajjan02purdue avatar May 03 '25 04:05 sajjan02purdue