P-RFO (Partitioned Rational Function Optimization)
Overview
P-RFO is a second-order saddle point optimizer based on the Partitioned Rational Function Optimization algorithm. It works by partitioning the Hessian eigenspace into one mode to maximize along (the reaction coordinate) and all remaining modes to minimize along. This dual-shift approach, combined with a trust-region framework and mode-following in mass-weighted coordinates, efficiently converges to the nearest first-order saddle point from an initial guess geometry.
P-RFO is the default TS refinement method in MAPLE and is the final optimization step used by refine=nebts after NEB or String calculations. It requires a good starting geometry that is already close to the true TS.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
max_iter |
int | 256 | Maximum number of optimization cycles. |
trust_radius |
float | 0.2 | Initial trust radius in Angstrom. |
trust_min |
float | 1e-3 | Minimum trust radius. |
trust_max |
float | 1.0 | Maximum trust radius. |
eta_shrink |
float | 0.75 | Trust radius shrink factor when step is poor. |
eta_expand |
float | 1.75 | Trust radius expansion factor when step is good. |
evals_eps |
float | 1e-10 | Eigenvalue epsilon for numerical stability. |
mu_margin |
float | 1e-8 | Margin for the level-shift parameter. |
max_bisect_it |
int | 60 | Maximum bisection iterations for level-shift. |
f_max_th |
float | 9.5e-3 | Max force convergence threshold (Hartree/Bohr). |
f_rms_th |
float | 5e-3 | RMS force convergence threshold. |
dp_max_th |
float | 1.8e-3 | Max displacement convergence threshold (Bohr). |
dp_rms_th |
float | 1.2e-3 | RMS displacement convergence threshold. |
Input Example
#model=ani1xnr
#ts(method=prfo)
#device=gpu0
XYZ /path/to/ts_guess.xyz
Tips
- Start from a good guess. The best starting geometry is typically the highest-energy image (HEI) from a converged NEB or String calculation. You can extract this from the
*_hei.xyzoutput file. - Verify with a frequency calculation. After P-RFO converges, always run a frequency calculation to confirm exactly one imaginary frequency. If there are multiple imaginary frequencies, the converged structure may be a higher-order saddle point.
- Use
refine=nebtsfor automation. Rather than running P-RFO manually, you can setrefine=nebtsin your NEB or String input to automatically apply P-RFO refinement after the path search completes. - Trust radius adjustment. If P-RFO oscillates or fails to converge, consider providing a geometry closer to the true TS. The trust-region mechanism will automatically adapt the step size, but a poor initial guess can cause the search to wander.
