MLPF: Multi-Layer Potfit

This is an auxiliary program for the Heidelberg MCTDH Package. It converts a potential energy surface into MLPF format, which can be used by MCTDH as a multi-layer operator in ML-MCTDH runs. Compared to potentials fitted by regular Potfit, MLPF potentials are much more compact, so that ML-MCTDH will run much more efficiently, especially if high-accuracy fits are used. For more information and details, see my paper, also available on arXiv.

MCTDH version 8.5.7 or higher is required to make use of potentials in MLPF format.

In case of problems with this software, please check the Bitbucket repository for a potentially updated version, or to report issues.

If you use MLPF for your research, you are requested to cite the following paper:

Frank Otto, "Multi-Layer Potfit: An Accurate Potential Representation for Efficient High-Dimensional Quantum Dynamics." J. Chem. Phys. 140, 014106, (2014)


This is the README for MLPF. It and the rest of the documentation are stored in the $MCTDH_DIR/doc/mlpotfit subdirectory.


If you are using MCTDH, chances are very high that all of the prerequisites are already installed. For reference, this is the software required to build MLPF:


Before first compiling, copy the file into and edit it, following the comments inside. This is for specifying the compiler and its options, and how to link with BLAS/LAPACK on your system.

To compile, simply run make. To compile faster, use make -j N, where N is the number of CPU cores you want to use. This will create a number of executables in the usual MCTDH bin/binary/$MCTDH_PLATFORM subdirectory, namely:

Note, these executables do not carry the version number 86.



To run the MLPF fitting program, use

mlpf inputfile

where the syntax of the inputfile is described in the MLPF input file documentation. The generated output files are:


To convert a potential in MLPF format into Natpot format, use

mlpf2npot mlpf.dat modc

where mlpf.dat is the output file of mlpf, and modc is an integer which specifies the number of the contracted mode. It generates a file called natpot which can be used by several utilities in the MCTDH suite.


To get some information about a full-grid potential, stored in a vpot or vpot2 file, use

vinfo vpotfile

where vpotfile is the filename of the full-grid potential. It prints out some statistical information about the potential: maximum, minimum, mean, standard deviation, and the L2 norm.