Coverage for gamdpy/interactions/potential_functions/LJ_12_6_sigma_epsilon.py: 38%
13 statements
« prev ^ index » next coverage.py v7.4.4, created at 2025-06-14 15:25 +0200
« prev ^ index » next coverage.py v7.4.4, created at 2025-06-14 15:25 +0200
1import numpy as np
2import numba
3import math
4from numba import cuda
6def LJ_12_6_sigma_epsilon(dist, params):
7 """ The 12-6 Lennard-Jones potential
9 .. math::
11 u(r) = 4\\epsilon( (r/\\sigma)^{-12} - (r/\\sigma)^{-6} )
13 This is the same as the :func:`gamdpy.LJ_12_6` potential,
14 but with :math:`\\sigma` (sigma) and :math:`\\epsilon` (epsilon) as parameters.
16 Parameters
17 ----------
19 dist : float
20 Distance between particles
22 params : array-like
23 σ, ε
25 """ # LJ: U(r) = 4*epsilon( (r/sigma)**-12 + (r/sigma)**-6 )
26 sigma = params[0] # Um(r) = -24*epsilon( 2*(r/sigma)**-13 + (r/sigma)**-7 )/sigma
27 epsilon = params[1] # Umm(r) = 24*epsilon(26*(r/sigma)**-14 + 7*(r/sigma)**-8 )/sigma**2
28 OneOdist = numba.float32(
29 1.0) / dist # s = -Um/r = 24*epsilon( 2*(r/sigma)**-14 + (r/sigma)**-8 )/sigma**2, Fx = s*dx
30 sigmaOdist = sigma * OneOdist
32 u = numba.float32(4.0) * epsilon * (sigmaOdist ** 12 - sigmaOdist ** 6)
33 s = numba.float32(24.0) * epsilon * (numba.float32(2.0) * sigmaOdist ** 12 - sigmaOdist ** 6) * OneOdist ** 2
34 umm = numba.float32(24.0) * epsilon * (
35 numba.float32(26.0) * sigmaOdist ** 12 - numba.float32(7.0) * sigmaOdist ** 6) * OneOdist ** 2
36 return u, s, umm # U(r), s == -U'(r)/r, U''(r)