Path-integral quantum dynamics simulations package. Capable of performing: (Thermostatted) Ring-Polymer Molecular Dynamics ((T)RPMD), Centroid MD (CMD), Quasi-centroid MD (QCMD).
Nuclear quantum effects, such as zero-point energy and tunnelling, are important to account for in many condensed-phase systems. By using the path-integral formulation of quantum mechanics the quantum Boltzmann operator (the QM operator the governs the thermal statistics of a system) can be discretised and reformulated classically. These classical simulations are carried out in the extended phase space of the ring-polymer, a harmonically connected system of replicas of the original classical system.
A variety of methods exist in the quantum statistics-classical mechanics space. This package implements the two most popular methods, (T)RPMD and CMD, and the newer QCMD method. The focus of this software is producing dipole autocorrelation functions, and by extension, infrared spectra. This can be used to probe the dynamics of system, and whether the chosen methods faithfully replicates the underlying physics.
This package implements the above methods. The only requirement is to specify and input file, examples can be found in the input
directory. The package uses MPI to spawn simulations with different random number seeds. These simulations are then averaged to produce a final TCF with errors.
This package can be used to generate the data for the following papers:
- George Trenins, Christopher Haggard, and Stuart C. Althorpe, "Improved torque estimator for condensed-phase quasicentroid molecular dynamics", J. Chem. Phys. 157, 174108 (2022)
- Christopher Haggard, Vijay Ganesh Sadhasivam, George Trenins, and Stuart C. Althorpe, "Testing the quasicentroid molecular dynamics method on gas-phase ammonia", J. Chem. Phys. 155, 174120 (2021)
- CMake
- Armadillo
- MKL
- Boost
- MPI compiler
- Spliter (multivariate interpolation, only required for grid based simulations)
sudo apt install cmake libarmadillo-dev libboost-all-dev openmpi-bin
git clone https://github.com/google/googletest.git
mkdir build
cd build
cmake ..
cmake --build . --target QuantDynPI
mpirun -n <n_proc> ../bin/QuantDynPI
For a full manual install see INSTALLING.MD
available preprocessor directives (requires recompilation)
SAVE_TRAJECTORY
SKIP_THERMAL
PRINT_STEPS
FROZEN_CENTROID
To build and run the tests
cmake --build . --target QuantDynPI_TEST
./tests/QuantDynPI_TEST
To debug the program
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug -DMPI_CXX_COMPILER=mpiicpc -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc ..
cmake --build . --target QuantDynPI --parallel 12
cd ..
gdb
file bin/QuantDynPI
run input/input_file.json
bt
- Gamma must be specified. It has no effect for (T)RPMD/Classical. A gamma of <0.0 will mean CMD/QCMD will not be adiabatically separated (for grid based calculations)
All additions must have an associated unit test. These are found in the test
dir which follows the structure of the src
dir.
Generate docs with doxygen Doxyfile
.
- The path to the init file in the input json must be absolute and not include ~ etc.
- Propagation is done entirely in normal modes. The Cartesian representations are rarely up to date. The Cartesian positions are only guaranteed to be up to date at the end of each step. The momenta are rarely up to date.
- QCMD timestep is dependent on gamma (and therefore the number of beads), and must be quite low