Coverage for gamdpy/interactions/potential_functions/harmonic_bond_function.py: 45%

11 statements  

« 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 

5 

6def harmonic_bond_function(dist: float, params: np.ndarray) -> tuple: 

7 """ Harmonic bond potential 

8 

9 .. math:: 

10 

11 u(r) = \\frac{1}{2} k (r - r_0)^2 

12 

13 Parameters 

14 ---------- 

15 

16 dist : float 

17 Distance between particles 

18 

19 params : array-like 

20 r₀, k 

21 

22 Returns 

23 ------- 

24 

25 u : float 

26 Potential energy 

27 s : float 

28 Force multiplier, -u'(r)/r 

29 umm : float 

30 Second derivative of potential energy 

31 

32 See Also 

33 -------- 

34 

35 gamdpy.Bonds 

36 

37 """ 

38 length = params[0] 

39 strength = params[1] 

40 

41 u = numba.float32(0.5) * strength * (dist - length) ** 2 

42 s = -strength * (dist - length) / dist 

43 umm = strength 

44 return u, s, umm # U(r), s == -U'(r)/r, U''(r) 

45