IRC: Local Quadratic Approximation (LQA)
Overview
The Local Quadratic Approximation (LQA) method is an IRC integration algorithm that fits a local quadratic surface to the potential energy surface at each point along the reaction path. Using the current energy, gradient, and Hessian, LQA constructs a second-order Taylor expansion of the PES and analytically determines the steepest-descent path on this quadratic model. The predicted next point is then corrected using the actual gradient computed at the new geometry.
LQA can be more efficient than the default GS method on smooth, well-behaved potential energy surfaces because the quadratic model provides a good approximation of the local PES curvature, allowing larger effective step sizes with fewer gradient evaluations per IRC point.
Algorithm
At each IRC step, the LQA method proceeds as follows:
- Construct local quadratic model — Using the energy, gradient, and Hessian at the current point, build a quadratic approximation of the PES in mass-weighted coordinates.
- Predict next point — Analytically solve for the steepest-descent direction on the quadratic surface and step to the predicted next IRC point.
- Correct — Evaluate the actual gradient at the predicted point and apply a correction step to bring the path back onto the true minimum energy path.
- Update Hessian — Update the Hessian using BFGS/Bofill formulas for use in the next step.
Parameters
The complete LQAParams dataclass:
| Parameter | Type | Default | Description |
|---|---|---|---|
target_mode |
int | 1 | Index of the imaginary mode to follow. |
step_length_bohr |
float | 0.10 | Step length along the IRC path in Bohr. |
max_steps |
int | 50 | Maximum IRC steps per direction. |
euler_n |
int | 5000 | Number of Euler integration sub-steps per IRC step. |
hessian_recalc |
int | None | Recalculate Hessian every N steps. |
hessian_update |
str | "bofill" |
Hessian update: "bfgs" or "bofill". |
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=lqa)
#device=gpu0
XYZ /path/to/transition_state.xyz
Comparison with GS
The LQA and GS methods differ primarily in how they determine each IRC step:
- GS uses a pivot-step followed by constrained optimization on a hypersphere. It does not rely on the quadratic approximation for the step direction, making it more robust on surfaces where the quadratic model breaks down.
- LQA uses the full quadratic model (gradient + Hessian) to analytically predict the next point, which can be faster when the quadratic approximation is accurate.
In practice, LQA tends to be faster on smooth, harmonic-like surfaces, while GS is more robust for highly anharmonic or strongly curved reaction paths. If LQA has convergence difficulties, switching to GS or EulerPC is recommended.
