Coverage for gamdpy/interactions/potential_functions/LJ_12_6_sigma_epsilon.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-14 15:55 +0200

1import numpy as np 

2import numba 

3import math 

4from numba import cuda 

5 

6def LJ_12_6_sigma_epsilon(dist, params): 

7 """ The 12-6 Lennard-Jones potential 

8  

9 .. math:: 

10  

11 u(r) = 4\\epsilon( (r/\\sigma)^{-12} - (r/\\sigma)^{-6} ) 

12  

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. 

15  

16 Parameters 

17 ---------- 

18  

19 dist : float 

20 Distance between particles 

21  

22 params : array-like 

23 σ, ε 

24 

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 

31 

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) 

37