SequentialImageDependentPairPotential

class SequentialImageDependentPairPotential(spring_constant=None, constraints=None, break_symmetry=None, max_forces=None, max_steps=None, max_step_length=None, optimizer_method=None, memory_size=None)

Use the Image Dependent Pair Potential method for interpolating images.

Parameters:
  • spring_constant (PhysicalQuantity of type force per length) – The spring constant used between the images.
    Default: 1.0*eV/Ang**2.

  • constraints (sequence of ints | list of str | str) – List of atom indices that are kept fixed during interpolation or the list of tags of the atoms whose positions should be constrained.
    Default: []

  • break_symmetry (bool) – If the symmetry should be broken. This can be necessary for interpolation to work and to prevent unphysically close atoms if the endpoints are symmetry equivalent.
    Default: False.

  • max_forces (PhysicalQuantity of type eV/Ang) – The maximum forces when the optimization should stop.
    Default: 0.05*eV/Ang.

  • max_steps (int) – The maximum number of optimization steps to take after adding an image.
    Default: 200.

  • max_step_length (PhysicalQuantity of type length) – The maximum step length the optimizer may take.
    Default: 0.2*Ang.

  • optimizer_method (FIRE | LBFGS.) – The optimizer to use for optimizing the structure.
    Default: LBFGS

Returns:

The generated images.

Return type:

list of MoleculeConfiguration | BulkConfiguration | DeviceConfiguration | SurfaceConfiguration classes

breakSymmetry()
Returns:

True, if the symmetry should be broken.

Return type:

bool

constraints()
Returns:

The constrained atoms.

Return type:

list of type int

interpolate(neb)

Interpolate the given NEB and set the new images on it. The interpolation algorithm on the returned NEB is replaced by the regular Image Dependent Pair Potential algorithm.

Parameters:

neb (NudgedElasticBand) – The NEB to interpolate.

Returns:

The interpolated NEB or None if the interpolation failed.

Return type:

NudgedElasticBand | None

maxForces()
Returns:

The maximum forces when the optimization should stop.

Return type:

PhysicalQuantity of type eV/Ang

maxStepLength()
Returns:

The maximum step length the optimizer may take.

Return type:

PhysicalQuantity of type length

maxSteps()
Returns:

The maximum number of optimization steps to take after adding an image.

Return type:

int

memorySize()
Returns:

The memory size which is used for the LBFGS method.

Return type:

int

optimizerMethod()
Returns:

The optimizer to use for optimizing the structure.

Return type:

FIRE | LBFGS

setConstraints(constraints)

Set the constraints.

Parameters:

constraints (sequence of ints | list of str | str) – List of atom indices that are kept fixed during interpolation or the list of tags of the atoms whose positions should be constrained.

springConstant()
Returns:

The spring constant used between the images.

Return type:

PhysicalQuantity of type force per length

tags()
Returns:

The tags used for defining the constraints.

Return type:

bool

uniqueString()

Return a unique string representing the state of the object.

Notes

The standard ImageDependentPairPotential (IDPP) improves upon LinearInterpolation of NudgedElasticBand by avoiding close atoms as a result of rotations or translations. However, the IDPP itself starts from a linear initial path which can lead to unphysical configurations for complex systems with many moving atoms.

The sequential image dependent pair potential [1] addresses this shortcoming of the IDPP by building the path sequentially, starting from the end points and adding images one by one.