rbTorsionForce.cl 715 Bytes
Newer Older
Peter Eastman's avatar
Peter Eastman committed
1
float8 torsionParams = PARAMS[index];
2
3
if (theta < 0.0f)
    theta += PI;
Peter Eastman's avatar
Peter Eastman committed
4
else
5
    theta -= PI;
Peter Eastman's avatar
Peter Eastman committed
6
cosangle = -cosangle;
7
8
9
real cosFactor = cosangle;
real dEdAngle = -torsionParams.s1;
real rbEnergy = torsionParams.s0;
Peter Eastman's avatar
Peter Eastman committed
10
11
12
13
14
15
16
17
18
19
20
21
22
rbEnergy += torsionParams.s1*cosFactor;
dEdAngle -= 2.0f*torsionParams.s2*cosFactor;
cosFactor *= cosangle;
dEdAngle -= 3.0f*torsionParams.s3*cosFactor;
rbEnergy += torsionParams.s2*cosFactor;
cosFactor *= cosangle;
dEdAngle -= 4.0f*torsionParams.s4*cosFactor;
rbEnergy += torsionParams.s3*cosFactor;
cosFactor *= cosangle;
dEdAngle -= 5.0f*torsionParams.s5*cosFactor;
rbEnergy += torsionParams.s4*cosFactor;
rbEnergy += torsionParams.s5*cosFactor*cosangle;
energy += rbEnergy;
23
dEdAngle *= sin(theta);