# Conversion of Hessian from internal coordinates to cartesian coordinates

I have performed a CASPT2 frequency calculation using the MOLCAS8 program package. I need the full Cartesian Hessian matrix as input for a subsequent program package.

MOLCAS8 performs CASPT2 frequency calculations numerically. The program MCKINLEY is called for this purpose, however, it is now my opinion that all numerical second derivative calculations in MOLCAS are handled not by MCKINLEY but by the barely documented module supermac. Anyway, the Hessian is fully printed in internal coordinates once the calculation is finished. For a system of 10 atoms the internal Hessian is of size 24 x 24, which suggests non-redundant internal coordinates (MOLCAS calls them "primitive internal coordinates").

Does anyone know of a software capable of transforming a Hessian matrix from internal coordinates to Cartesian coordinates? I am aware that this will probably be complicated as internal coordinates are not as unambiguous and straight-forward as Cartesians. However, my initial search efforts did not yield a single software package capable of transforming a calculated Hessian in internal coordinates to Cartesians. Any help would be appreciated!

Alternatively, does someone know a quantum-chemical program package using which I might be able to obtain a full Cartesian hessian at CASPT2 level?

I don't know if this helps, but MOLCAS also seems to print out the force constants of each atom in Cartesian coordinates. Furthermore a .molden file is produced where the normal modes are included. The full Hessian does not seem to be written to this Molden file though.

• Not sure if this is helpful, but check out the "Cartesian" keyword for the module Slapaf. jellby.altervista.org/manual/users.guide/programs/… – Yoda Jun 2 '17 at 19:08
• 24 elements/dimension follows the $3N-6$ rule for the number of normal modes for a nonlinear molecule, and doesn't necessarily imply one coordinate system over another. – pentavalentcarbon Jun 3 '17 at 0:53

BAGEL (http://nubakery.org/ and https://github.com/nubakery/bagel) has CASPT2 analytical gradients and can run frequency computations.

It's currently being prepared for 1.0 release, so it might still have bugs. On the other hand, it is freely available under the GPL.

As for converting the Hessian, it might be useful to look at the INTDER program, which is (among others?) part of the PSI3 suite of programs available here: https://sourceforge.net/projects/psicode/files/psi/3.4.0/psi-3.4.0.tar.gz/download - PSI3 is under the GPL as well.

The manual page for INTDER is here: https://manned.org/intder and it says:

"Force field transformations between Cartesian and general internal coordinate spaces up to fourth order, including nonstationary reference structures. Both forward and reverse transformations are possible; hence, by using intermediate Cartesian coordinates, force fields can be transferred among different representations in the internal space."

Whether or not it will be easy to coerce the MOLCAS Hessian into a format INTDER likes and then transform it as you want I cannot say as I don't have any direct experience with INTDER - it is typically run as a step in a chain of commands automatically generated by the PSI3 driver routines.

Maybe openbabel can do it. I found this website which can convert z-matrix's to Cartesian coordinates: http://www.shodor.org/chemviz/zmatrices/babel.html. I know that the MolMod python library can make the conversion if you want to delve into that. And another python library that can do it chemcoord I hope this helps.

• Thanks, but all the libraries you named can not convert a hessian matrix from internal to cartesian coordinates. MolMod is able to calculate a hessian matrix in internal coordinates as I see it, but it is not able to convert a pre-existing hessian in internal coordinates to cartesian coordinates. Can you verify this? – mrnicegyu11 Jun 2 '17 at 12:55