Dimer method

The dimer method of Henkelman and Jónsson [DM_HJonsson99] with improvements by Heyden et al. [DM_HBK05] and Kästner and Sherwood [DM_KastnerS08] for estimating the lowest Eigenmode using only first derivatives.

An overview may be found in Olsen et al. [DM_OKH+04].

The dimer separation is set in the [Main] section with the finiteDifference parameter. With [Main] parallel left on, an ext_pot dimer keeps a separate potential, and a separate exchange directory, on each image. See External Potential. On a potential that evaluates batches, the moved centre and its forward image go out in one call. remove_rotation skips that call. A Lanczos, Davidson, or LOR rotation skips it too, and leaves the centre evaluation in place.

The method of Melander et al. [DM_MLJonsson15] is also implemented for use with gas phase systems.

Note

There is no point removing rotations for an extended system. Rotation removal may be more detrimental as noted in Goswami [DM_Gos25].

Added in version 2.5: The Gaussian Process Regression accelerated dimer in C++ from Goswami et al. [DM_GMK+25].

Rotation backends

The softest-mode estimate used in the dimer rotation step can be chosen with rotation_backend under [Dimer] (default classical). Min-mode-following translation along that mode is unchanged; only how τ / the lowest curvature is obtained differs.

Value

Mode estimation

Notes

classical

Constrained dimer rotation (Heyden / Kästner–Sherwood style)

Default; uses opt_method, torque limits, and rotation budgets as before

lanczos

Finite-difference Lanczos min-mode

Shares the client Lanczos implementation; see Lanczos

davidson

Finite-difference Davidson min-mode

Same role as Lanczos with a different iterative subspace

lor

Locally optimal rotation (LOR), Algorithm I

Leng et al. [DM_LGSL13]; at most one new FD force per rotation iteration via Hessian–vector products and force translation of prior H·N / H·F⊥ products

Added in version 2.17.2: rotation_backend (classical | lanczos | davidson | lor). The LOR path implements Leng et al. [DM_LGSL13]: 2×2 then 3×3 Ritz problems in the rotation subspace, force translation for H·P₃ (linear action of H on the unit Gram–Schmidt residual of the trial direction), residual / rotations_max / stall stops, and a best-mode restore when the Ritz sequence is non-monotonic under FD noise.

LOR stops when the relative residual ‖F_⊥‖ / (|C_N| + 1) < max(1e-3, lor_residual_tol) (default lor_residual_tol = 0.1). That parameter is the LOR residual stop and applies only when rotation_backend = lor. Classical rotation uses torque_min (angular torque for the constrained rotation loop). Budget is rotations_max (default 10; values <= 0 fall back to 10). Exhausting the budget without meeting the residual stop sets rotationDidConverge false on ImprovedDimer.

For classical dimer rotation, the angle estimate keeps the signed atan limit when the denominator is numerically tiny (+/- pi/2 for a nonzero numerator) instead of collapsing to a zero-angle fallback. This preserves the finite-angle rotation direction in near-singular steps and avoids stalling the rotation estimate.

Example:

[Dimer]
improved = True
rotation_backend = lor
lor_residual_tol = 0.1
rotations_max = 20

improved = True (default) uses ImprovedDimer; non-classical backends skip the classical IDimerRot loop and call the selected min-mode backend through a shared dispatch helper. Rotation iteration budgets for LOR follow rotations_max. Geometry uses max_iterations.

Configuration

[Dimer]
pydantic model eon.schema.DimerConfig[source]
Fields:
  • opt_method (Literal['sd', 'cg', 'lbfgs'])

  • converged_angle (float)

  • rotations_max (int)

  • finite_angle (float)

  • dimer_improved (bool)

  • dimer_max_iterations (int)

  • dimer_rotations_min (int)

  • dimer_torque_min (float)

  • dimer_torque_max (float)

  • dimer_remove_rotation (bool)

field opt_method: Literal['sd', 'cg', 'lbfgs'] = 'cg'
Options:
  • ‘sd’: Steepest descent, rotate along the rotational force.

  • ‘cg’: Conjugate gradient, rotate along conjugate directions.

  • ‘lbfgs’: Limited memory Broyden-Fletcher-Goldfarb-Shanno Quasi-Newton optimizer.

Optimization algorithm to choose the dimer rotation direction.

field converged_angle: float = 5.0

The dimer is considered converged if it will be rotated fewer degrees than this angle. min_mode_method = xtsci passes it to rgsaddle as rotation_angle_tol, in radians.

field rotations_max: int = 10

This is the maximum number of rotations allowed for the dimer for each minimum mode estimation, and the rotation budget of min_mode_method = xtsci.

field finite_angle: float = 0.005

Finite angle for dimer rotation.

field dimer_improved: bool = True

Indicates if the improved dimer method is used.

field dimer_max_iterations: int = 1000

Maximum number of iterations allowed for the dimer.

field dimer_rotations_min: int = 1

Minimum number of rotations for the dimer. [not improved]

field dimer_torque_min: float = 0.1

Minimum torque for the dimer. [not improved] min_mode_method = xtsci passes it to rgsaddle as rotation_tol.

field dimer_torque_max: float = 1.0

Maximum torque for the dimer. [not improved]

field dimer_remove_rotation: bool = False

Implements the method of Melander et al. [DM_MLJonsson15]

Indicates if the rotation should be removed.

References

[DM_Gos25]

Rohit Goswami. Bayesian hierarchical models for quantitative estimates for performance metrics applied to saddle search algorithms. AIP Advances, 15(8):85210, August 2025. doi:10.1063/5.0283639.

[DM_GMK+25]

Rohit Goswami, Maxim Masterov, Satish Kamath, Alejandro Peña-Torres, and Hannes Jónsson. Efficient implementation of gaussian process regression accelerated saddle point searches with application to molecular reactions. May 2025. arXiv:2505.12519, doi:10.48550/arXiv.2505.12519.

[DM_HJonsson99]

Graeme Henkelman and Hannes Jónsson. A dimer method for finding saddle points on high dimensional potential surfaces using only first derivatives. The Journal of Chemical Physics, 111(15):7010–7022, October 1999. doi:10.1063/1.480097.

[DM_HBK05]

Andreas Heyden, Alexis T. Bell, and Frerich J. Keil. Efficient methods for finding transition states in chemical reactions: Comparison of improved dimer method and partitioned rational function optimization method. The Journal of Chemical Physics, 123(22):224101, December 2005. doi:10.1063/1.2104507.

[DM_KastnerS08]

Johannes Kästner and Paul Sherwood. Superlinearly converging dimer method for transition state search. The Journal of Chemical Physics, 128(1):014106, January 2008. doi:10.1063/1.2815812.

[DM_LGSL13] (1,2)

Jing Leng, Weiguo Gao, Cheng Shang, and Zhi-Pan Liu. Efficient softest mode finding in transition states calculations. The Journal of Chemical Physics, 138(9):094110, March 2013. doi:10.1063/1.4792644.

[DM_MLJonsson15] (1,2)

Marko Melander, Kari Laasonen, and Hannes Jónsson. Removing External Degrees of Freedom from Transition-State Search Methods using Quaternions. Journal of Chemical Theory and Computation, 11(3):1055–1062, March 2015. doi:10.1021/ct501155k.

[DM_OKH+04]

R. A. Olsen, G. J. Kroes, G. Henkelman, A. Arnaldsson, and H. Jónsson. Comparison of methods for finding saddle points without knowledge of the final states. The Journal of Chemical Physics, 121(20):9776–9792, November 2004. doi:10.1063/1.1809574.