Source code for gamdpy.interactions.potential_functions.LJ_12_6

import numba

[docs] def LJ_12_6(dist, params): """ The 12-6 Lennard-Jones potential .. math:: u(r) = A_{12} r^{-12} + A_6 r^{-6} See :func:`gamdpy.apply_shifted_potential_cutoff` for a usage example of a shifted potential cutoff. Parameters ---------- dist : float Distance between particles params : array-like :math:`A_{12}`, :math:`A_{6}` Returns ------- u : float Potential energy, :math:`u(r)` s : float Force multiplier, :math:`-u'(r)/r` umm: float Second derivative of the potential energy, :math:`u''(r)` """ A12 = params[0] # Um(r) = -12*A12*r**-13 - 6*A6*r**-7 A6 = params[1] # Umm(r) = 13*12*A12*r**-14 + 7*6*A6*r**-8 invDist = numba.float32(1.0) / dist # s = -Um/r = 12*A12*r**-14 + 6*A6*r**-8, Fx = s*dx u = A12 * invDist ** 12 + A6 * invDist ** 6 s = numba.float32(12.0) * A12 * invDist ** 14 + numba.float32(6.0) * A6 * invDist ** 8 umm = numba.float32(156.0) * A12 * invDist ** 14 + numba.float32(42.0) * A6 * invDist ** 8 return u, s, umm # U(r), s == -U'(r)/r, U''(r)