LanczosSaddleSearch

class LanczosSaddleSearch(constraints=None, initial_direction_generator=None, index_selector=None, adaptive_displacement=False, active_sphere=None, min_move_distance=None, 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, reorthogonalize=None)

Class for performing a saddle search using the Lanczos 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.

  • 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.

  • active_sphere (PhysicalQuantity of type length) – The radius of the sphere that contains all atoms that have moved.

  • 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.

  • 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: Forward

reset()

Reset the state of the saddle search.

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

LanczosSaddleSearch is one of the three saddle search methods available for use in AdaptiveKineticMonteCarlo. The LanczosSaddleSearch method uses the Lanczos algorithm to determine the minimum mode towards the saddle point.

LanczosSaddleSearch 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. There are two pre-made direction generators available. The RandomDirection 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.

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.

When a saddle point has been found, an object of type SaddleSearchData. This object, most importantly, contains the found saddle point as well as the lowest eigenvector, of the Hessian matrix at the saddle point.