UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

40 lines (39 loc) 1.6 kB
Clazz.declarePackage ("JM.FF"); Clazz.load (["JM.FF.Calculation"], "JM.FF.MMFFSBCalc", null, function () { c$ = Clazz.declareType (JM.FF, "MMFFSBCalc", JM.FF.Calculation); Clazz.defineMethod (c$, "setData", function (calc, angle) { if (this.calcs.isLinear (angle.data[1])) return; var data = this.calcs.getParameter (angle.sbKey); var datakat0 = this.calcs.getParameterObj (angle); var dataij = this.calcs.getParameter (this.calcs.minBonds[angle.data[3]]); var datajk = this.calcs.getParameter (this.calcs.minBonds[angle.data[4]]); if (data == null || datakat0 == null || dataij == null || datajk == null) return; var theta0 = datakat0[1]; var r0ij = dataij[1]; var r0jk = datajk[1]; calc.addLast ([angle.data, [data[0], theta0, r0ij], angle.sbKey]); calc.addLast ([[angle.data[2], angle.data[1], angle.data[0]], [data[1], theta0, r0jk], angle.sbKey]); }, "JU.Lst,JM.MinAngle"); Clazz.overrideMethod (c$, "compute", function (dataIn) { this.key = dataIn[2]; this.getPointers (dataIn); var k = 2.51210 * this.dData[0]; var t0 = this.dData[1]; var r0_ab = this.dData[2]; this.calcs.setPairVariables (this); this.calcs.setAngleVariables (this); var dr_ab = this.rab - r0_ab; this.delta = this.theta * 57.29577951308232 - t0; this.energy = k * dr_ab * this.delta; if (this.calcs.logging) this.calcs.appendLogData (this.calcs.getDebugLine (2, this)); if (this.calcs.gradients) { this.dE = k * dr_ab; this.calcs.addForces (this, 3); this.calcs.setPairVariables (this); this.dE = k * this.delta; this.calcs.addForces (this, 2); }return this.energy; }, "~A"); });