Search in sources :

Example 1 with OpenMM_AmoebaStretchBendForce_addStretchBend

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);
}
Also used : StretchBend(ffx.potential.bonded.StretchBend) OpenMM_AmoebaStretchBendForce_addStretchBend(simtk.openmm.AmoebaOpenMMLibrary.OpenMM_AmoebaStretchBendForce_addStretchBend) OpenMM_System_addConstraint(simtk.openmm.OpenMMLibrary.OpenMM_System_addConstraint) CoordRestraint(ffx.potential.nonbonded.CoordRestraint)

Aggregations

StretchBend (ffx.potential.bonded.StretchBend)1 CoordRestraint (ffx.potential.nonbonded.CoordRestraint)1 OpenMM_AmoebaStretchBendForce_addStretchBend (simtk.openmm.AmoebaOpenMMLibrary.OpenMM_AmoebaStretchBendForce_addStretchBend)1 OpenMM_System_addConstraint (simtk.openmm.OpenMMLibrary.OpenMM_System_addConstraint)1