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:
- 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.
- 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.
