document improper amoeba better
This commit is contained in:
@ -75,6 +75,11 @@ void ImproperAmoeba::compute(int eflag, int vflag)
|
|||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
int newton_bond = force->newton_bond;
|
int newton_bond = force->newton_bond;
|
||||||
|
|
||||||
|
// conversion factors for radians to degrees and vice versa
|
||||||
|
|
||||||
|
double rad2degree = 180.0/MY_PI;
|
||||||
|
double prefactor = 1.0 / (rad2degree*rad2degree);
|
||||||
|
|
||||||
for (n = 0; n < nimproperlist; n++) {
|
for (n = 0; n < nimproperlist; n++) {
|
||||||
|
|
||||||
// in Tinker code, atom1 = D, atom2 = B, atom3 = A, atom4 = C
|
// in Tinker code, atom1 = D, atom2 = B, atom3 = A, atom4 = C
|
||||||
@ -136,13 +141,15 @@ void ImproperAmoeba::compute(int eflag, int vflag)
|
|||||||
|
|
||||||
sine = fabs(ee) / sqrt(cc*rdb2);
|
sine = fabs(ee) / sqrt(cc*rdb2);
|
||||||
sine = MIN(1.0,sine);
|
sine = MIN(1.0,sine);
|
||||||
angle = 180.0/MY_PI * asin(sine); // angle = degrees
|
|
||||||
|
|
||||||
|
// angle needs to be in degrees for Tinker formulas
|
||||||
|
// b/c opbend_3456 coeffs are in mixed units
|
||||||
|
|
||||||
|
angle = rad2degree * asin(sine);
|
||||||
dt = angle;
|
dt = angle;
|
||||||
dt2 = dt * dt;
|
dt2 = dt * dt;
|
||||||
dt3 = dt2 * dt;
|
dt3 = dt2 * dt;
|
||||||
dt4 = dt2 * dt2;
|
dt4 = dt2 * dt2;
|
||||||
double prefactor = 1.0 / (180.0/MY_PI) / (180.0/MY_PI);
|
|
||||||
e = prefactor * k[type] * dt2 * (1.0 + opbend_cubic*dt + opbend_quartic*dt2 +
|
e = prefactor * k[type] * dt2 * (1.0 + opbend_cubic*dt + opbend_quartic*dt2 +
|
||||||
opbend_pentic*dt3 + opbend_sextic*dt4);
|
opbend_pentic*dt3 + opbend_sextic*dt4);
|
||||||
eimproper += e;
|
eimproper += e;
|
||||||
|
|||||||
Reference in New Issue
Block a user