The code was mainly written to perform some work that I needed for my own work. Consequently, the tools that I wrote roughly demonstrate the basic functionality of the whole library. Of course, this does not prevent anyone from writing more tools by combining the code in way that has not been done before.
Note that the implementation of reading/writing Fortran files only covers the common, informally standardized 32-bit cases. There are some vendor-specific extensions for 64 bit (for large record sizes), but these are not implemented.
- fileinspector: This tool prints some basic statistics of a Fortran output file. It shows you how many records there are, and how many bytes are in each record.
- recordreader: This tool prints out the content of a record in a Fortran file. As an example, recordreader outfile 5 i 3 d 1 prints the content of the fifth record in "outfile", which is interpreted as 3 integers followed by a double precision value.
- recordcopy: Writes out a range of records from an input file into some output file. Mainly used to piece together test input.
- rdgridpop: Simlar in scope to the MCTDH rdgpop program, but more flexible. It reads in the gridpop file, and prints the population of the primitive grid. In FBR or DVR, if requested only for specific degrees of freedom.
- naturalpop: Prints the natural populations for arbitrary nodes of the multilayer tree. Very useful for checking convergence, and much more convenient than piecing them together from the log file.
- gridconverter: Reads in a psi file, converts all FFT degrees of freedom to EXP degrees of freedom, and writes out the result. The background is that FFT and EXP grids are binary identical. In practice, FFT grids use FFT and are way faster to propagate, but lack a lot of functionality (for example, they do not work together with the wfproj analyze program).
- randomization: Implements the random thermal wave function method of Manthe et al. (for the article, see here)
- cropper: Removes parts of a multilayer tree and replaces it by a fake degree of freedom. The background is that not all tools are converted to the multilayer formalism. If you need one that is not converted, you could in theory use the ml2mctdh analyze tool; however, since you used multilayer in the first place, your tree is probably too large to be converted to non-multilayer form. Consequently, with this tool, you can crop sub-trees corresponding to uninteresting bath degrees of freedom, and then transform the remainder. The tool is a bit tricky to use; if you want to use it, be sure to understand the description in the source code.
- tracedistance: Basically takes two calculations and a degree of freedom, calculates the reduced density matrices for the given degree of freedom, and calculates the trace distance between them. The background is that large systems can often be naturally decomposed into the "real" interesting system and a couple of irrelevant bath modes. We are not interested in the convergence of the bath, but only that the real system dynamics are converged, which naturally leads to the trace distance as measure.
- fidelity: Same as the tracedistance tool, but calculates the fidelity (different distance measure) instead.
- discord: Calculates a lower bound for the quantum discord from the entanglement between a system and ancilla degree of freedom. See this article for the details.
- entangle: Maximally entangles a system and an ancilla degree of freedom in a random way. This is generally required to use the discord tool properly.