Purpose of Module

Module PIM_wd implements the Phase Integration Method (PIM) [Mon1] [Mon2] for the exact sampling of the quantum Wigner distribution in phase space representation. The PIM samples the thermal Wigner density using a generalized Monte Carlo scheme for sampling phase space points. The scheme combines the Penalty [Pen] and Kennedy [Ken] algorithms to sample noisy probability densities. This is necessary because the estimator of the quantum thermal density is not known analytically but must be computed via a statistical average affected by uncertainty. The sampled points are the basis for the calculation of time-dependent correlation function with the PIM algorithm via the module PaPIM. The user is required to provide the potential energy of the system by incorporating an external potential energy subroutine into the PotMod potential energy library.

Applications of the Module

This module forms the basis for computing the time-dependent cross- and auto-correlation functions with the PIM algorithm. It has been used in the calculation of \text{CH}_{5}^{+} infrared spectrum and in the gas phase as well as for the computation of infrared spectrum of small water molecule clusters and protonated water dimer system.


Fortran compiler with a MPI wrapper together with lapack libraries have to be available to successfully compile the code. The user is advised to examine the Makefile in the ./source` sub-directory prior to code compilation in order to select an appropriate compiler and to check or adapt the compiler options to his local environment, or to generally modify the compiler options to his requirements.

cd source


Upon adapting the Makefile, the code compilation is executed by command make in the ./source sub-directory. An executable PaPIM.exe is created upon successful compilation.


For PIM_wd test purposes the numdiff package is used for automatic comparison purposes and should be made available before running the tests, otherwise the diff command will be used automatically instead but the user is warned that the test might fail due to numerical differences. The user is advised to download and install numdiff from here. Tests and corresponding reference values are located in sub-directories ./tests/. The tests are performed over three systems, the \text{OH}, \text{CH}_{4} and \text{CH}_{5}^{+}. They are located in their corresponding oh, ch4 and ch5, where each sub-directory contains corresponding classical and quantum input files located in CLASSICAL and QUANTUM sub-directories, respectively. Before running the tests the code has to be properly compiled by running the make command in the ./source sub-directory. The tests are performed automatically by executing the command ./test.sh in the ./tests sub-directory for all three systems:

cd tests

./test.sh [number of cores]

Tests are by default performed using two processor cores, which can be changed by setting the value of required cores as an integer number after the command ./test.sh (example ./test.sh 20, for the use of 20 processor cores in the test). The number of processor cores should not exceed 20. Due to small numerical discrepancies between generated outputs and reference values which can cause the tests to fail, the user is advised to manually examine the numerical differences between generated output and the corresponding reference values in case the tests fail.

Source Code Documentation

The source code documentation can be generated automatically in ./doc sub-directory, html and latex format, by executing the following command in the ./doc directory:

doxygen PIMwd_doxygen_settings


[Pen]D. M. Ceperley, M. Dewing J. Chem. Phys. 110 (1999) 9812 DOI: http://dx.doi.org/10.1063/1.478034
[Ken]A. D. Kennedy, J. Kuti Phys. Rev. Lett. 54 (1985) 2473 DOI: https://doi.org/10.1103/PhysRevLett.54.2473