Image dependent pair potential#
- class autode.neb.idpp.IDPP(images: Images)#
Image dependent pair potential (IDPP) objective function from https://arxiv.org/pdf/1406.1512.pdf
\[S = Σ_i Σ_{j>i} w(r_{ij}) (r_{ij}^{(k)} - r_{ij})^2\]where \(r_{ij}\) is the distance between atoms i and j and \(r_{ij}^{(k)} = r_{ij}^{(1)} + k(r_{ij}^{(N)} - r_{ij}^{(1)})/N\) for \(N\) images. The weight function is \(w(r_{ij}) = r_{ij}^{-4}\), as suggested in the paper.
- __call__(image: Image) PotentialEnergy #
Value of the IDPP objective function for a single image defined by,
\[S_k = 0.5 Σ_i Σ_{j \ne i} w(r_{ij}) (r_{ij}^{(k)} - r_{ij})^2\]where \(i\) and \(j\) enumerate over atoms for an image indexed by \(k\).
- Returns:
\(S_k\)
- Return type:
(float)
- _set_distance_matrices(images: Images) None #
For each image determine the optimum distance matrix using
\[r_{ij}^{(k)} = r_{ij}^{(1)} + k (r_{ij}^{(N)} - r_{ij}^{(1)}) / N\]and set the the diagonal indices of each distance matrix.
- grad(image: Image) ndarray #
Gradient of the potential with respect to displacement of the Cartesian components: \(\nabla S = (dS/dx_0, dS/dy_0, dS/dz_0, dS/dx_1, ...)\) where the numbers denote different atoms. For example,
\[\frac{dS}{dx_0} = -2 \sum_{i \ne j} \left[2(c-r_{ij})r_{ij}^{-6} + w(r_{ij})r_{ij}^{-1}) \right](c - r_{ij})(x_0 - x_j)\]where \(c = r_{ij}^{(k)}\).
- Returns:
\(\nabla S\)
- Return type:
(np.ndarray)