rbTorsionForce.cl 718 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
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cosangle = -cosangle;
float cosFactor = cosangle;
float dEdAngle = -torsionParams.s1;
float rbEnergy = torsionParams.s0;
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);