Class GamessUSReader
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
org.jmol.adapter.readers.quantum.GamessUSReader
- All Implemented Interfaces:
GenericLineReader
-
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 GamessReader
atomNamesFields 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 GAMESSprotected booleanvoidcreateMopacSlaters(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 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 voidprotected voidprotected voidreadMolecularOrbitals(int headerType) 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.voidsetMOData(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 GamessReader
fixBasisLine, readBasisInfo, readControlInfo, readEnergy, readFrequencies, readGaussianBasis, setAtom, setCalculationTypeMethods inherited from class MOReader
addCoef, addMOData, checkNboLine, getMOHeader, getNboTypesMethods 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, 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
-
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
-
GamessUSReader
public GamessUSReader()
-
-
Method Details
-
initializeReader
- Overrides:
initializeReaderin classGamessReader- Throws:
Exception
-
checkLine
- Overrides:
checkLinein classAtomSetCollectionReader- Returns:
- true if need to read new line
- Throws:
Exception
-
readMolecularOrbitals
- Overrides:
readMolecularOrbitalsin classMOReader- Throws:
Exception
-
readEFPInBohrCoordinates
-
readAtomsInBohrCoordinates
- Specified by:
readAtomsInBohrCoordinatesin classGamessReader- Throws:
Exception
-
fixShellTag
- Specified by:
fixShellTagin classGamessReader
-
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
-