Hessian

The Hessian matrix (second derivative of the potential energy with respect to atomic coordinates) is used for:

  • Vibrational frequency analysis: Eigenvalues of the mass-weighted Hessian give squared vibrational frequencies. Positive eigenvalues correspond to stable modes; negative eigenvalues indicate saddle point character.

  • hTST prefactors: The harmonic transition state theory rate constant requires the product of frequencies at the minimum and saddle point (see prefactor).

  • Saddle verification: A first-order saddle point has exactly one negative Hessian eigenvalue.

How It Works

eOn computes the Hessian numerically via central finite differences:

$$H_{ij} = \frac{F_i(x + \delta e_j) - F_i(x - \delta e_j)}{2\delta}$$

where $\delta$ is the finite difference step size (min_displacement). This requires $2 \times 3N$ gradient evaluations for $N$ atoms (or $2 \times 3N_\text{free}$ if some atoms are frozen).

The Hessian is then mass-weighted:

$$\tilde{H}{ij} = \frac{H{ij}}{\sqrt{m_i m_j}}$$

and diagonalized to obtain vibrational frequencies $\nu_k = \sqrt{\lambda_k} / (2\pi)$.

Usage

The Hessian job computes and reports the vibrational frequencies:

[Main]
job = hessian

[Hessian]
min_displacement = 0.001

The output results.dat contains the eigenvalues (squared frequencies) of the mass-weighted Hessian matrix.

Configuration

[Hessian]
pydantic model eon.schema.HessianConfig[source]

Show JSON schema
{
   "title": "HessianConfig",
   "type": "object",
   "properties": {
      "atom_list": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "items": {
                  "type": "integer"
               },
               "type": "array"
            }
         ],
         "default": "All",
         "description": "The atoms that will be displaced in the calculation of the Hessian: a comma delimited list of atom indices, e.g. 0,1,2. Default is 'All'.",
         "title": "Atom List"
      },
      "zero_freq_value": {
         "default": 1e-06,
         "description": "The value assigned to zero frequencies.",
         "title": "Zero Freq Value",
         "type": "number"
      }
   }
}

Config:
  • use_attribute_docstrings: bool = True

Fields:
field atom_list: str | list[int] = 'All'

The atoms that will be displaced in the calculation of the Hessian: a comma delimited list of atom indices, e.g. 0,1,2. Default is ‘All’.

field zero_freq_value: float = 1e-06

The value assigned to zero frequencies.

References