Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Computational chemistry

  1. Feb 22, 2007 #1

    First I hope it is okay to post the problem here(?). I have some general questions regarding the use of software for chemistry simulations - my questions are more fundamental than software specific.

    I would like to simulate a chemical reaction - so I should be searching for the saddle point of the reactants. In order to find this it is necessary with the Hessian - which is the second derivative of the energy. But why is it necessary to include this in order to compute the saddle point?

    If one has problems getting the calculation of the Hessian to converge - what possible adjustments can one make - increasing numbers of iterations?

    Thanks in advance
  2. jcsd
  3. Feb 22, 2007 #2
    When a point has derivative zero it can be a min, max or a saddle point. The hessian is needed to determine which of those three types the point of interest is. If the hessian (second derivative) switches sign it is a saddle point. If you didn't check the hessian one might not be sure that the point is a saddle point and not a min/max.
  4. Feb 22, 2007 #3


    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    The Hessian will tell you whether the energy for the calculated geometry is a local maxima or minima. It will be positive for minima and negative for maxima. The first derivative or gradient (slope) only tells you where the change in energy is zero. The gradient = 0 only tells you that the geometry is at either a local minimum or maximum.

    Sometimes the saddle point can be fairly steep (sharp?). To accurately converge to the optimal geometry, your program usually needs to approach the saddle point in very small increments (decrease the mesh size). This usually means that much more calculation is required (calculation = time). Some programs will decrease the mesh size when the change in the output between iterations becomes very small.

    Small differences in the output can cause other problems as well. Often these calculations are handled as matrix calculations. Diagonalizing a matrix involves dividing by a difference. As the difference becomes small, the result is a large number. Large numbers and small numbers can cause significant errors in computation if they are not handled properly. I experienced a difficulty converging on an answer that was ultimately solved by declaring the matrix variables in double precision.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook