Difference between revisions of "OBForceFieldMMFF94"

From Open Babel
Jump to: navigation, search
Line 13: Line 13:
 
The intent in the future is to produce a full, validated MMFF94 implementation.
 
The intent in the future is to produce a full, validated MMFF94 implementation.
  
=== Bond Stretching ===
+
=== Parameters ===
==== Energy ====
+
[[Image:BondStretchingEnergy.png]]
+
  
<tex>E_{bond}=\frac{1}{2}143.9325k_{b}(r_{ab}-r_{ab}^0)^2(1+cs(r_{ab}-r_{ab}^0)+\frac{7}{12}cs^2(r_{ab}-r_{ab}^0)^2)</tex>
+
The MMFF94 parameters can be found in the data/mmff*.par files.
  
<tex>k_b</tex>: bond stretching force constant (mmffbnond.prm)
+
=== Functional form ===
  
<tex>r_{ab}^0</tex>: ideal bond length (mmffbnond.prm)
+
==== Bond Stretching ====
  
<tex>r_{ab}</tex>: bond length between atoms a and b
+
<tex>E_{bond}=\frac{1}{2}143.9325k_{b}(r_{ab}-r_{ab}^0)^2(1+cs(r_{ab}-r_{ab}^0)+\frac{7}{12}cs^2(r_{ab}-r_{ab}^0)^2)</tex> (1)
  
<tex>cs</tex>: cubic stretching constant (-2.0)
+
<tex>k_b</tex>: bond stretching force constant (mmffbond.prm)
  
The bond length can be calculated from the coordinates of the atoms <tex>a(x_a,y_a,z_a)</tex> and <tex>b(x_b,y_b,z_b)</tex>.
+
<tex>r_{ab}^0</tex>: ideal bond length (mmffbond.prm)
  
<tex>r_{ab} = \sqrt{(x_a-x_b)^2+(y_a-y_b)^2+(z_a-z_b)^2}</tex>
+
<tex>r_{ab}</tex>: bond length between atoms a and b
==== Parameters ====
+
==== Forces ====
+
We can also calculate the forces on each atom by calculating the negative gradient.
+
  
<tex>\bf{F_a}=-\nabla_a E_{bond}=-\left(\frac{\partial E_{bond}}{\partial x_a},\frac{\partial E_{bond}}{\partial y_a},\frac{\partial E_{bond}}{\partial z_a}\right)</tex>
+
<tex>cs</tex>: cubic stretching constant (-2.0)
  
note: the force <tex>\bf{F_a}</tex> is a vector, the energy <tex>E_{bond}</tex> is a scalar.
+
==== Angle Bending ====
  
<tex>\frac{\partial E_{bond}}{\partial x_a}=\frac{\partial E_{bond}}{\partial r_{ab}}\frac{\partial r_{ab}}{\partial x_a}</tex>
+
<tex>E_{angle}=\frac{1}{2}0.043844k_a(\theta_{abc}-\theta_{abc}^0)^2(1+cb(\theta_{abc}-\theta_{abc}^0))</tex> (2)
  
<tex>\frac{\partial E_{bond}}{\partial r_{ab}}=143.9325k_{b}(r_{ab}-r_{ab}^0)(1+1.5cs(r_{ab}-r_{ab}^0)+\frac{7}{12}2cs^2(r_{ab}-r_{ab}^0)^2)</tex>
+
<tex>k_a</tex>: angle bending force constant (mmffang.prm)
  
We start by calculating the partial derivative with respect to <tex>x_a</tex>.
+
<tex>\theta_{abc}^0</tex>: ideal angle (mmffang.prm)
  
<tex>\frac{\partial r_{ab}}{\partial x_a}=\frac{\partial \sqrt{(x_a-x_b)^2+(y_a-y_b)^2+(z_a-z_b)^2}}{\partial x_a}=\frac{x_a-x_b}{\sqrt{(x_a-x_b)^2+(y_a-y_b)^2+(z_a-z_b)^2}}=\frac{x_a-x_b}{r_{ab}}</tex>
+
<tex>\theta_{abc}</tex>: angle
  
For <tex>y_a</tex> and <tex>z_a</tex> we find <tex>\frac{y_a-y_b}{r_{ab}}</tex> and <tex>\frac{z_a-z_b}{r_{ab}}</tex>.  
+
<tex>cb</tex>: cubic bending constant (-0.007)
  
<tex>\left(\frac{x_a-x_b}{r_{ab}},\frac{y_a-y_b}{r_{ab}},\frac{z_a-z_b}{r_{ab}}\right)=\frac{\bf{r_{ab}}}{r_{ab}}</tex>
+
==== Bend Stretching ====
  
<tex>\bf{F_a}=-143.9325k_{b}(r_{ab}-r_{ab}^0)(1+1.5cs(r_{ab}-r_{ab}^0)+\frac{7}{12}2cs^2(r_{ab}-r_{ab}^0)^2)\frac{\bf{r_{ab}}}{r_{ab}}</tex>
+
<tex>E_{strbnd}=2.51210(k_{abc}\Delta r_{ab} + k_{cba}\Delta r_{bc})\Delta\theta</tex> (3)
 
+
=== Angle Bending ===
+
[[Image:AngleBendingEnergy.png]]
+
 
+
<tex>E_{angle}=\frac{1}{2}0.043844k_a(\theta_{abc}-\theta_{abc}^0)^2(1+cb(\theta_{abc}-\theta_{abc}^0))</tex>
+
  
 
<tex>k_a</tex>: angle bending force constant (mmffang.prm)
 
<tex>k_a</tex>: angle bending force constant (mmffang.prm)
Line 65: Line 55:
 
<tex>cb</tex>: cubic bending constant (-0.007)
 
<tex>cb</tex>: cubic bending constant (-0.007)
  
The angle can be calculated from the coordinates of the atoms <tex>a(x_a,y_a,z_a)</tex>, <tex>b(x_b,y_b,z_b)</tex> and <tex>c(x_c,y_c,z_c)</tex>.
+
==== Torsional ====
 
+
==== Out-Of-Plane Bending ====
<tex>\theta_{abc}=arccos\left(\frac{\bf{r_{ab}}\cdot\bf{r_{bc}}}{r_{ab}r_bc}\right)=arccos\left(\frac{(x_ax_b+y_ay_b+z_az_b)}{\sqrt{(x_a-x_b)^2+(y_a-y_b)^2+(z_a-z_b)^2}\sqrt{(x_b-x_c)^2+(y_b-y_c)^2+(z_b-z_c)^2}}\right)</tex>
+
 
+
We can also calculate the forces on each atom by calculating the negative gradient.
+
 
+
<tex>\bf{F_a}=-\nabla_a E_{angle}=-\left(\frac{\partial E_{angle}}{\partial x_a},\frac{\partial E_{angle}}{\partial y_a},\frac{\partial E_{angle}}{\partial z_a}\right)</tex>
+
 
+
<tex>\frac{\partial E_{angle}}{\partial x_a}=\frac{\partial E_{angle}}{\partial \theta_{abc}}\frac{\partial \theta_{abc}}{\partial x_a}</tex>
+
 
+
<tex>\frac{\partial E_{angle}}{\partial \theta_{abc}}=0.043844k_{a}(\theta_{abc}-\theta_{abc}^0)(1+1.5cb(\theta_{abc}-\theta_{abc}^0))</tex>
+
 
+
We start by calculating the partial derivative with respect to <tex>x_a</tex>.
+
  
<tex>\frac{\partial \theta_{abc}}{\partial x_a}=\frac{\partial arccos\left(\frac{\bf{r_{ab}}\cdot\bf{r_{bc}}}{r_{ab}r_bc}\right)}{\partial x_a}</tex>
+
<tex>E_{oop}=0.043844\frac{k_{abc:d}}{2}\chi_{abc:d}^2</tex> (5)
  
=== Bend Stretching ===
+
==== Van der Waals ====
=== Torsional ===
+
==== Electrostatic ====
=== Out-Of-Plane Bending ===
+
=== Van der Waals ===
+
=== Electrostatic ===
+
  
 
[[Category:Force_Fields]][[Category:Developer]]
 
[[Category:Force_Fields]][[Category:Developer]]

Revision as of 12:12, 15 December 2007

This class is a partial implementation of the all-atom MMFF94 force field.

References:

  1. Thomas A. Halgren, J. Comput. Chem., 17, 490-519 (1996).
  2. Thomas A. Halgren, J. Comput. Chem., 17, 520-552 (1996).
  3. Thomas A. Halgren, J. Comput. Chem., 17, 553-586 (1996).
  4. Thomas A. Halgren and Robert B. Nachbar, J. Comput. Chem., 17, 587-615 (1996).
  5. Thomas A. Halgren, J. Comput. Chem., 17, 616-641 (1996).
  6. Thomas A. Halgren, J. Comput. Chem., 20, 720-729 (1999).
  7. Thomas A. Halgren, J. Comput. Chem., 20, 730-748 (1999).

The intent in the future is to produce a full, validated MMFF94 implementation.

Parameters

The MMFF94 parameters can be found in the data/mmff*.par files.

Functional form

Bond Stretching

E_{bond}=\frac{1}{2}143.9325k_{b}(r_{ab}-r_{ab}^0)^2(1+cs(r_{ab}-r_{ab}^0)+\frac{7}{12}cs^2(r_{ab}-r_{ab}^0)^2) (1)

k_b: bond stretching force constant (mmffbond.prm)

r_{ab}^0: ideal bond length (mmffbond.prm)

r_{ab}: bond length between atoms a and b

cs: cubic stretching constant (-2.0)

Angle Bending

E_{angle}=\frac{1}{2}0.043844k_a(\theta_{abc}-\theta_{abc}^0)^2(1+cb(\theta_{abc}-\theta_{abc}^0)) (2)

k_a: angle bending force constant (mmffang.prm)

\theta_{abc}^0: ideal angle (mmffang.prm)

\theta_{abc}: angle

cb: cubic bending constant (-0.007)

Bend Stretching

E_{strbnd}=2.51210(k_{abc}\Delta r_{ab} + k_{cba}\Delta r_{bc})\Delta\theta (3)

k_a: angle bending force constant (mmffang.prm)

\theta_{abc}^0: ideal angle (mmffang.prm)

\theta_{abc}: angle

cb: cubic bending constant (-0.007)

Torsional

Out-Of-Plane Bending

E_{oop}=0.043844\frac{k_{abc:d}}{2}\chi_{abc:d}^2 (5)

Van der Waals

Electrostatic