}
@Override
public void evaluateForce() {
Vector3d temp3d = new Vector3d();
temp3d.sub(j.getPosition(), k.getPosition());
double unitForce = getAnalyticalGradient() / temp3d.length();
Torsion gt = new Torsion();
TorsionGradients grad = gt.getGradients(i.getPosition(), j.getPosition(),
k.getPosition(), l.getPosition());
Vector3d tempI = grad.getI();
tempI.scale(unitForce);
Vector3d tempJ = grad.getJ();
tempJ.scale(unitForce);
Vector3d tempK = grad.getK();
tempK.scale(unitForce);
Vector3d tempL = grad.getL();
tempL.scale(unitForce);
i.subForce(tempI);
j.subForce(tempJ);
k.subForce(tempK);
l.subForce(tempL);