excited states for DMRG in ITensorNetworks

Hi,

I would like to compute excited states of a given tree Hamiltonian. If I’m not mistaken, there is no option to add ‘penalty states’ in ITensorNetworks.dmrg as there is in the ITensorMPS version? Is there a plan for adding such a functionality in the future? For now, the only way I see would be to create an MPO for w\ket{\psi_0}\!\!\bra{\psi_0} from the ground state \ket{\psi_0} manually, then add it to the tree MPO, and perform DMRG on this modified Hamiltonian. Since the bond dimension of this projector quite large, this is quite computationally intensive. Would you know of any more efficient way at the current time?

Thank you very much for ITensor and all related packages!
Best,
Émile

Hi Emile,
No we don’t have that feature programmed for ITensorNetworks at this time. Given the other work we need to prioritize, I don’t think we’re likely to add that soon, unfortunately. It’s definitely a feature we want to have in the future version of that library.

Miles

For more context, ITensorNetworks.jl is really more of an internal research code that we made available in case the current state is useful for external users and to give a preview of what the future of ITensor might look like (going beyond MPS to general tree tensor networks and loopy networks). We’re working on a rewrite of the entire ITensor ecosystem (see ITensorBase.jl, NamedDimsArrays.jl, etc.), and we’re using that as an opportunity to rewrite ITensorNetworks.jl given the lessons we learned from that in a new library ITensorNetworksNext.jl which is based on ITensorBase.jl and that new stack of code. The basic design is essentially the same but algorithms like BP and DMRG/TDVP are built on a more systematic algorithm system that makes it easier to write new tensor network contraction algorithms and DMRG-like algorithms. The way we supported excited state DMRG in ITensorMPS.jl worked well for external users but wasn’t the best internal design (not easy to modify and extend, say for running on disk or parallelizing, not easy to add support for other excited state methods, etc.), and we have plans to improve that in ITensorNetworksNext.jl but it will take some time for that to be ready for external users.