IRC: Hessian Predictor–Corrector (HPC)

Overview

The Hessian Predictor–Corrector (HPC) method is an IRC integration algorithm that uses Hessian information for both the predictor and corrector phases of each step. By incorporating second-derivative information into both phases, HPC achieves a good balance between computational speed and path accuracy, often converging with fewer total gradient evaluations than the GS method while maintaining high reliability.

Algorithm

At each IRC step, the HPC method proceeds in two phases:

  1. Predictor step — Using the current gradient and Hessian, the method performs a Hessian-based integration step along the steepest-descent direction in mass-weighted coordinates. The Hessian eigenvalues and eigenvectors are used to determine the optimal step direction, accounting for PES curvature.
  2. Corrector step — After evaluating the actual energy and gradient at the predicted point, a correction is applied to bring the path back onto the true minimum energy path. The corrector uses both the gradient at the predicted point and the Hessian to compute the optimal correction direction.

The Hessian is updated between steps using BFGS/Bofill update formulas to avoid expensive full Hessian recomputations at every IRC point.

Parameters

The complete HPCParams dataclass:

Parameter Type Default Description
target_mode int 1 Index of the imaginary mode to follow.
step_length_bohr float 0.10 Step length in Bohr.
max_steps int 50 Maximum IRC steps per direction.
euler_n int 5000 Number of Euler sub-steps for the predictor.
hessian_recalc int None Recalculate Hessian every N steps.
hessian_update str "bofill" Hessian update: "bfgs" or "bofill".
dwi_n int 4 Number of distance-weighted interpolation points.
mbs_max_k int 15 Maximum polynomial order for modified Bulirsch-Stoer.
mbs_points int 20 Number of MBS integration points.
mbs_tol float 1e-5 MBS convergence tolerance.
f_max_th float 2e-3 Max force convergence threshold.
f_rms_th float 5e-4 RMS force convergence threshold.
print_each bool True Print details at each IRC point.
write_traj bool True Write trajectory XYZ files.

Input Example

#model=ani1xnr
#irc(method=hpc)
#device=gpu0

XYZ /path/to/transition_state.xyz

When to Use

The HPC method is recommended when:

  • The default GS method is too slow due to the number of corrector iterations required at each IRC point.
  • You want a good balance between speed and accuracy without sacrificing robustness.
  • The PES has moderate curvature changes along the reaction path, where Hessian-based integration provides a clear advantage over simpler gradient-only methods.

For very smooth surfaces where maximum speed is desired, consider LQA. For extremely difficult or anharmonic surfaces where robustness is paramount, consider EulerPC.