GaussianReader
Date: 2019-10-22

org.jmol.adapter.readers.quantum

## Class GaussianReader

- 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.GaussianReader

- All Implemented Interfaces:
    javajs.api.GenericLineReader
  Direct Known Subclasses:
    GaussianFchkReader

      public class GaussianReader
      extends MOReader

  Reader for Gaussian 94/98/03/09 output files. 4/11/2009 -- hansonr -- added NBO support as extension of MOReader

- - ### Nested Class Summary

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

      `BasisFunctionReader.MOEnergySorter`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `allowHighPrecision`
    `protected int` | `calculationNumber` The number of the calculation being interpreted.
    `private java.lang.String` | `energyKey` Type of energy calculated, e.g., E(RB+HF-PW91).
    `private java.lang.String` | `energyString` Calculated energy with units (if possible).
    `private int` | `equivalentAtomSets` The number of equivalent atom sets.
    `private boolean` | `haveHighPrecision`
    `private boolean` | `isHighPrecision`
    `private int` | `moModelSet`
    `protected javajs.util.BS` | `namedSets`
    `private java.lang.String` | `orientation`
    `private boolean` | `orientationInput`
    `private int` | `scanPoint` The scan point, where -1 denotes no scan information.
    `private static int` | `STD_ORIENTATION_ATOMIC_NUMBER_OFFSET` Word index of atomic number in line with atom coordinates in an orientation block.
    `private int` | `stepNumber`

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

      `allowNoOrbitals, energyUnits, gaussianCount, gaussians, haveNboCharges, haveNboOrbitals, HEADER_GAMESS_OCCUPANCIES, HEADER_GAMESS_ORIGINAL, HEADER_GAMESS_UK_MO, HEADER_NONE, moTypes, orbitalsRead, shellCount`

    - ### 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
    `GaussianReader()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `checkLine()` Reads a Collection of AtomSets from a BufferedReader.
    `void` | `finalizeSubclassReader()` optional reader-specific method run first.
    `private void` | `getSpinDensities(int pt)`
    `protected void` | `initializeReader()`
    `protected void` | `readAtoms()`
    `protected void` | `readBasis()`
    `(package private) void` | `readDipoleMoment()`
    `protected void` | `readFrequencies(java.lang.String key, boolean mustHave)` Interprets the Harmonic frequencies section.
    `protected void` | `readMolecularOrbitals()`
    `(package private) void` | `readPartialCharges()` Reads partial charges and assigns them only to the last atom set.
    `private void` | `readSCFDone()` Interprets the SCF Done: section.
    `private void` | `setEnergy()` Interpret the Energy= line for non SCF type energy output
    `private void` | `setNames(java.lang.String atomSetName, javajs.util.BS namedSets, int n)`
    `private void` | `setProps(java.lang.String key, java.lang.String value, int n)`

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

      `addCoef, addMOData, checkAndRemoveFilterKey, checkNboLine, getMOHeader, getNboTypes, readMolecularOrbitals, setMOData`

    - ### 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, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, discardLinesUntilStartsWith, doGetModel, doGetVibration, doPreSymmetry, fill3x3, fillDataBlock, fillDataBlockFixed, fillFloatArray, fillFrequencyData, filterAtom, filterReject, finalizeMOData, finalizeModelSet, finalizeReaderASCR, finalizeSubclassSymmetry, forceSymmetry, fractionalizeCoordinates, getElementSymbol, getFilter, getFortranFormatLengths, getInterface, getNewSymmetry, getStrings, getSymmetry, getTokens, getTokensFloat, 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

    - #### STD_ORIENTATION_ATOMIC_NUMBER_OFFSET

          private static final int STD_ORIENTATION_ATOMIC_NUMBER_OFFSET

      Word index of atomic number in line with atom coordinates in an orientation block.
      See Also:
        Constant Field Values

    - #### energyString

          private java.lang.String energyString

      Calculated energy with units (if possible).

    - #### energyKey

          private java.lang.String energyKey

      Type of energy calculated, e.g., E(RB+HF-PW91).

    - #### calculationNumber

          protected int calculationNumber

      The number of the calculation being interpreted.

    - #### scanPoint

          private int scanPoint

      The scan point, where -1 denotes no scan information.

    - #### equivalentAtomSets

          private int equivalentAtomSets

      The number of equivalent atom sets.

      Needed to associate identical properties to multiple atomsets

    - #### stepNumber

          private int stepNumber

    - #### moModelSet

          private int moModelSet

    - #### namedSets

          protected javajs.util.BS namedSets

    - #### isHighPrecision

          private boolean isHighPrecision

    - #### haveHighPrecision

          private boolean haveHighPrecision

    - #### allowHighPrecision

          private boolean allowHighPrecision

    - #### orientationInput

          private boolean orientationInput

    - #### orientation

          private java.lang.String orientation

  - ### Constructor Detail

    - #### GaussianReader

          public GaussianReader()

  - ### Method Detail

    - #### initializeReader

          protected void initializeReader()
                                   throws java.lang.Exception

      Overrides:
        `initializeReader` in class `MOReader`
      Throws:
        `java.lang.Exception`

    - #### checkLine

          protected boolean checkLine()
                               throws java.lang.Exception

      Reads a Collection of AtomSets from a BufferedReader.

      New AtomSets are generated when an `Input`, `Standard` or `Z-Matrix` orientation is read. The occurence of these orientations seems to depend on (in pseudo-code): `
      if (opt=z-matrix) Z-Matrix; else Input;
      if (!NoSymmetry) Standard;`
      Which means that if `NoSymmetry` is used with a z-matrix optimization, no other orientation besides `Z-Matrix` will be present. This is important because `Z-Matrix` may have dummy atoms while the analysis of the calculation results will not, i.e., the `Center Numbers` in the z-matrix orientation may be different from those in the population analysis!

      Single point or frequency calculations always have an `Input` orientation. If symmetry is used a `Standard` will be present too.

      Overrides:
        `checkLine` in class `AtomSetCollectionReader`
      Returns:
        TRUE to read a new line
      Throws:
        `java.lang.Exception`

    - #### finalizeSubclassReader

          public void finalizeSubclassReader()
                                      throws java.lang.Exception

      Description copied from class: `AtomSetCollectionReader`
      optional reader-specific method run first.
      Overrides:
        `finalizeSubclassReader` in class `AtomSetCollectionReader`
      Throws:
        `java.lang.Exception`

    - #### getSpinDensities

          private void getSpinDensities(int pt)
                                 throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### readSCFDone

          private void readSCFDone()
                            throws java.lang.Exception

      Interprets the SCF Done: section.

      The energyKey and energyString will be set for further AtomSets that have the same molecular geometry (e.g., frequencies). The energy, convergence, -V/T and S**2 values will be set as properties for the atomSet.

      Throws:
        `java.lang.Exception` - If an error occurs

    - #### setProps

          private void setProps(java.lang.String key,
                                java.lang.String value,
                                int n)

    - #### setNames

          private void setNames(java.lang.String atomSetName,
                                javajs.util.BS namedSets,
                                int n)

    - #### setEnergy

          private void setEnergy()

      Interpret the Energy= line for non SCF type energy output

    - #### readAtoms

          protected void readAtoms()
                            throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### readBasis

          protected void readBasis()
                            throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### readMolecularOrbitals

          protected void readMolecularOrbitals()
                                        throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### readFrequencies

          protected void readFrequencies(java.lang.String key,
                                         boolean mustHave)
                                  throws java.lang.Exception

      Interprets the Harmonic frequencies section.

      The vectors are added to a clone of the last read AtomSet. Only the Frequencies, reduced masses, force constants and IR intensities are set as properties for each of the frequency type AtomSet generated.

      Parameters:
        `mustHave` -
        `key` -
      Throws:
        `java.lang.Exception` - If no frequencies were encountered

    - #### readDipoleMoment

          void readDipoleMoment()
                         throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### readPartialCharges

          void readPartialCharges()
                           throws java.lang.Exception

      Reads partial charges and assigns them only to the last atom set.
      Throws:
        `java.lang.Exception` - When an I/O error or discardlines error occurs