Wave function of real space parallel DMRG.

+1 vote

Hi,

I encounter some problems when I try to test the real space parallel DMRG. In calculation, I write the wave function psi to the hard disk by

writeToFile("path", psi);

When I load the wavefunction readFromFile("path", psi) and do it inner product inner(psi, psi), the error is:
From line 568, file indexset.cc
In findIndex: more than one Index found, consider using findInds instead.

What makes such an error?

commented by (64.6k points)
Thanks for the question. Often this kind of error has to do with how in ITensor, MPS are made by first making a collection of site indices ("site set") and then you form the MPS with these. Are you also saving the sites of your MPS to disk too and reading them back in? Or are you making a brand new set of sites?

But I do see that even inner(psi,psi) is failing which should work for any MPS psi whatever sites it has.

So can you please provide some more context like a minimal code sample that reproduces this issue?

Also have you tried printing out psi to look at the indices each of its tensors has? That could reveal what's going on: it might have a structure that's not a valid MPS.
commented by (64.6k points)
Oh I just saw that this is for the real-space parallel DMRG code. That code is really provided for research/example purposes only and doesn't come with guarantees like about the wavefunction being in a given global state after you read it from disk. Basically in more detail there are additional "V" tensors in between each group of MPS tensors that "glue" them together into a valid global MPS, and you might have not included these back into psi when you made it.

May I ask what you are using the real-space parallel DMRG for? You may not strictly need it for your application.
commented by (270 points)
Hi Miles,

Thanks for your answer. I think that considering the glue tensors V is the key point to fix this problem.

I am testing the parallel DMRG for the Hubbard model with Sz, electron number, and ky conserved.  Storing the wave function is very useful for the following considerations:

For challenging quasi-2D models, we usually do not know how many sweeps and states are large enough to make the result veritably converged in advance. So it is very convenient to use the stored wave function as an input when we increase the sweep numbers and bond dimensions, which avoids starting a calculation in the beginning. Therefore, that will save time and computational resources.

On the other hand,  the maximum running time is limited on some public clusters, which may be one or two weeks. In addition,  we need to shut down the personal cluster during power maintenance. Hence,  the program will be more flexible if we can resubmit it based on the stored wave function in the previous calculation.

Bests
Zongsheng Zhou