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.xyz output 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=nebts for automation. Rather than running P-RFO manually, you can set refine=nebts in 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.