I stored ITensor wavefunctions using ITensor Version 1.2 (C++11) and would like to perform some measurements on them. I no longer have access to the computer on which I did the calculations, but by a lucky miracle I do have the older version of ITensor saved with the wavefunctions along with the code I used to generate them.
Is it possible to either
a: Use github to install the old Version 1.2 on my new computer (and save some time)
b: Import the old wavefunctions into ITensor V3 (C++17) to make use of the new features?
If b is possible then how do I translate the old wavefunctions into the new format (if this is necessary)?
Hi Jon, good question but it won’t be easy to recover them without some custom coding on your part, most likely.
The save-to-disk feature up until recently, when HDF5 support was finally added, was never designed for long-term storage. It was just for short-term saving, like to save hard-drive space or restart runs.
One question back to you is, how hard would it be to just recalculate those wavefunctions?
About trying to recover those files, it’s always possible using git to install and compile older versions of ITensor, so you could definitely reinstall version 1.2 on your machine and then in principle recover those files. But when you read in the tensors they would be version 1.2 ITensors which have a different internal storage format (especially if they are QN conserving tensors). Moreover there isn’t code available in version 1.2 to save the files to a more portable format like HDF5.
But you could still read the tensors in using version 1.2 and then access the raw tensor data and use the plain HDF5 library, say, to write that data to a more portable file.
Another option would be to take a look at the source code for how ITensors are written to disk in version 1.2 and then write a new code that converts that format to a newer format. But this would ultimately be rather tricky because certain common types like Index may be slightly different between the two versions.
Hope that helps -