OpenMPCD
test_FENE.py
2 
3 def test_constructor_getK_get_l_0_getR():
4  import pytest
5 
6  with pytest.raises(TypeError):
7  FENE([1], 1, 1)
8 
9  with pytest.raises(TypeError):
10  FENE(1, [1], 1)
11 
12  with pytest.raises(TypeError):
13  FENE(1, 1, [1])
14 
15  with pytest.raises(ValueError):
16  FENE(1, 1, 0)
17 
18  with pytest.raises(ValueError):
19  FENE(1, 1, -1.5)
20 
21  fene = FENE(1, 2.5, 3)
22 
23 
24  assert isinstance(fene.getK(), float)
25  assert fene.getK() == 1.0
26 
27  assert isinstance(fene.get_l_0(), float)
28  assert fene.get_l_0() == 2.5
29 
30  assert isinstance(fene.getR(), float)
31  assert fene.getR() == 3.0
32 
33 
34 def test_getPotential():
35  import math
36  import pytest
37 
38  from MPCDAnalysis.Vector3DReal import Vector3DReal
39 
40  K = 2.0
41  R = 10.0
42  l_0 = 3.0
43  fene = FENE(K, l_0, R)
44 
45  with pytest.raises(TypeError):
46  fene.getPotential([1])
47  with pytest.raises(ValueError):
48  fene.getPotential(-1)
49 
50  with pytest.raises(ValueError):
51  fene.getPotential(Vector3DReal(l_0 + R, 0, 0))
52  with pytest.raises(ValueError):
53  fene.getPotential(l_0 + R)
54  with pytest.raises(ValueError):
55  fene.getPotential(Vector3DReal(l_0 + R + 0.1, 0, 0))
56  with pytest.raises(ValueError):
57  fene.getPotential(l_0 + R + 0.1)
58 
59  r = Vector3DReal(0, 0, 0)
60  expected = -0.5 * K * R * R * math.log(1 - (l_0 / R) ** 2)
61  assert fene.getPotential(r) == expected
62  assert fene.getPotential(r.getLength()) == expected
63 
64  for i in range(0, 100):
65  r = Vector3DReal(-0.1 + i, i * 0.1, 2 * i)
66  frac = (r.getLength() - l_0) / R
67 
68  if frac ** 2 >= 1:
69  with pytest.raises(ValueError):
70  fene.getPotential(r)
71  continue
72 
73  expected = -0.5 * K * R * R * math.log(1 - frac ** 2);
74  assert fene.getPotential(r) == expected
75  assert fene.getPotential(r.getLength()) == expected
MPCDAnalysis.PairPotentials.FENE
Definition: FENE.py:1
MPCDAnalysis.Vector3DReal
Definition: Vector3DReal.py:1