Class GamessReader
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.GamessReader
- All Implemented Interfaces:
GenericLineReader
- Direct Known Subclasses:
GamessUKReader, GamessUSReader
-
Nested Class Summary
Nested classes/interfaces inherited from class BasisFunctionReader
BasisFunctionReader.MOEnergySorter -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final doubleprotected booleanprotected int[]protected static final double[]protected static final floatstatic final Stringprotected float[][]GAMESS may need AM1, PMn, or RM1 zeta/coef dataprotected booleanFields inherited from class MOReader
allowNoOrbitals, energyUnits, forceMOPAC, gaussianCount, gaussians, haveNboCharges, haveNboOrbitals, HEADER_GAMESS_OCCUPANCIES, HEADER_GAMESS_ORIGINAL, HEADER_GAMESS_UK_MO, HEADER_NONE, lastMoData, moTypes, orbitalsRead, shellCountFields inherited from class BasisFunctionReader
alphaBeta, dfCoefMaps, haveCoefs, ignoreMOs, moData, nCoef, nOrbitals, orbitals, shells, slaterArray, slatersFields inherited from class 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 SlaterDataaddSlater(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 voidaddSlater(SlaterData sd, int n) protected voidWhen slater basis is referred to only by "AM1" "PM6" etc., as in GAMESSvoidcreateMopacSlaters(int iAtom, int atomicNumber, float[] values, boolean allowD) protected voidcreateSphericalSlaterByType(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 doublefact(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.protected static StringfixBasisLine(String line) protected abstract StringfixShellTag(String tag) static float[][]getMopacAtomZetaSPD(String type) Retrieve the MOPAC zeta(1/bohr) [s,p,d] array by atom numberprotected static final doublegetSlaterConstCartesian(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 voidprotected abstract voidprotected voidprotected voidprotected voidprotected voidprotected voidreadGaussianBasis(String initiator, String terminator) protected doublescaleSlater(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.protected voidprotected voidvoidsetMOData(boolean clearOrbitals) protected final voidprotected final voidsetSlaters(boolean doSort) after the vectors intinfo and floatinfo are completed, weprotected voidsortOrbitalCoefficients(int[] pointers) sorts coefficients by atomic number for speed laterprotected voidsorts orbitals by energy rather than by symmetry so that we can use "MO HOMO" "MO HOMO - 1" "MO LUMO"Methods inherited from class MOReader
addCoef, addMOData, checkNboLine, getMOHeader, getNboTypes, readMolecularOrbitalsMethods inherited from class BasisFunctionReader
canonicalizeQuantumSubshellTag, clearOrbitals, discardPreviousAtoms, enableShell, filterMO, fixSlaterTypes, getDfCoefMaps, getDFMap, getQuantumShellTag, getQuantumShellTagID, getQuantumShellTagIDSpherical, setMOMethods inherited from class AtomSetCollectionReader
addAtomXYZSymName, addExplicitLatticeVector, addJmolScript, addMoreUnitCellInfo, addSites, addSiteScript, appendLoadNote, applySymmetryAndSetTrajectory, applySymTrajASCR, checkAndRemoveFilterKey, checkCurrentLineForScript, checkFilterKey, checkLastModel, checkLine, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, discardLinesUntilStartsWith, doGetModel, doGetVibration, doPreSymmetry, fill3x3, fillDataBlock, fillDataBlockFixed, fillFloatArray, fillFrequencyData, filterAtom, filterReject, finalizeMOData, finalizeModelSet, finalizeReaderASCR, finalizeSubclassReader, 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, rd, 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, warnSkippingOperation
-
Field Details
-
atomNames
-
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
-
GamessReader
public GamessReader()
-
-
Method Details
-
readAtomsInBohrCoordinates
-
initializeReader
- Overrides:
initializeReaderin classMOReader- Throws:
Exception
-
setAtom
-
readEnergy
protected void readEnergy() -
readGaussianBasis
-
fixShellTag
-
readFrequencies
-
fixBasisLine
-
setCalculationType
protected void setCalculationType() -
readControlInfo
-
readBasisInfo
-
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
-
addSlaterBasis
protected void addSlaterBasis()When slater basis is referred to only by "AM1" "PM6" etc., as in GAMESS- Overrides:
addSlaterBasisin 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
-