Package org.jmol.adapter.readers.quantum
Class QCJSONReader
java.lang.Object
org.jmol.adapter.smarter.AtomSetCollectionReader
org.jmol.adapter.readers.quantum.BasisFunctionReader
org.jmol.adapter.readers.quantum.MOReader
org.jmol.adapter.readers.quantum.MoldenReader
org.jmol.adapter.readers.quantum.QCJSONReader
- All Implemented Interfaces:
GenericLineReader
A molecular structure and orbital reader for MolDen files.
See http://www.cmbi.ru.nl/molden/molden_format.html
updated by Bob Hanson invalid input: '<'hansonr@stolaf.edu> for Jmol 12.0/12.1
adding [spacegroup] [operators] [cell] [cellaxes] for Jmol 14.3.7
- Author:
- Matthew Zwier invalid input: '<'mczwier@gmail.com>
-
Nested Class Summary
Nested classes/interfaces inherited from class org.jmol.adapter.readers.quantum.BasisFunctionReader
BasisFunctionReader.MOEnergySorter
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final double
protected boolean
protected int[]
protected static final double[]
protected static final float
static final String
protected float[][]
GAMESS may need AM1, PMn, or RM1 zeta/coef dataprotected boolean
Fields inherited from class org.jmol.adapter.readers.quantum.MoldenReader
doSort, haveEnergy, loadGeometries, loadVibrations, modelAtomCount, optOnly, orbitalType, vibOnly
Fields inherited from class org.jmol.adapter.readers.quantum.MOReader
allowNoOrbitals, energyUnits, forceMOPAC, gaussianCount, gaussians, haveNboCharges, haveNboOrbitals, HEADER_GAMESS_OCCUPANCIES, HEADER_GAMESS_ORIGINAL, HEADER_GAMESS_UK_MO, HEADER_NONE, lastMoData, moTypes, orbitalsRead, shellCount
Fields inherited from class org.jmol.adapter.readers.quantum.BasisFunctionReader
alphaBeta, dfCoefMaps, haveCoefs, ignoreMOs, moData, nCoef, nOrbitals, orbitals, shells, slaterArray, slaters
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addedData, addedDataKey, addVibrations, allow_a_len_1, allowPDBFilter, ANGSTROMS_PER_BOHR, applySymmetryToBonds, asc, baseAtomIndex, baseBondIndex, binaryDoc, bsFilter, bsModels, calculationType, CELL_TYPE_CONVENTIONAL, CELL_TYPE_PRIMITIVE, CELL_TYPE_SUPER, cellSlop, centroidPacked, checkNearAtoms, continuing, debugging, desiredModelNumber, desiredSpaceGroupIndex, desiredVibrationNumber, doApplySymmetry, doCentralize, doCentroidUnitCell, doCheckUnitCell, doConvertToFractional, doPackUnitCell, doProcessLines, doReadMolecularOrbitals, dssr, fileName, fileOffset, filePath, fileScaling, fillRange, filter, filterAllHetero, filterCased, filteredPrecision, filterHetero, floatifyJavaDouble, forcePacked, getHeader, haveAtomFilter, haveModel, havePartialChargeFilter, htParams, ignoreFileSpaceGroupName, ignoreFileSymmetryOperators, ignoreFileUnitCell, ignoreStructure, iHaveFractionalCoordinates, iHaveSymmetryOperators, iHaveUnitCell, is2D, isBinary, isConcatenated, isDSSP1, isFinalized, isMolecular, isPrimitive, isSequential, isSUPERCELL, isTrajectory, latticeCells, latticeScaling, latticeType, line, lowPrecision, lstNCS, matUnitCellOrientation, merging, modDim, modelNumber, ms, mustFinalizeModelSet, next, noHydrogens, noMinimize, noPack, optimize2D, out, paramsCentroid, paramsLattice, precision, prevline, primitiveToCrystal, ptLine, ptSupercell, reader, readerName, requiresBSFilter, reverseModels, rotateHexCell, sgName, slabXY, stateScriptVersionInt, strSupercell, symmetry, templateAtomCount, thisBiomolecule, trajectorySteps, ucItems, unitCellOffset, unitCellParams, useAltNames, useFileModelNumbers, validation, vibrationNumber, vibsFractional, vwr
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected final SlaterData
addSlater
(int iAtom, int a, int b, int c, int d, double zeta, double coef) We build two data structures for each slater: int[] slaterInfo[] = {iatom, a, b, c, d} float[] slaterData[] = {zeta, coef} where psi = (coef)(x^a)(y^b)(z^c)(r^d)exp(-zeta*r) Mopac: a == -2 ==> z^2 ==> (coef)(2z^2-x^2-y^2)(r^d)exp(-zeta*r) and: b == -2 ==> (coef)(x^2-y^2)(r^d)exp(-zeta*r)protected void
addSlater
(SlaterData sd, int n) protected void
When slater basis is referred to only by "AM1" "PM6" etc., as in GAMESSvoid
createMopacSlaters
(int iAtom, int atomicNumber, float[] values, boolean allowD) protected void
createSphericalSlaterByType
(int iAtom, int atomicNumber, String type, double zeta, float coef) We have the type as a string and need to translate that to exponents for x, y, z, and r.protected static double
fact
(double f, double zeta, int n) Sincere thanks to Miroslav Kohout (DGRID) for helping me get this right -- Bob Hanson, 1/5/2010 slater scaling based on zeta, n, l, and x y z exponents.void
static float[][]
getMopacAtomZetaSPD
(String type) Retrieve the MOPAC zeta(1/bohr) [s,p,d] array by atom numberprotected static final double
getSlaterConstCartesian
(int n, double zeta, int el, int ex, int ey, int ez) scales slater using double factorials involving quantum number n, l, and xyz exponents.protected Lst
<SlaterData> protected void
protected double
scaleSlater
(int ex, int ey, int ez, int er, double zeta) overrides method in SlaterReader to allow for MOPAC's treatment of the radial exponent differently depending upon position in the periodic table -- noble gases and transition metals and for the fact that these are spherical functions (5D, not 6D) ignores any F orbitals.void
setMOData
(boolean clearOrbitals) protected final void
protected final void
setSlaters
(boolean doSort) after the vectors intinfo and floatinfo are completed, weprotected void
sortOrbitalCoefficients
(int[] pointers) sorts coefficients by atomic number for speed laterprotected void
sorts orbitals by energy rather than by symmetry so that we can use "MO HOMO" "MO HOMO - 1" "MO LUMO"Methods inherited from class org.jmol.adapter.readers.quantum.MoldenReader
checkLine, rd, sortMOs
Methods inherited from class org.jmol.adapter.readers.quantum.MOReader
addCoef, addMOData, checkNboLine, getMOHeader, getNboTypes, readMolecularOrbitals
Methods inherited from class org.jmol.adapter.readers.quantum.BasisFunctionReader
canonicalizeQuantumSubshellTag, clearOrbitals, discardPreviousAtoms, enableShell, filterMO, fixSlaterTypes, getDfCoefMaps, getDFMap, getQuantumShellTag, getQuantumShellTagID, getQuantumShellTagIDSpherical, setMO
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addAtomXYZSymName, addExplicitLatticeVector, addJmolScript, addSites, addSiteScript, appendLoadNote, appendUunitCellInfo, applySymmetryAndSetTrajectory, applySymTrajASCR, checkAndRemoveFilterKey, checkCurrentLineForScript, checkFilterKey, checkLastModel, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, discardLinesUntilStartsWith, doGetModel, doGetVibration, doPreSymmetry, fill3x3, fillDataBlock, fillDataBlockFixed, fillFloatArray, fillFrequencyData, filterAtom, filterReject, finalizeMOData, finalizeModelSet, finalizeReaderASCR, finalizeSubclassSymmetry, fixDoubleA, fixFloatA, fixFloatPt, forceSymmetry, fractionalizeCoordinates, getElementSymbol, getFilter, getFilterWithCase, getFortranFormatLengths, getInterface, getPackingRangeValue, getStrings, getSymmetry, getTokens, getTokensFloat, initializeSymmetry, initializeSymmetryOptions, initializeTrajectoryFile, isLastModel, newAtomSet, parseFloat, parseFloatRange, parseFloatStr, parseInt, parseIntAt, parseIntRange, parseIntStr, parsePrecision, parseToken, parseTokenNext, parseTokenRange, parseTokenStr, processBinaryDocument, processDOM, read3Vectors, readDataObject, readLines, readNextLine, rejectAtomName, RL, set2D, setAtomCoord, setAtomCoordScaled, setAtomCoordTokens, setAtomCoordXYZ, setChainID, setElementAndIsotope, setFilter, setFilterAtomTypeStr, setFractionalCoordinates, setIsPDB, setLoadNote, setModelPDB, setPrecision, setSpaceGroupName, setSymmetryOperator, setTransform, setUnitCell, setUnitCellItem, setup, setupASCR
-
Field Details
-
MIN_COEF
protected static final float MIN_COEF- See Also:
-
atomicNumbers
protected int[] atomicNumbers -
mopacBasis
protected float[][] mopacBasisGAMESS may need AM1, PMn, or RM1 zeta/coef data -
allowMopacDCoef
protected boolean allowMopacDCoef -
MOPAC_TYPES
- See Also:
-
scaleSlaters
protected boolean scaleSlaters -
_1_4pi
protected static final double _1_4pi- See Also:
-
fact_2n
protected static final double[] fact_2n
-
-
Constructor Details
-
QCJSONReader
public QCJSONReader()
-
-
Method Details
-
initializeReader
protected void initializeReader()- Overrides:
initializeReader
in classMoldenReader
-
finalizeSubclassReader
- Overrides:
finalizeSubclassReader
in classMoldenReader
- Throws:
Exception
-
scaleSlater
protected double scaleSlater(int ex, int ey, int ez, int er, double zeta) overrides method in SlaterReader to allow for MOPAC's treatment of the radial exponent differently depending upon position in the periodic table -- noble gases and transition metals and for the fact that these are spherical functions (5D, not 6D) ignores any F orbitals.- Parameters:
ex
-ey
-ez
-er
-zeta
-- Returns:
- scaling factor
-
setMOData
public void setMOData(boolean clearOrbitals) -
addSlaterBasis
protected void addSlaterBasis()When slater basis is referred to only by "AM1" "PM6" etc., as in GAMESS- Overrides:
addSlaterBasis
in classMOReader
-
createMopacSlaters
public void createMopacSlaters(int iAtom, int atomicNumber, float[] values, boolean allowD) -
createSphericalSlaterByType
protected void createSphericalSlaterByType(int iAtom, int atomicNumber, String type, double zeta, float coef) We have the type as a string and need to translate that to exponents for x, y, z, and r. No F here.- Parameters:
iAtom
-atomicNumber
-type
-zeta
-coef
-
-
getMopacAtomZetaSPD
Retrieve the MOPAC zeta(1/bohr) [s,p,d] array by atom number- Parameters:
type
-- Returns:
- [[zs,zp,zd],[zs,zp,zd]...] where [1] is for hydrogen, [6] is for carbon, etc.
-
addSlater
protected final SlaterData addSlater(int iAtom, int a, int b, int c, int d, double zeta, double coef) We build two data structures for each slater: int[] slaterInfo[] = {iatom, a, b, c, d} float[] slaterData[] = {zeta, coef} where psi = (coef)(x^a)(y^b)(z^c)(r^d)exp(-zeta*r) Mopac: a == -2 ==> z^2 ==> (coef)(2z^2-x^2-y^2)(r^d)exp(-zeta*r) and: b == -2 ==> (coef)(x^2-y^2)(r^d)exp(-zeta*r)- Parameters:
iAtom
- now 1-baseda
-b
-c
-d
-zeta
-coef
-
-
getSlaters
-
addSlater
-
setSlaters
protected final void setSlaters(boolean doSort) after the vectors intinfo and floatinfo are completed, we- Parameters:
doSort
- TODO
-
setMOs
-
sortOrbitalCoefficients
protected void sortOrbitalCoefficients(int[] pointers) sorts coefficients by atomic number for speed later- Parameters:
pointers
-
-
sortOrbitals
protected void sortOrbitals()sorts orbitals by energy rather than by symmetry so that we can use "MO HOMO" "MO HOMO - 1" "MO LUMO" -
fact
protected static double fact(double f, double zeta, int n) Sincere thanks to Miroslav Kohout (DGRID) for helping me get this right -- Bob Hanson, 1/5/2010 slater scaling based on zeta, n, l, and x y z exponents. sqrt[(2zeta)^(2n + 1) * f / 4pi / (2n)!] where f = (2 el + 1)!! / (2 ex - 1)!! / (2 ey - 1)!! / (2 ez - 1)!! The double factorials are precalculated.- Parameters:
f
-zeta
-n
-- Returns:
- scaled exponent
-
getSlaterConstCartesian
protected static final double getSlaterConstCartesian(int n, double zeta, int el, int ex, int ey, int ez) scales slater using double factorials involving quantum number n, l, and xyz exponents. fact2[x] is (2x - 1)!! Since x!! = 1 for x = 1, 0 or -1, we can just ignore this part for s and p orbitals, where x, y, and z are all 0 or 1. 7!! = 105 5!! = 15 3!! = 3 Numerators/4pi: all d orbitals: fact2[3] = (2*2 + 1)!! = 5!! = 15/4pi all f orbitals: fact2[4] = (2*3 + 1)!! = 7!! = 105/4pi Denominators: dxy, dyz, dxz all are 1 giving 15/4pi dx2, dy2, and dz2 all have one "2", giving 15/3!!/4pi or 5/4pi- Parameters:
n
-zeta
-el
-ex
-ey
-ez
-- Returns:
- scaled exponent
-