# Hessian matrix and mass-weighted Hessian eigenvalues

If I have the Hessian matrix and the mass-weighted Hessian matrix for a system, I can find the normal modes from the mass-weighted Hessian and the force constants from the Hessian.

I have a list of the eigenvalues and eigenvectors, but I'm trying to figure out how to map each force constant to each vibrational mode. How would I go about doing that?

I have two sets of eigenvalue/eigenvector pairs. The eigenpairs for the mass-weighted Hessian gives me the vibrational frequencies and the eigenvectors for those frequencies. The eigenpairs for the non-mass-weighted Hessian (so, just a normal Hessian) give the force constants and the associated eigenvectors. What I want is to match the eigenpairs from the Hessian to the eigenpairs for the mass-weighted Hessian so then I'd have the force constant for each vibrational mode.

Right now I have a list of force constants and vibrational modes, but I have no way to know which force constant goes to which vibrational mode (since I don't know the reduced mass for the vibrational modes). If I can figure out how to relate the eigenvectors between the Hessian and mass-weighted Hessian, then I'd be able to pair the vibrational frequencies and force constants.

• How did you obtain the eigenpairs? It's normally pretty obvious which eval is connected to which evec. Or is it visualising what the evec is telling you that you are asking about? Commented Jul 20, 2021 at 9:55
• @IanBush Oh, I wasn't very clear in my post. I have two sets of eigenpairs, one set for the Hessian and one set for the Mass-weighted Hessian. I got the eigenpairs using python's numpy.linalg.eig. So I have: 1) A list of vibrational modes (eigenvalues of the Mass-weighted Hessian) and the corresponding eigenvectors 2) A list of force constants (eigenvalues of the Hessian) and the corresponding eigenvectors. I'm trying to figure out which eigenpair from the Hessian matches which eigenpair from the Mass-weighted Hessian, so I then know the force constant for each vibrational mode Commented Jul 20, 2021 at 21:43
• The eigenvectors between the Hessian and Mass-weighted Hessian should be related. I'm just struggling to find what that relationship is. For example, if I just had two C atoms, I figured the eigenvectors would be related by a factor of 12.011 or sqrt(12.011). If that were true then I could easily take an eigenvector from the mass-weighted hessian, multiply by this factor, and just solve for the eigenvalue of the non-mass-weighted hessian. When I tried this, multiplying the eigenvector for the mw-hessian by 12.011 or sqrt(12.011) didn't yield an eigenvector from the non-mw-hessian. Commented Jul 20, 2021 at 22:09
• +1 But you should mention that you used python in the question, and post a code snippet if possible. If you don't get any answers here, you may also want to check out Matter Modelling SE. Commented Jul 21, 2021 at 3:25
• @NicholasH. Normal modes and their eigenvalues and eigenfrequencies are based on the mass weighted Hessian. I think the only case where you can use directly the unweighted Hessian is, the case when all particles have the same mass, which isn't the case for molecules in general. You can define a reduced mass and transform afterwards from the mass weighted modes to Cartesian displacement normal modes. These Cartesian displacement modes are what people typically indicate with vectors on atoms to illustrate normal modes. Commented Jul 23, 2021 at 7:16

The actual value of the reduced masses associated with normal modes depends on the convention that you are using. There is not a single "true" value for the reduced mass, it is a property that we define for convenience. It is not a physically measurable quantity in the case of vibrations of polyatomic molecules. The value of the force constant changes with your choice for the reduced mass, since we have $$k_i = \mu_i \omega_i^2$$