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.

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.

Added in version 2.5_TBA: The Gaussian Process Regression accelerated dimer in C++, rewritten and extended from Koistinen et al. [DM_KAsgeirssonVJonsson20].

Configuration#

[Dimer]
pydantic model eon.schema.DimerConfig[source]#

Show JSON schema
{
   "title": "DimerConfig",
   "type": "object",
   "properties": {
      "opt_method": {
         "default": "cg",
         "description": "Optimization algorithm to choose the dimer rotation direction.",
         "enum": [
            "sd",
            "cg",
            "lbfgs"
         ],
         "title": "Opt Method",
         "type": "string"
      },
      "converged_angle": {
         "default": 5.0,
         "description": "The dimer is considered converged if it will be rotated fewer degrees than this angle.",
         "title": "Converged Angle",
         "type": "number"
      },
      "rotations_max": {
         "default": 10,
         "description": "This is the maximum number of rotations allowed for the dimer for each minimum mode estimation.",
         "title": "Rotations Max",
         "type": "integer"
      },
      "dimer_rotation_angle": {
         "default": 0.005,
         "description": "Finite angle for dimer rotation.",
         "title": "Dimer Rotation Angle",
         "type": "number"
      },
      "dimer_improved": {
         "default": true,
         "description": "Indicates if the improved dimer method is used.",
         "title": "Dimer Improved",
         "type": "boolean"
      },
      "dimer_max_iterations": {
         "default": 1000,
         "description": "Maximum number of iterations allowed for the dimer.",
         "title": "Dimer Max Iterations",
         "type": "integer"
      },
      "dimer_rotations_min": {
         "default": 1,
         "description": "Minimum number of rotations for the dimer. [not improved]",
         "title": "Dimer Rotations Min",
         "type": "integer"
      },
      "dimer_torque_min": {
         "default": 0.1,
         "description": "Minimum torque for the dimer. [not improved]",
         "title": "Dimer Torque Min",
         "type": "number"
      },
      "dimer_torque_max": {
         "default": 1.0,
         "description": "Maximum torque for the dimer. [not improved]",
         "title": "Dimer Torque Max",
         "type": "number"
      },
      "dimer_remove_rotation": {
         "default": false,
         "description": "Indicates if the rotation should be removed.",
         "title": "Dimer Remove Rotation",
         "type": "boolean"
      }
   }
}

Config:
  • use_attribute_docstrings: bool = True

Fields:
field converged_angle: float = 5.0#

The dimer is considered converged if it will be rotated fewer degrees than this angle.

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_remove_rotation: bool = False#

Implements the method of Melander et al. [DM_MLJonsson15]

Indicates if the rotation should be removed.

field dimer_rotation_angle: float = 0.005#

Finite angle for dimer rotation.

field dimer_rotations_min: int = 1#

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

field dimer_torque_max: float = 1.0#

Maximum torque for the dimer. [not improved]

field dimer_torque_min: float = 0.1#

Minimum torque for the dimer. [not improved]

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 rotations_max: int = 10#

This is the maximum number of rotations allowed for the dimer for each minimum mode estimation.

References#

[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_KAsgeirssonVJonsson20]

Olli-Pekka Koistinen, Vilhjálmur Ásgeirsson, Aki Vehtari, and Hannes Jónsson. Minimum Mode Saddle Point Searches Using Gaussian Process Regression with Inverse-Distance Covariance Function. Journal of Chemical Theory and Computation, 16(1):499–509, January 2020. doi:10.1021/acs.jctc.9b01038.

[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_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.