Coverage for gamdpy/interactions/potential_functions/ryckbell_dihedral.py: 42%
12 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« 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
7def ryckbell_dihedral(dihedral, params):
8 """ Ryckert-Bellemans potential
10 .. math::
12 u(\\phi) = \\sum_{n=0}^5 p_n \\cos^n(phi)
14 Parameters
15 ----------
16 dihedral: Current dihedral
17 params: Parameter array
19 Returns
20 -------
21 u: Potential energy
22 f: Force multiplier
23 """
25 cos_dihedral = math.cos(math.pi - dihedral)
27 u = f = numba.float32(0.0)
28 for n in range(6):
29 u = u + params[n]*cos_dihedral**n
30 if n > 0:
31 f = f - n*params[n]*cos_dihedral**(n-1)
33 return u, f