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.

Support for MLPF in MCTDH exists currently in a development branch, and is planned to be released with version 8.6.

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 doc/ subdirectory in Markdown format. For convenience, the documentation is also available in HTML format. Please point your web browser to the README.html inside doc/.


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 subdirectory bin/, namely:



To run the MLPF fitting program, use

mlpf inputfile

where the syntax of the inputfile is described in the 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.