oqp.library.oqp_irc

OQP intrinsic reaction coordinate (IRC) for OpenQP.

Backend-agnostic (NumPy only) Gonzalez--Schlegel mass-weighted steepest-descent
reaction path (Gonzalez & Schlegel, J. Phys. Chem. 94, 5523 (1990)).

The IRC is the steepest-descent path in mass-weighted Cartesian coordinates
q = M^{1/2} x.  Each step of mass-weighted arc length ``s`` is taken with the
Gonzalez--Schlegel constrained scheme:

  1. pivot point  q* = q_k - (s/2) g_hat   (g_hat = mass-weighted gradient dir);
  2. find q_{k+1} on the hypersphere |q - q*| = s/2 that minimizes E, i.e. the
     point whose gradient is radial (no tangential component).

The first point is displaced from the transition state along the
imaginary-frequency mode (mass-weighted), in the requested forward/backward
direction.  The caller supplies ``energy_gradient(x_flat) -> (E, g_flat)`` in
atomic units, so this module is testable on analytic surfaces without the OQP
core.

Classes

IRC

Functions

imaginary_mode(mass, hessian[, coordinates, negative_tol])

Module Contents

class IRC(mass, x_ts, init_direction_mw, step=0.1, sign=1, logger=None)
sqm
x_ts
dir
step
sign = 1
logger = None
run(energy_gradient, max_points=50, gtol=0.0001, micro_max=6, micro_tol=0.0001, on_point=None)
imaginary_mode(mass, hessian, coordinates=None, negative_tol=1e-08)
Return the unique imaginary mode of a first-order saddle Hessian.

``mass`` in amu (natom,), ``hessian`` in Hartree/Bohr**2 (3N,3N), and
optional ``coordinates`` in Bohr.  With coordinates, translations and
rotations are projected before diagonalization so their near-zero
numerical curvature cannot be mistaken for imaginary vibrations. Returns
the normalized mass-weighted eigenvector and curvature. Numerical negative
noise above ``-negative_tol`` is ignored. A valid IRC start must contain
exactly one significant vibrational negative mode; minima and higher-order
saddles are rejected.