8
$\begingroup$

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

$\endgroup$
4
  • 3
    $\begingroup$ What do you mean by "interpolate between two molecular structures"? Do you want to make a movie with one structure morphing to another one, like here? $\endgroup$
    – Camps
    Feb 5 at 18:13
  • 2
    $\begingroup$ +1 but are you able to give an example of what you want the tool to do? $\endgroup$ Feb 5 at 22:46
  • 1
    $\begingroup$ Thanks for your responses! @Camps: The movie is very nice :) Yes, in principle, if the movie uses coordinates of the intermediate structures to convert one structure to another, that is what I need :) I mean I need coordinates of the intermediate structures on the way from one structure to another. $\endgroup$
    – EvGeniy
    Feb 8 at 10:34
  • $\begingroup$ @Nike: ideally, the tool should produce coordinates of intermediate structures which are the linear interpolation between two structures. The important point is the interpolation should be done in internal coordinates, not in xyz-coordinates. This is important because interpolation in internal coordinates is more close to the reaction path connecting two structures, especially if it concerns torsion of a double bond, which is the case I am dealing with :) $\endgroup$
    – EvGeniy
    Feb 8 at 10:36

2 Answers 2

5
$\begingroup$

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.

$\endgroup$
2
$\begingroup$

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,

https://github.com/virtualzx-nad/geodesic-interpolate.git

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .