I wonder if there is a tool to generate geometries (structures) corresponding to linear interpolation between two structures in internal coordinates, with the two structures being specified in Cartesian coordinates? Thanks!
Kind regards, Evgeniy
I wonder if there is a tool to generate geometries (structures) corresponding to linear interpolation between two structures in internal coordinates, with the two structures being specified in Cartesian coordinates? Thanks!
Kind regards, Evgeniy
I am not exactly sure what type of interpolation you want, but I believe you want an interpolation to generate an intial path that can be later relaxed via nudged elastic band (NEB) or a similar method.
If this is so, then IDPP interpolation might be a good choice. IDPP or Image-Dependent Pair Potential is a method often used for generating the initial path for NEB, and is implemented in ORCA or ASE. The IDPP paper can be found here and a tutorial for IDPP with ASE can be found here. ORCA can also perform IDPP, and it will print basename_initial_path_trj.xyz
which should contain the IDPP path. Simply run a NEB calculation with maxiter set to 1, and a cheap method like PM3 or XTB2, so that you get the interpolation without having to run NEB.
IDPP starts with interpolating along the pairwise distances in the initial and final geometry. Unfortunately there more pairwise distances than there are coordinates, i.e. the pairwise distance coordinates are redundant. This means it is not possible to convert pairwise distances back to Cartesians. So what IDPP does is that it takes an interpolated geometry in Cartesian, and then minimizes the deviation from the ideal pairwise distances. Short distances are weighted more than long distances to prevent unnecessary bond breaking.
Another recent publication is the geodesic interpolation. It is also similar to IDPP but uses a different way of representing internal coordinates, and might be better than IDPP. The publication is here and the python package can be found here.
All of these methods usually use distance based internal coordinates. There have been some papers that also suggest using distance/angle/dihedral based internal coordinates. However, these are much more finicky and difficult to implement, and as far as I know there are no open-source or public packages that can do this.
I think you can use a method called Geodesic interpolation. Here is the DOI
https://doi.org/10.1063/1.5090303
It is really easy to use. Using only geometric information, you are able to generate paths from one point to another, for example from reactants to products. The code is here,