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
« 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 harmonic_bond_function(dist: float, params: np.ndarray) -> tuple:
7 """ Harmonic bond potential
9 .. math::
11 u(r) = \\frac{1}{2} k (r - r_0)^2
13 Parameters
14 ----------
16 dist : float
17 Distance between particles
19 params : array-like
20 r₀, k
22 Returns
23 -------
25 u : float
26 Potential energy
27 s : float
28 Force multiplier, -u'(r)/r
29 umm : float
30 Second derivative of potential energy
32 See Also
33 --------
35 gamdpy.Bonds
37 """
38 length = params[0]
39 strength = params[1]
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)