use of simtk.openmm.AmoebaOpenMMLibrary.OpenMM_AmoebaStretchBendForce_addStretchBend in project ffx by mjschnie.
the class ForceFieldEnergyOpenMM method addStretchBendForce.
private void addStretchBendForce() {
StretchBend[] stretchBends = super.getStretchBends();
if (stretchBends == null || stretchBends.length < 1) {
return;
}
int nStretchBends = stretchBends.length;
amoebaStretchBendForce = OpenMM_AmoebaStretchBendForce_create();
for (int i = 0; i < nStretchBends; i++) {
StretchBend stretchBend = stretchBends[i];
int i1 = stretchBend.getAtom(0).getXyzIndex() - 1;
int i2 = stretchBend.getAtom(1).getXyzIndex() - 1;
int i3 = stretchBend.getAtom(2).getXyzIndex() - 1;
double angle = stretchBend.angleEq;
double beq0 = stretchBend.bond0Eq;
double beq1 = stretchBend.bond1Eq;
double fc0 = stretchBend.force0;
double fc1 = stretchBend.force1;
OpenMM_AmoebaStretchBendForce_addStretchBend(amoebaStretchBendForce, i1, i2, i3, beq0 * OpenMM_NmPerAngstrom, beq1 * OpenMM_NmPerAngstrom, OpenMM_RadiansPerDegree * angle, (OpenMM_KJPerKcal / OpenMM_NmPerAngstrom) * fc0, (OpenMM_KJPerKcal / OpenMM_NmPerAngstrom) * fc1);
}
OpenMM_System_addForce(system, amoebaStretchBendForce);
logger.log(Level.INFO, " Added Stretch Bends ({0})", nStretchBends);
}
Aggregations