Several variants of initial Hessian estimate for geometry optimization.

module HessianEstimate

Numerical calculation

HessianEstimate.numerical(geometry, settings) # => Matrix

Fix for optimization hessian

HessianEstimate.make_positive(h)

Cartesian (build from internals)

HessianEstimate.in_cartesian(geometry, hessian_type, options = {})

Internals

HessianEstimate.in_redundant_coord(q_set, geometry, hessian_type)

HessianEstimate.simple_diagonal(q_set)

Hessian diagonal in redundant internal coordinates, with different force constants for bonds, angles and torsions.

Values are taken from Bakken, Helgaker, J.Chem.Phys 117(20), 2002

HessianEstimate.fischer_almlof(q_set, geometry)

Hessian diagonal in redundant internal coordinates, force constant derived from bond distances and table of covalent radii.

Reference: Fischer, Almlof, J.Phys.Chem 96(24), 9768-9774, 1992

HessianEstimate.lindh(q_set, geometry)

Hessian diagonal in redundant internal coordinates, force constant derived from bond distances and constants tabulated for first 3 periods of periodic table.

Reference: Lindh, Bernhardsson, Karlstrom, Malmqvist, Chem.Phys.Lett 241, 423-428, 1995