UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

68 lines (67 loc) 2.07 kB
Clazz.declarePackage ("JM.FF"); Clazz.load (["JM.FF.Calculation"], "JM.FF.UFFOOPCalc", null, function () { c$ = Clazz.declareType (JM.FF, "UFFOOPCalc", JM.FF.Calculation); Clazz.overrideMethod (c$, "setData", function (calc, ib, elemNo, dd) { this.b = this.calcs.minAtoms[ib]; var atomList = this.b.getBondedAtomIndexes (); this.a = this.calcs.minAtoms[this.ia = atomList[0]]; this.c = this.calcs.minAtoms[this.ic = atomList[1]]; this.d = this.calcs.minAtoms[this.id = atomList[2]]; var a0 = 1.0; var a1 = -1.0; var a2 = 0.0; var koop = 25.1208; switch (elemNo) { case 6: if (this.b.sType === "C_2" && this.b.hCount > 1 || this.b.sType === "C_2+" || this.a.sType === "O_2" || this.c.sType === "O_2" || this.d.sType === "O_2") { koop += 184.2192; break; }break; case 7: case 8: break; default: koop = 92.1096; var phi = 0.017453292519943295; switch (elemNo) { case 15: phi *= 84.4339; break; case 33: phi *= 86.9735; break; case 51: phi *= 87.7047; break; case 83: phi *= 90.0; break; } var cosPhi = Math.cos (phi); a0 = cosPhi * cosPhi; a1 = -2.0 * cosPhi; a2 = 1.0; } koop /= 3.0; calc.addLast ([[this.ia, ib, this.ic, this.id], [koop, a0, a1, a2, koop * 10]]); calc.addLast ([[this.ic, ib, this.id, this.ia], [koop, a0, a1, a2, koop * 10]]); calc.addLast ([[this.id, ib, this.ia, this.ic], [koop, a0, a1, a2, koop * 10]]); }, "JU.Lst,~N,~N,~N"); Clazz.overrideMethod (c$, "compute", function (dataIn) { this.getPointers (dataIn); var koop = (this.calcs.isPreliminary ? this.dData[4] : this.dData[0]); var a0 = this.dData[1]; var a1 = this.dData[2]; var a2 = this.dData[3]; this.calcs.setOopVariables (this, true); var cosTheta = Math.cos (this.theta); this.energy = koop * (a0 + a1 * cosTheta + a2 * cosTheta * cosTheta); if (this.calcs.gradients) { this.dE = koop * (a1 * Math.sin (this.theta) + a2 * 2.0 * Math.sin (this.theta) * cosTheta); this.calcs.addForces (this, 4); }if (this.calcs.logging) this.calcs.appendLogData (this.calcs.getDebugLine (4, this)); return this.energy; }, "~A"); });