ARTnSaddleSearch

class ARTnSaddleSearch(constraints=None, initial_direction_generator=None, index_selector=None, active_sphere=None, min_move_distance=None, adaptive_displacement=False, max_forces=None, max_steps=None, max_step_length=None, optimizer_method=None, lanczos_relative_error=None, lanczos_maximum_iterations=None, finite_difference=None, finite_difference_method=None, threshold_orthogonal_steps=None, inflection_threshold=None, reorthogonalize=None)

Class for performing a saddle search using the ARTn algorithm.

Parameters:
  • constraints (list of ints) – The atoms that should be constrained during the process search.
    Default: []

  • initial_direction_generator (DirectionGenerator) – The generator for the initial displacements.
    Default: RandomDirection

  • index_selector (callable) – A callable to select the indices to displace. Takes as input the current configuration and returns the indices to displace.

  • active_sphere – This argument is used to control the radius of an “active sphere” around the atoms selected by the index_selector argument. All atoms that are outside this sphere will be constrained.

  • min_move_distance (PhysicalQuantity of type length) – The minimum distance that the selected indices must have moved between reactant and saddle. All saddle configurations that do not meet this criteria will be discarded.

  • adaptive_displacement (bool) – When using adaptive displacement the initial atom displacement magnitude will be set dynamically. The chosen magnitude will be 0.8 multiplied with the average distance between reactant and saddle point. This will overewrite the value set in by the initial_direction_generator.

  • max_forces (PhysicalQuantity of type force) – The maximum forces allowed in the orthogonal optimization.
    Default: 0.01*eV/Angstrom

  • max_steps (int) – The maximum number of uphill steps and orthogonal steps.
    Default: 200

  • max_step_length (PhysicalQuantity of type length) – The maximum step length for the uphill steps and orthogonal steps.
    Default: 0.1*Angstrom

  • optimizer_method (list of OptimizerMethod) – The optimizer method to use.
    Default: LBFGS

  • lanczos_relative_error (float) – The relative error for the Lanczos algorithm.
    Default: 0.0001

  • lanczos_maximum_iterations (int) – The maximum number of iterations for the Lanczos algorithm.
    Default: 20

  • finite_difference (PhysicalQuantity of type length) – The step size for the finite difference estimation of the second derivatives.
    Default: 0.01*Angstrom

  • finite_difference_method (Forward | Central) – The type of finite difference used to estimate the second derivatives.
    Default: Central

  • threshold_orthogonal_steps (int) – The maximum number of orthogonal steps below the inflection point.
    Default: 5

  • inflection_threshold (PhysicalQuantity of type energy per length squared=) – The threshold for the inflection point of the energy after which the algorithm changes from following the initial direction to the minimum mode. Uses the current estimate of the lowest eigenvalue. A value of 0.0*eV/Angstrom**2 means that the actual inflection point is used. Values smaller than 0.0*eV/Angstrom**2 will cause the switching to be delayed.
    Default: 0.0*eV/Angstrom**2

reset()

Reset the direction generator.

run(reactant_configuration)

Run the saddle search algorithm.

Parameters:

reactant_configuration (AtomicConfiguration) – The configuration to start the search from.

Returns:

The data from the saddle search.

Return type:

SaddleSearchData

setRandomSeed(seed)

Set the random seed for the initial direction generator.

Parameters:

seed (int) – The random seed.

Notes

ARTnSaddleSearch is one of the three saddle search methods available for use in AdaptiveKineticMonteCarlo. It uses the original Activation Relaxation Technique nouveau (ARTn) as described in [1] and [2].

ARTnSaddleSearch requires an initial direction which is used to initiate the saddle search, controlled by the initial_direction_generator argument. The direction generator should be a callable that returns a vector. This callable will be used to generate a configuration from which the saddle search is started. Therefore, care must be taken so that it returns a vector of the correct dimensionality. There are two pre-made direction generators available. The RandomDirectionGenerator generates a random direction, while the HypersphereDirection generates a radial vector on a hypersphere of given radius. Each time a new saddle search is initiated, a new initial direction is generated.

Note that the magnitude argument of the initial direction generator is ignored when using ARTnSaddleSearch.

In addition to the initial direction, one can specify which atom(s) to displace. This is done using the index_selector argument. This argument can be either a list of indices or a (picklable) callable.