MopacSlaterReader
Date: 2019-10-22

org.jmol.adapter.readers.quantum

## Class MopacSlaterReader

- java.lang.Object
- - org.jmol.adapter.smarter.AtomSetCollectionReader
  - - org.jmol.adapter.readers.quantum.BasisFunctionReader
    - - org.jmol.adapter.readers.quantum.SlaterReader
      - - org.jmol.adapter.readers.quantum.MopacSlaterReader

- All Implemented Interfaces:
    javajs.api.GenericLineReader
  Direct Known Subclasses:
    CsfReader, MoldenReader, MopacGraphfReader, WebMOReader

      abstract class MopacSlaterReader
      extends SlaterReader

  Author:
    hansonr

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.jmol.adapter.readers.quantum.SlaterReader

      `SlaterReader.OrbitalSorter, SlaterReader.SlaterSorter`

    - ### Nested classes/interfaces inherited from class org.jmol.adapter.readers.quantum.BasisFunctionReader

      `BasisFunctionReader.MOEnergySorter`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int[]` | `atomicNumbers`
    `protected static float` | `MIN_COEF`
    `private static int[]` | `npqd`
    `private static int[]` | `principalQuantumNumber`
    `private static int[]` | `sphericalDValues`

    - ### Fields inherited from class org.jmol.adapter.readers.quantum.SlaterReader

      `slaterArray, slaters`

    - ### Fields inherited from class org.jmol.adapter.readers.quantum.BasisFunctionReader

      `alphaBeta, dfCoefMaps, ignoreMOs, moData, nCoef, nOrbitals, orbitalMaps, orbitals, shells`

    - ### Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader

      `addedData, addedDataKey, addVibrations, allowPDBFilter, ANGSTROMS_PER_BOHR, applySymmetryToBonds, asc, baseAtomIndex, binaryDoc, bsFilter, bsModels, calculationType, continuing, debugging, desiredModelNumber, desiredSpaceGroupIndex, desiredVibrationNumber, doApplySymmetry, doCentralize, doCheckUnitCell, doConvertToFractional, doPackUnitCell, doProcessLines, doReadMolecularOrbitals, dssr, fileName, fileOffset, filePath, fileScaling, fillRange, filter, filterHetero, fixJavaFloat, forcePacked, getHeader, haveAtomFilter, haveModel, havePartialChargeFilter, htParams, ignoreFileSpaceGroupName, ignoreFileSymmetryOperators, ignoreFileUnitCell, ignoreStructure, iHaveFractionalCoordinates, iHaveSymmetryOperators, iHaveUnitCell, isBinary, isConcatenated, isDSSP1, isFinalized, isMolecular, isPrimitive, isSequential, isTrajectory, latticeCells, latticeScaling, latticeType, line, lstNCS, matUnitCellOrientation, modDim, modelNumber, ms, mustFinalizeModelSet, next, out, packingError, prevline, primitiveToCrystal, ptLine, ptSupercell, reader, readerName, requiresBSFilter, reverseModels, rotateHexCell, sgName, stateScriptVersionInt, strSupercell, symmetry, templateAtomCount, thisBiomolecule, trajectorySteps, unitCellOffset, unitCellParams, useAltNames, useFileModelNumbers, validation, vibrationNumber, vibsFractional, vwr`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MopacSlaterReader()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `createSphericalSlaterByType(int iAtom, int atomicNumber, java.lang.String type, float zeta, float coef)` We have the type as a string and need to translate that to exponents for x, y, z, and r.
    `private static int` | `getNPQ(int atomicNumber)`
    `private static int` | `getNPQd(int atomicNumber)` for D orbitals, MOPAC adds 1 to n for noble gases but subtracts 1 from n for transition metals
    `private static int` | `getNPQp(int atomicNumber)` for P orbitals, MOPAC adds 1 to n for helium only
    `private static int` | `getNPQs(int atomicNumber)` for S orbitals, MOPAC adds 1 to n for noble gases other than helium
    `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.

    - ### Methods inherited from class org.jmol.adapter.readers.quantum.SlaterReader

      `addSlater, addSlater, getSlaterConstCartesian, getSlaterConstDSpherical, setMOs, setSlaters, sortOrbitalCoefficients, sortOrbitals`

    - ### 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, 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, forceSymmetry, fractionalizeCoordinates, getElementSymbol, getFilter, getFortranFormatLengths, getInterface, getNewSymmetry, getStrings, getSymmetry, getTokens, getTokensFloat, initializeReader, initializeSymmetry, initializeSymmetryOptions, initializeTrajectoryFile, isLastModel, newAtomSet, parseFloat, parseFloatRange, parseFloatStr, parseInt, parseIntAt, parseIntRange, parseIntStr, 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, setSpaceGroupName, setSymmetryOperator, setTransform, setUnitCell, setUnitCellItem, setup, setupASCR`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### MIN_COEF

          protected static final float MIN_COEF

      See Also:
        Constant Field Values

    - #### atomicNumbers

          protected int[] atomicNumbers

    - #### sphericalDValues

          private static final int[] sphericalDValues

    - #### principalQuantumNumber

          private static final int[] principalQuantumNumber

    - #### npqd

          private static final int[] npqd

  - ### Constructor Detail

    - #### MopacSlaterReader

          MopacSlaterReader()

  - ### Method Detail

    - #### createSphericalSlaterByType

          protected void createSphericalSlaterByType(int iAtom,
                                                     int atomicNumber,
                                                     java.lang.String type,
                                                     float 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` -

    - #### 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.
      Overrides:
        `scaleSlater` in class `SlaterReader`
      Parameters:
        `ex` -
        `ey` -
        `ez` -
        `er` -
        `zeta` -
      Returns:
        scaling factor

    - #### getNPQ

          private static final int getNPQ(int atomicNumber)

    - #### getNPQs

          private static final int getNPQs(int atomicNumber)

      for S orbitals, MOPAC adds 1 to n for noble gases other than helium
      Parameters:
        `atomicNumber` -
      Returns:
        adjusted principal quantum number

    - #### getNPQp

          private static final int getNPQp(int atomicNumber)

      for P orbitals, MOPAC adds 1 to n for helium only
      Parameters:
        `atomicNumber` -
      Returns:
        adjusted principal quantum number

    - #### getNPQd

          private static final int getNPQd(int atomicNumber)

      for D orbitals, MOPAC adds 1 to n for noble gases but subtracts 1 from n for transition metals
      Parameters:
        `atomicNumber` -
      Returns:
        adjusted principal quantum number