eOn
    • rgpycrumbs Python helpers for eOn workflows
    • chemparseplot Parsing and plotting for computational chemistry
/

Contents

  • eOn Team
  • Installation
  • Obtaining sources
  • Licenses
  • Tutorials
    • AKMC Tutorial
    • Running a Parallel Replica Job
    • Targeted Displacement for Saddle Searches
    • Dictionary-Style Configuration
    • CECAM Workshop 2024
      • Virtualbox Troublshooting
  • User Guide
    • External Potential
    • LAMMPS Potential
    • ASE Interface
    • Metatomic Interface
    • QUIP with LAMMPS
    • MPI Potential
    • Choosing an algorithm
    • General Simulation Parameters
    • Potential
    • Structure Comparison
    • Optimizer
    • Minimization
    • Nudged Elastic Band
    • Dimer method
    • Lanczos
    • Hessian
    • Prefactor
    • Adaptive Kinetic Monte Carlo
    • Saddle Search
    • Basin Hopping
    • Process Search
    • Recycling
    • Coarse Graining
    • Dynamics
    • Parallel Replica
    • Hyperdynamics
    • Communicator
    • Debug
    • Paths
    • Kinetic Database
    • Serve Mode
  • Development Documentation
    • Tests
    • Benchmarks
    • Parallel Force Evaluation
    • Working with the documentation
    • Subversion
    • Migrating from SVN
    • Tracking changes
    • Checklist
  • API Reference
    • eon
      • eon.mcamc
        • eon.mcamc.test
        • eon.mcamc.mcamc
      • eon.atoms
      • eon.askmc
      • eon.state
      • eon.communicator
      • eon.eon_kdb
      • eon.parallelreplica
      • eon.superbasinscheme
      • eon.prstatelist
      • eon.movie
      • eon.prstate
      • eon.akmcstate
      • eon.basinhopping
      • eon.server
      • eon.akmc
      • eon.mpiwait
      • eon.recycling
      • eon.fileio
      • eon.superbasin
      • eon.statelist
      • eon.explorer
      • eon.config
      • eon.locking
      • eon.displace
      • eon.escaperate
      • eon.akmcstatelist
  • Releases
    • Changelog
    • [v2.12.0] - 2026-03-08
      • Release notes
    • [v2.11.2] - 2026-03-02
      • Release notes
    • [v2.11.1] - 2026-03-01
      • Release notes
    • [v2.11.0] - 2026-02-24
      • Release notes
    • [v2.10.2] - 2026-02-22
      • Release notes
    • [v2.10.1] - 2026-02-18
      • Release notes
    • [v2.10.0] - 2026-02-15
      • Release notes
    • [v2.9.0] - 2026-01-27
      • Release notes
      • Related Publications
    • [v2.8.2] - 2025-12-01
      • Release notes
    • [v2.8.1] - 2025-11-03
      • Release notes
      • Related Publications
    • [v2.8.0] - 2025-09-04
      • Release notes
      • Related Publications

On this page

  • Displacement Strategies
    • Epicenters and Weight-Based Selection
    • Radius and Magnitude
    • Displacing All Listed Atoms
    • Dynamic Atom Lists via Scripts
    • Client-Side Displacement
  • Configuration
  • See also
  • References
TheochemUI/eOn 0 0
Edit this page
  1. eOn /
  2. User Guide /
  3. Saddle Search
View as Markdown Open in ChatGPT Open in Claude

Saddle Search¶

A saddle search is initiated by making a local displacement of atoms from their position at the minimum of the current state. This displacement can be done using the different strategies indicated by the client_displace_type option, and the following parameters. If the user knows something about the local environment where reactions are likely to take place in the system, this information can be used to make saddle searches more efficient by getting them started in the right part of configuration space.

Displacement Strategies¶

Epicenters and Weight-Based Selection¶

Each saddle search begins by choosing an epicenter — a single atom around which the initial displacement is constructed. The epicenter is selected probabilistically from several strategies, each controlled by a relative weight:

Weight parameter

Strategy

displace_random_weight

Pick any atom at random

displace_least_coordinated_weight

Pick an atom with the lowest coordination number

displace_not_FCC_HCP_weight

Pick an atom whose local environment is neither FCC nor HCP

displace_under_coordinated_weight

Pick an atom with coordination ≤ displace_max_coordination

displace_listed_atom_weight

Pick an atom from displace_atom_list

displace_listed_type_weight

Pick an atom whose type is in displace_type_list

The weights do not need to sum to 1 — they are normalised internally. Setting a weight to 0 disables that strategy. For example, setting only displace_listed_atom_weight = 1.0 and all other weights to 0 ensures that every saddle search starts from an atom in the explicit list.

Radius and Magnitude¶

Once the epicenter is chosen, all atoms within displace_radius of the epicenter are displaced. Each displaced atom receives a random perturbation drawn from a Gaussian distribution with standard deviation displace_magnitude (in Ångströms) independently in each Cartesian direction.

Displacing All Listed Atoms¶

When displace_all_listed is true and a listed-atom strategy is selected, every atom in displace_atom_list (or displace_type_list) is displaced — not just one chosen at random. Atoms within displace_radius of any displaced atom are also included. Set displace_radius to 0 to restrict the displacement strictly to the listed atoms.

Dynamic Atom Lists via Scripts¶

For systems where the relevant atoms change from state to state (e.g. a migrating vacancy), a static list is insufficient. The displace_atom_kmc_state_script option lets you specify a Python script that is executed once per new AKMC state to determine the atom list dynamically. See the Targeted Displacement for Saddle Searches tutorial for worked examples covering vacancy diffusion and adsorbate-on-surface scenarios.

Client-Side Displacement¶

The client_displace_type option selects how the client (C++ code) picks the epicenter when the displacement is performed client-side rather than by the server:

  • random — uniform random atom

  • last_atom — the last atom in the configuration

  • min_coordinated — the atom with the fewest neighbours

  • not_fcc_or_hcp — an atom whose local structure is neither FCC nor HCP

  • listed_atoms — an atom from displace_atom_list (parsed from the INI config; no server displacement file needed)

  • load — read a displacement vector from a file written by the server

Configuration¶

[Saddle Search]

See also¶

  • Dimer method for the eigenmode method used during the saddle search

  • Process Search for automated saddle search + minimization

  • Nudged Elastic Band for finding paths when both endpoints are known

  • NEB modularization for the eigenmode variant implementation (dimer, improved dimer, Lanczos, GPR dimer)

References¶

Previous
Adaptive Kinetic Monte Carlo
Next
Basin Hopping

2026, the eOn developers

Made with Sphinx and Shibuya theme.