Clazz.declarePackage ("J.quantum"); Clazz.load (null, "J.quantum.QuantumCalculation", ["JU.P3", "J.quantum.QMAtom", "JU.Escape", "$.Logger"], function () { c$ = Clazz.decorateAsClass (function () { this.doDebug = false; this.bsExcluded = null; this.integration = NaN; this.voxelData = null; this.voxelDataTemp = null; this.countsXYZ = null; this.points = null; this.xMin = 0; this.xMax = 0; this.yMin = 0; this.yMax = 0; this.zMin = 0; this.zMax = 0; this.qmAtoms = null; this.atomIndex = 0; this.thisAtom = null; this.firstAtomOffset = 0; this.xBohr = null; this.yBohr = null; this.zBohr = null; this.originBohr = null; this.stepBohr = null; this.nX = 0; this.nY = 0; this.nZ = 0; this.X = null; this.Y = null; this.Z = null; this.X2 = null; this.Y2 = null; this.Z2 = null; this.rangeBohrOrAngstroms = 10; this.unitFactor = 1.8897161; this.volume = 1; Clazz.instantialize (this, arguments); }, J.quantum, "QuantumCalculation"); Clazz.prepareFields (c$, function () { this.originBohr = Clazz.newFloatArray (3, 0); this.stepBohr = Clazz.newFloatArray (3, 0); }); Clazz.defineMethod (c$, "getIntegration", function () { return this.integration; }); Clazz.defineMethod (c$, "initialize", function (nX, nY, nZ, points) { this.initialize0 (nX, nY, nZ, points); }, "~N,~N,~N,~A"); Clazz.defineMethod (c$, "initialize0", function (nX, nY, nZ, points) { if (points != null) { this.points = points; nX = nY = nZ = points.length; }this.nX = this.xMax = nX; this.nY = this.yMax = nY; this.nZ = this.zMax = nZ; if (this.xBohr != null && this.xBohr.length >= nX) return; this.xBohr = Clazz.newFloatArray (nX, 0); this.yBohr = Clazz.newFloatArray (nY, 0); this.zBohr = Clazz.newFloatArray (nZ, 0); this.X = Clazz.newFloatArray (nX, 0); this.Y = Clazz.newFloatArray (nY, 0); this.Z = Clazz.newFloatArray (nZ, 0); this.X2 = Clazz.newFloatArray (nX, 0); this.Y2 = Clazz.newFloatArray (nY, 0); this.Z2 = Clazz.newFloatArray (nZ, 0); }, "~N,~N,~N,~A"); Clazz.defineMethod (c$, "setupCoordinates", function (originXYZ, stepsXYZ, bsSelected, xyz, atoms, points, renumber) { if (atoms == null) atoms = xyz; if (points == null) { this.volume = 1; for (var i = 3; --i >= 0; ) { this.originBohr[i] = originXYZ[i] * this.unitFactor; this.stepBohr[i] = stepsXYZ[i] * this.unitFactor; this.volume *= this.stepBohr[i]; } JU.Logger.info ("QuantumCalculation:\n origin = " + JU.Escape.eAF (originXYZ) + "\n steps = " + JU.Escape.eAF (stepsXYZ) + "\n origin(Bohr)= " + JU.Escape.eAF (this.originBohr) + "\n steps(Bohr)= " + JU.Escape.eAF (this.stepBohr) + "\n counts= " + this.nX + " " + this.nY + " " + this.nZ); }this.qmAtoms = new Array (renumber ? bsSelected.cardinality () : xyz.length); var isAll = (bsSelected == null); var i0 = (isAll ? this.qmAtoms.length - 1 : bsSelected.nextSetBit (0)); for (var i = i0, j = 0; i >= 0; i = (isAll ? i - 1 : bsSelected.nextSetBit (i + 1))) this.qmAtoms[renumber ? j++ : i] = new J.quantum.QMAtom (i, xyz[i], atoms[i], this.X, this.Y, this.Z, this.X2, this.Y2, this.Z2, this.unitFactor); }, "~A,~A,JU.BS,~A,~A,~A,~B"); Clazz.defineMethod (c$, "processPt", function (pt) { this.doDebug = false; if (this.points == null || this.nX != 1) this.initializeOnePoint (); this.points[0].setT (pt); this.voxelData[0][0][0] = this.voxelDataTemp[0][0][0] = 0; this.setXYZBohr (this.points); this.processPoints (); return this.voxelData[0][0][0]; }, "JU.T3"); Clazz.defineMethod (c$, "processPoints", function () { this.process (); }); Clazz.defineMethod (c$, "initializeOnePoint", function () { this.initializeOnePointQC (); }); Clazz.defineMethod (c$, "initializeOnePointQC", function () { this.points = new Array (1); this.points[0] = new JU.P3 (); if (this.voxelData == null || this.voxelData === this.voxelDataTemp) { this.voxelData = this.voxelDataTemp = Clazz.newFloatArray (1, 1, 1, 0); } else { this.voxelData = Clazz.newFloatArray (1, 1, 1, 0); this.voxelDataTemp = Clazz.newFloatArray (1, 1, 1, 0); }this.xMin = this.yMin = this.zMin = 0; this.initialize (1, 1, 1, this.points); }); Clazz.defineMethod (c$, "setXYZBohr", function (points) { this.setXYZBohrI (this.xBohr, 0, this.nX, points); this.setXYZBohrI (this.yBohr, 1, this.nY, points); this.setXYZBohrI (this.zBohr, 2, this.nZ, points); }, "~A"); Clazz.defineMethod (c$, "setXYZBohrI", function (bohr, i, n, points) { if (points != null) { var x = 0; for (var j = 0; j < n; j++) { switch (i) { case 0: x = points[j].x; break; case 1: x = points[j].y; break; case 2: x = points[j].z; break; } bohr[j] = x * this.unitFactor; } return; }bohr[0] = this.originBohr[i]; var inc = this.stepBohr[i]; for (var j = 0; ++j < n; ) bohr[j] = bohr[j - 1] + inc; }, "~A,~N,~N,~A"); Clazz.defineMethod (c$, "setMinMax", function (ix) { this.yMax = this.zMax = (ix < 0 ? this.xMax : ix + 1); this.yMin = this.zMin = (ix < 0 ? 0 : ix); }, "~N"); Clazz.defineStatics (c$, "bohr_per_angstrom", 1.8897161); });