Dimer Method
Overview
The Dimer method is a minimum-mode following algorithm for locating first-order saddle points on the potential energy surface. Unlike path-based methods such as NEB or String, the Dimer method requires only a single starting structure and does not need knowledge of the product geometry.
The method works by constructing a "dimer" consisting of two images separated by a small distance along a trial direction. At each iteration, the dimer is first rotated to align with the lowest curvature mode of the PES (the mode with the most negative eigenvalue), then translated along this mode. The parallel component of the force is inverted so that the structure climbs uphill along the reaction coordinate while relaxing in all perpendicular directions, converging to a nearby saddle point.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
use_hvp |
bool | False | Use Hessian-vector products instead of finite differences. |
delta |
float | 0.005 | Finite-difference displacement for dimer rotation (Angstrom). |
rot_max_iter |
int | 5 | Maximum rotation iterations per translation step. |
rot_alpha |
float | 0.5 | Rotation step scaling factor. |
rot_f_max_th |
float | 1.0e-3 | Max force threshold for rotation convergence. |
rot_f_rms_th |
float | 5.0e-4 | RMS force threshold for rotation convergence. |
step0 |
float | 0.2 | Initial translation step size. |
step_max |
float | 0.15 | Maximum translation step size. |
trust_radius |
float | 0.15 | Trust radius for translation. |
f_max_th |
float | 5.0e-3 | Max force convergence threshold for overall dimer. |
f_rms_th |
float | 1.0e-3 | RMS force convergence threshold. |
kappa_to_flip |
float | 0.0 | Curvature threshold for mode flipping. |
max_iter |
int | 200 | Maximum dimer translation iterations. |
use_mass_weight |
bool | False | Use mass-weighted coordinates. |
remove_rigid |
bool | True | Remove rigid body translations and rotations. |
n_init |
str | "random" | Initial dimer direction: "random", "force", or "given". |
n_given |
ndarray | None | User-supplied initial dimer direction vector. |
save_traj |
bool | True | Save trajectory of dimer steps. |
save_metrics |
bool | True | Save convergence metrics to output. |
Input Example
#model=ani1xnr
#ts(method=dimer)
#device=gpu0
XYZ /path/to/ts_guess.xyz
Output
*_dimer_ts.xyz— The final converged transition state geometry.*_dimer_traj.xyz— Multi-frame XYZ trajectory file containing all intermediate structures generated during the search, useful for visualizing the path from the initial guess to the saddle point.
When to Use
The Dimer method is the right choice when:
- The product is unknown. You want to explore what reactions are possible from a given structure without knowing the endpoint geometry in advance.
- Exploring the PES landscape. You want to systematically discover nearby saddle points from a minimum, for example to enumerate possible decomposition pathways or rearrangement channels.
- Single-ended search is preferred. You have a reasonable guess for the TS geometry (e.g., from chemical intuition or a constrained scan) but do not have a product structure to use with NEB or String.
- The reaction path is not well-defined. When the reaction involves complex conformational changes where defining a clear product is difficult, the Dimer method can find the nearest saddle point without requiring path construction.
