ImageDependentPairPotential¶
- class ImageDependentPairPotential(spring_constant=None, constraints=None, break_symmetry=None, exponent=None, max_forces=None, max_steps=None, max_step_length=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: 5.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.
exponent (float) – The exponent used in the 1/distance weight function. The larger the exponent the more short bonds are emphasized. Default: 4.0.
max_forces (PhysicalQuantity of type eV/Ang) – The maximum forces when the optimization should stop. Default: 0.02*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.
memory_size (int) – The maximum number of previous steps that will be stored in memory in order to approximate the Hessian matrix. Default: 9
- breakSymmetry()¶
- Returns:
True, if the symmetry should be broken.
- Return type:
bool
- constraints()¶
- Returns:
The constrained atoms.
- Return type:
list of type int
- exponent()¶
- Returns:
The exponent used in the 1/distance weight function. The larger the exponent the more short bonds are emphasized.
- Return type:
float
- 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 use for the LBFGS method.
- Return type:
int
- 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 ImageDependentPairPotential
[1] (IDPP) class is a robust
interpolation algorithm for generating initial images for a NudgedElasticBand
(NEB) in
Cartesian coordinates. Compared to linear interpolation, it can reduce the computational effort
needed for optimizing the NEB path due to finding a initial guess closer to the minimum path, in
particular if rotations are involved. Furthermore the IDPP can improve convergence of electronic
structure calculations by avoiding atoms getting unphysically close.
The pairwise distances \(d_{ij}\) of atom pairs \(i, j\) are scaled linearly between the the initial (\(\alpha\)) and final (\(\beta\)) images. This defines the target values for the pairwise distances at the image with index \(\kappa\),
with \(p\) being the total number of images.
Since there are more distances than independent degrees of freedom, the interpolated atomic coordinates cannot satisfy all distance constraints rigorously. Therefore the images in the IDPP-path are optimized using an objective function \(S_{\kappa}^{IDPP}\) that attains its minimum when the pair distances in an image are as close to the target values as possible:
where \(\sigma=x, y, z\) and \(\omega=1/d^{exponent}\) is a weight function whose exponent can be used to penalize short bonds.