From 1b2d7a202ad6f83b4ab43f848f06c611884a593b Mon Sep 17 00:00:00 2001 From: __sp__ Date: Fri, 31 Mar 2017 20:42:19 -0400 Subject: [PATCH] More minor speedups. --- pymatgen_diffusion/neb/pathfinder.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pymatgen_diffusion/neb/pathfinder.py b/pymatgen_diffusion/neb/pathfinder.py index 998dc916..50715397 100644 --- a/pymatgen_diffusion/neb/pathfinder.py +++ b/pymatgen_diffusion/neb/pathfinder.py @@ -218,11 +218,12 @@ def _get_funcs_and_forces(self, x): """ funcs = [] funcs_prime = [] - natoms = np.shape(self.translations)[1] + trans = self.translations + natoms = trans.shape[1] for ni in range(len(x) - 2): - vec = np.array([x[ni + 1, i] - x[ni + 1] - - self.translations[ni, i] for i in range(natoms)]) + vec = np.array([x[ni + 1, i] - x[ni + 1] - trans[ni, i] + for i in range(natoms)]) trial_dist = np.linalg.norm(vec, axis=2) aux = -2 * (trial_dist - self.target_dists[ni]) * self.weights[ni] \ @@ -233,7 +234,7 @@ def _get_funcs_and_forces(self, x): self.target_dists[ni]) ** 2 * self.weights[ni]) # "True force" derived from the objective function. - grad = [np.dot(aux[i], vec[i]) for i in range(natoms)] + grad = np.sum(aux[:, :, None] * vec, axis=1) funcs.append(func) funcs_prime.append(grad)