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: LBFGSlanczos_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.