The program can generate Pis4 based Potential energy surface internally (with capabilities to create input files for Gaussian, Molpro, and Psi4 for external calculations) for atom-atom (1D), rigid rotor(RR)-atom (2D) and RR-RR (4D) collision. A TensorFlow (keras) based neural networks model can be created to augment the surface with a high degree of accuracy (at both minima and high energy regions) OR (if angular augmentation is not necessary) radial terms for each angle(s) can be analytically fitted to get missing R values. Finally, the PES is fitted into Legendre (2D) and Bispherical Harmonics (4D) to get radial terms which can be used to study rotational transitions induced by the collider. The codes are useful while studying collisional 💥 dynamics of one or both species at cold ❄️ and ultracold ⛄ temperatures.
To be updated:
- (a) Full programmer's guide
- (b) Example files
- 📬 [email protected]
The Python-based program automatically creates PES for various collisional pairs e.g. atom-atom (1D), rigid rotor-atom (2D), and rigid rotor-rigid rotor (4D). The program calculates and moves respective Rigid Rotor(s) (RR) to COM and generates PES using Psi4 (for rough estimation). The program also generates input files for external calculations using Molpro/Gaussian/Psi4 along with publication-ready plots with customization (title, axis, etc.) in pdf/eps formats. Simple templates (input_files.py) are provided for Psi4, Gaussian, and Molpro which automatically create required input files (for each individual coordinate in XYZ format) for respective ab initio software packages. Sample input files are provided for Single point, BSSE-corrected, and CBS-extrapolation schemes for Molpro. Gaussian template defaults to BSSE corrected PES, while Psi4 can be used both internally (using pes2mp) or externally (recommended for large calculations).
The program can be utilized to separately fit minima and high energy regions for a good fit. The underlying package for the NN model is TensorFlow, which can learn multiple outputs simultaneously and is not restricted by dimensionality (i.e. data can have N inputs and M output columns). The program also keeps boundary elements (of input features) in the training dataset to prevent boundary errors. There are two models: PES-specific (default) and Generic. The PES-specific model uses Gaussian activation functions (custom-made) and a modified Slater function for high-energy and long-range extrapolation. In the generic model, GELU is the default activation function. For finding the most suitable model (layers/nodes/activation function), Keras-tuner’s (package) Bayesian Optimization tuning is used which utilizes the Gaussian process to find optimum parameters within a reasonably defined search space.
The radial terms (
Both codes (2D/4D) use least squares fit, achieved by taking the pseudo-inverse of Legendre/Spherical-Harmonics coefficients, which are saved as a 2D numpy matrix for future use.
The code is currently limited to rigid rotor - atom (2D) and rigid rotor - rigid rotor (4D) collision.
For theoretical details please follow the paper N. Sathyamurthy, “Computational fitting of ab initio potential energy surfaces,” _Comput. Phys. Rep._ 3, 1–69 (1985).
link 🧐
The radial terms (
The curve fit produces an output that is MOLSCAT readable for direct utilization in &potl block. The feature is available in a general-purpose version of the subroutine POTENL of MOLSCAT 2020. The same can be utilized to calculate cross-sections for rotational (de-)excitation of two colliding species at cold and ultracold temperatures.
PES plots are available as 1D (R vs E) and polar (R,
For any queries ✉️ Dr. T. J. Dhilip Kumar cc: Apoorv Kushwaha
Additional details about PES Generation, NN fitting, MP Expansion, and Scattering calculations can be found here:
2D collision: Benchmarking C2-He and NCCN-He 🧐, PO+-He 🧐
4D collision: NCCN-H2 🧐, CNCN-H2 🧐, C4-H2 🧐, C5-H2 🧐, PO+-H2 🧐
Installation Instructions:
The makefiles (inside the make_scripts folder
) are tested on Linux and MacOS. The quick install file does not use conda install
(where solving environments can take hours), instead, it uses python -m pip
. However, all 4 files create separate environments and can be run without clashing with each other. To understand more read 🐍
- Install anaconda
- Open conda promot
The command prompt will show `base' meaning base conda environment.
- run
chmod +x install_pes2mp.sh
- run
./install_pes2mp.sh
- run
chmod +x install_pes2mp_quick.sh
(recommended) orchmod +x install_pes2mp_quick.sh
{See manual for more information} - run
./install_pes2mp_quick.sh
Running PES2MP:
Running PES2MP
The program can be run by keeping the input file (e.g. pesgen1D.py)
Direct execution:
- run
conda activate pes2mp
orconda activate pes2mp_quick
depending on installation - run
python3 pes2mp.py pesgen1D
Shorter execution (requires a one-time update of bashrc):
- Open bashrc in Ubuntu (or bash_profile in MacOS)
- Add
pes2mp (){python3 pes2mp.py $1
at end of file. - Save and exit.
- The command for running PES2MP will now be
pes2mp pesgen1D
Run External calculations and auxiliary scripts:
-
Running bash scripts
$ chmod +x run_test .sh
$ ./ run_test .sh
-
Running python scripts
$ conda activate pes2mp # or pes2mp_q
$ python3 python_script .sh