org.jmol.adapter.readers.more
Class MopacReader

java.lang.Object
  extended by org.jmol.adapter.smarter.AtomSetCollectionReader
      extended by org.jmol.adapter.readers.more.MopacReader

public class MopacReader
extends AtomSetCollectionReader

Reads Mopac 93, 97 or 2002 output files, but was tested only for Mopac 93 files yet. (Miguel tweaked it to handle 2002 files, but did not test extensively.)

Author:
Egon Willighagen

Field Summary
(package private)  int baseAtomIndex
           
private  boolean chargesFound
           
 
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
ANGSTROMS_PER_BOHR, applySymmetryToBonds, atomSetCollection, bsFilter, bsModels, calculationType, doApplySymmetry, filter, getHeader, haveAtomFilter, havePartialChargeFilter, htParams, ignoreFileSymmetryOperators, ignoreFileUnitCell, iHaveSymmetryOperators, iHaveUnitCell, isTrajectory, latticeCells, line, modelNumber, needToApplySymmetry, next, prevline, reader, readerName, spaceGroup, templateAtomCount
 
Constructor Summary
MopacReader()
           
 
Method Summary
(package private)  void processAtomicCharges()
          Reads the section in MOPAC files with atomic charges.
(package private)  void processCoordinates()
          Reads the section in MOPAC files with cartesian coordinates.
(package private)  void processTotalEnergy()
           
 void readAtomSetCollection(java.io.BufferedReader reader)
           
private  void readFrequencies()
          Interprets the Harmonic frequencies section.
 
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addJmolScript, addPrimitiveLatticeVector, addSites, applySymmetryAndSetTrajectory, checkLineForScript, checkLineForScript, clearLatticeParameters, deducePdbElementSymbol, discardLines, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilNonBlank, discardLinesUntilStartsWith, doGetModel, fillDataBlock, filterAtom, filterAtom, getElementSymbol, getStrings, getTokens, getTokens, getTokens, getTokensFloat, isLastModel, newAtomSet, parseFloat, parseFloat, parseFloat, parseInt, parseInt, parseInt, parseInt, parseToken, parseToken, parseToken, parseTokenNext, parseTrimmed, parseTrimmed, readAtomSetCollectionFromDOM, readData, readData, readLine, readLineTrimmed, setAtomCoord, setAtomCoord, setError, setFractionalCoordinates, setMOData, setSpaceGroupName, setSymmetryOperator, setTransform, setUnitCell, setUnitCellItem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

baseAtomIndex

int baseAtomIndex

chargesFound

private boolean chargesFound
Constructor Detail

MopacReader

public MopacReader()
Method Detail

readAtomSetCollection

public void readAtomSetCollection(java.io.BufferedReader reader)
Specified by:
readAtomSetCollection in class AtomSetCollectionReader

processTotalEnergy

void processTotalEnergy()

processAtomicCharges

void processAtomicCharges()
                    throws java.lang.Exception
Reads the section in MOPAC files with atomic charges. These sections look like:
               NET ATOMIC CHARGES AND DIPOLE CONTRIBUTIONS
 
          ATOM NO.   TYPE          CHARGE        ATOM  ELECTRON DENSITY
            1          C          -0.077432        4.0774
            2          C          -0.111917        4.1119
            3          C           0.092081        3.9079
 
They are expected to be found in the file before the cartesian coordinate section.

Throws:
java.lang.Exception

processCoordinates

void processCoordinates()
                  throws java.lang.Exception
Reads the section in MOPAC files with cartesian coordinates. These sections look like:
           CARTESIAN COORDINATES
 
     NO.       ATOM         X         Y         Z
 
      1         C        0.0000    0.0000    0.0000
      2         C        1.3952    0.0000    0.0000
      3         C        2.0927    1.2078    0.0000
 
In a MOPAC2002 file the columns are different:
          CARTESIAN COORDINATES

 NO.       ATOM           X             Y             Z

  1         H        0.00000000    0.00000000    0.00000000
  2         O        0.95094500    0.00000000    0.00000000
  3         H        1.23995160    0.90598439    0.00000000
 

Throws:
java.lang.Exception

readFrequencies

private void readFrequencies()
                      throws java.lang.Exception
Interprets the Harmonic frequencies section.
     THE LAST 6 VIBRATIONS ARE THE TRANSLATION AND ROTATION MODES
    THE FIRST THREE OF THESE BEING TRANSLATIONS IN X, Y, AND Z, RESPECTIVELY
              NORMAL COORDINATE ANALYSIS
   
       ROOT NO.    1           2           3           4           5           6
   
              370.51248   370.82204   618.03031   647.68700   647.74806   744.32662
     
            1   0.00002     0.00001    -0.00002    -0.05890     0.07204    -0.00002
            2   0.00001    -0.00006    -0.00001     0.01860     0.13517     0.00000
            3   0.00421    -0.11112     0.06838    -0.00002    -0.00003    -0.02449
   
            4   0.00002     0.00001    -0.00002    -0.04779     0.07977    -0.00001
            5  -0.00002     0.00002     0.00001     0.13405    -0.02908     0.00004
            6  -0.10448     0.05212    -0.06842    -0.00005    -0.00002    -0.02447
 

The vectors are added to a clone of the last read AtomSet. Only the Frequencies are set as properties for each of the frequency type AtomSet generated.

Throws:
java.lang.Exception - If an I/O error occurs