Source code for gamdpy.interactions.potential_functions.yukawa

import numba
from math import exp

[docs] def yukawa(dist, params): r""" The Yukawa potential (simple screened Coulomb potential) .. math:: u(r) = \varepsilon \frac{\sigma}{r} \exp(-r/\sigma) Parameters ---------- dist : float Distance between particles params : array-like σ, ε """ # Extract parameters sigma = numba.float32(params[0]) # σ epsilon = numba.float32(params[1]) # ɛ # Helper variables one = numba.float32(1.0) # 1 two = numba.float32(2.0) # 2 prefactor = epsilon*sigma # A = ɛ·σ kappa = one/sigma # κ = 1/σ kappa_dist = kappa * dist # κ·r inv_dist = one / dist # 1/r inv_dist3 = inv_dist*inv_dist*inv_dist # 1/r³ exp_kappa_dist = prefactor * exp(-kappa_dist) # A·exp(-κ·r) # u(r) = A·exp(-κ·r)/r u = exp_kappa_dist * inv_dist # -u'(r)/r = A·exp(-κ·r)·(κ·r + 1)/r³ s = exp_kappa_dist * (kappa_dist + one) * inv_dist3 # u''(r) = A·exp(-κ·r)*([κ·r]² + 2κ·r + 2)/r³ d2u_dr2 = exp_kappa_dist * (kappa_dist*kappa_dist + two * kappa_dist + two) * inv_dist3 return u, s, d2u_dr2