IRC: Euler Predictor–Corrector (EulerPC)
Overview
The Euler Predictor–Corrector (EulerPC) method is the simplest predictor-corrector IRC integrator available in MAPLE. It uses a basic Euler integration step (following the negative gradient direction) as the predictor, then applies a corrector step to project the path back onto the true minimum energy path. While EulerPC is generally slower than the other IRC methods due to smaller effective step sizes, it is the most robust option for difficult potential energy surfaces where higher-order methods may fail to converge.
Algorithm
At each IRC step, the EulerPC method proceeds in two phases:
- Predictor (Euler step) — A simple Euler integration step is taken along the negative gradient direction in mass-weighted coordinates. The step length is controlled by the
step_length_bohrparameter. This produces a trial point that approximately follows the steepest-descent path. - Corrector (gradient projection) — The actual gradient is evaluated at the trial point, and a correction is applied to project the geometry back onto the minimum energy path. This correction uses bisection or gradient-based projection to ensure the corrected point lies on the true IRC path rather than drifting off due to the finite step size of the Euler predictor.
Because the Euler predictor is only first-order accurate, smaller step sizes are typically needed compared to LQA or HPC to maintain path accuracy. However, the simplicity of the algorithm means it makes no assumptions about PES smoothness or curvature, giving it superior robustness on highly anharmonic or irregular surfaces.
Parameters
The complete EulerPCParams 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. |
max_pred_steps |
int | 500 | Maximum predictor sub-steps. |
loose_cycles |
int | 3 | Number of initial cycles with loosened convergence. |
hessian_recalc |
int | None | Recalculate Hessian every N steps. |
hessian_update |
str | "bofill" |
Hessian update: "bfgs" or "bofill". |
dwi_n |
int | 4 | Distance-weighted interpolation points. |
mbs_max_k |
int | 15 | Max polynomial order for MBS. |
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=eulerpc)
#device=gpu0
XYZ /path/to/transition_state.xyz
Comparison of IRC Methods
| Method | Speed | Robustness | Best For |
|---|---|---|---|
| GS | Moderate | High | General use (default) |
| LQA | Fast | Moderate | Smooth surfaces |
| HPC | Fast | High | Balanced speed/accuracy |
| EulerPC | Slow | Very High | Difficult/anharmonic surfaces |
When to Use
The EulerPC method is recommended as a fallback when other IRC methods have difficulty:
- When the default GS method, LQA, or HPC fail to converge along the IRC path.
- For highly anharmonic reactions where the PES curvature changes drastically along the reaction coordinate.
- For reactions involving large-amplitude motions, bond breaking/forming events with flat or irregular PES regions.
- When path accuracy is more important than computational speed.
For routine IRC calculations on well-behaved surfaces, the default GS method or the faster HPC method are generally preferred.
