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

1import numpy as np 

2import numba 

3import math 

4from numba import cuda 

5 

6 

7def ryckbell_dihedral(dihedral, params): 

8 """ Ryckert-Bellemans potential 

9 

10 .. math:: 

11 

12 u(\\phi) = \\sum_{n=0}^5 p_n \\cos^n(phi)  

13 

14 Parameters 

15 ---------- 

16 dihedral: Current dihedral 

17 params: Parameter array  

18  

19 Returns 

20 ------- 

21 u: Potential energy 

22 f: Force multiplier 

23 """ 

24 

25 cos_dihedral = math.cos(math.pi - dihedral) 

26 

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) 

32 

33 return u, f 

34 

35