Package org.jmol.adapter.readers.xtal
Class CrystalReader
- java.lang.Object
-
- org.jmol.adapter.smarter.AtomSetCollectionReader
-
- org.jmol.adapter.readers.xtal.CrystalReader
-
- All Implemented Interfaces:
javajs.api.GenericLineReader
public class CrystalReader extends AtomSetCollectionReader
A reader of OUT and OUTP files for CRYSTAL http://www.crystal.unito.it/- Version:
- 1.4
special model auxiliaryInfo include:
primitiveToCrystal M3 transforming primitive lattice to conventional
lattice
mat4PrimitiveToCrystal M4 for use in transforming symmetry
operations
mat4CrystalToPrimitive M4 convenience inverse of
mat4PrimitiveToCrystal
fileSymmetryOperations List
symmetry operators (primitive) Drawing primitive unitcell operations: ops = _M.fileSystemOperations DRAW SYMOP @{ops[2]} If using the conventional cell, you can use its operators, or you can limit yourself this primitive subset using: mp2c = _M.mat4PrimitiveToCrystal mc2p = _M.mat4CrystalToPrimitive DRAW SYMOP @{mc2p * ops[2] * mp2c} for a specific model in the set, use load "xxx.out" n as for all readers, where n is an integer > 0 for final optimized geometry use load "xxx.out" 0 (that is, "read the last model") as for all readers for conventional unit cell -- input coordinates only, use load "xxx.out" filter "conventional" to NOT load vibrations, use load "xxx.out" FILTER "novibrations" to load just the input deck exactly as indicated, use load "xxx.out" FILTER "input" now allows reading of frequencies and atomic values with conventional as long as this is not an optimization. - Author:
- Pieremanuele Canepa, Room 104, FM Group School of Physical Sciences, Ingram Building, University of Kent, Canterbury, Kent, CT2 7NH United Kingdom, pc229@kent.ac.uk, Bob Hanson hansonr@stolaf.edu
-
-
Field Summary
Fields Modifier and Type Field Description private intacprivate int[]atomFragprivate intatomIndexLastprivate booleancheckModelTriggerprivate intcpnoprivate static java.lang.String[]crtypesprivate javajs.util.V3[]directLatticeVectorsprivate booleandirectLatticeVectorsFirstCRYSTAL 17 moves directLatticeVectors before LATTICE PARAMETERSprivate java.lang.Doubleenergyprivate float[]f14private float[]f16private java.lang.StringfirstLineprivate booleanfullSymmetryprivate booleangetLastConventionalprivate booleanhaveChargesprivate booleanhavePrimitiveMappingprivate java.util.Map<java.lang.String,javajs.util.Lst<java.lang.Object>>htCriticalPointsprivate booleaninputOnlyprivate booleanisLongModeprivate booleanisPolymerprivate booleanisPropertiesprivate booleanisSlabprivate booleanisVersion3private javajs.util.Lst<java.lang.String>lstCoordsprivate float[]nuclearChargesprivate floatprimitiveDensityprivate int[]primitiveToIndexprivate floatprimitiveVolumeprivate javajs.util.P3ptOriginShiftprivate static int[]smapprivate java.lang.StringspaceGroupNameprivate intstateprivate static intSTATE_FREQprivate static intSTATE_INPUTprivate static intSTATE_INPUT_FROMprivate static intSTATE_NONEprivate static intSTATE_OPT_FINALprivate static intSTATE_OPT_POINTprivate static intSTATE_WAVEFUNCTIONprivate javajs.util.Lst<java.lang.String>symops-
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addedData, addedDataKey, addVibrations, allow_a_len_1, allowPDBFilter, ANGSTROMS_PER_BOHR, applySymmetryToBonds, asc, baseAtomIndex, baseBondIndex, binaryDoc, bsFilter, bsModels, calculationType, centroidPacked, continuing, debugging, desiredModelNumber, desiredSpaceGroupIndex, desiredVibrationNumber, doApplySymmetry, doCentralize, doCentroidUnitCell, 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, paramsCentroid, paramsLattice, prevline, primitiveToCrystal, ptLine, ptSupercell, reader, readerName, requiresBSFilter, reverseModels, rotateHexCell, sgName, stateScriptVersionInt, strSupercell, symmetry, templateAtomCount, thisBiomolecule, trajectorySteps, ucItems, unitCellOffset, unitCellParams, useAltNames, useFileModelNumbers, validation, vibrationNumber, vibsFractional, vwr
-
-
Constructor Summary
Constructors Constructor Description CrystalReader()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleanaddModel()voidapplySymmetryAndSetTrajectory()protected booleancheckLine()protected voidfinalizeSubclassReader()optional reader-specific method run first.private static java.lang.StringfixAtomName(java.lang.String s)MN33 becomes Mn33private intgetAtomicNumber(java.lang.String token)private intgetAtomIndexFromPrimitiveIndex(int iPrim)Get the atom index from a primitive index.private java.lang.StringgetCPAtomInfo(java.lang.String line, javajs.util.Lst<java.lang.Object> list)Process a CP data lineprivate voidgetDirect()private intgetModelForMode(int i0, int mode)private booleangetQuadrupoleTensors()protected voidinitializeReader()private voidnewAtomSet()private voidnewLattice(boolean isConv)private voidprocessCoordLines()Now create atoms from the coordinate lines.private voidprocessNextCriticalPoint()java.lang.Stringrd()filter out unnecessary linesprivate booleanreadAtoms()private booleanreadBornChargeTensors()private voidreadCoordLines()Read coordinates, either input or crystallographic, just saving their lines in a vector for now.private booleanreadData(java.lang.String name, int nfields)For spin and magnetic moment data, read the data block and save it as property_spin or propert_magneticMoment.private voidreadFreqFragments()Select only specific atoms for frequency generation.private voidreadFrequencies()private booleanreadGradient()Read minimization measuresprivate booleanreadHeader()private voidreadLatticeParams(boolean isPrimitive)Read the lattice parameters.private booleanreadPartialCharges()private voidreadPrimitiveLatticeVectors()Read transform matrix primitive to conventional.private javajs.util.Lst<java.lang.String>readRaman(javajs.util.Lst<java.lang.String> ramanData)private booleanreadShift()Read the origin shiftprivate voidreadSymmetryOperators()private booleanreadTotalAtomicCharges()private voidsetEnergy()private voidsetFreqValue(float freq, java.lang.String[] data)private voidsetUnitCellOrientation()-
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addAtomXYZSymName, addExplicitLatticeVector, addJmolScript, addSites, addSiteScript, appendLoadNote, appendUunitCellInfo, applySymTrajASCR, checkAndRemoveFilterKey, checkCurrentLineForScript, checkFilterKey, checkLastModel, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, discardLinesUntilStartsWith, discardPreviousAtoms, 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, 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
-
-
-
-
Field Detail
-
isVersion3
private boolean isVersion3
-
isPolymer
private boolean isPolymer
-
isSlab
private boolean isSlab
-
haveCharges
private boolean haveCharges
-
inputOnly
private boolean inputOnly
-
isLongMode
private boolean isLongMode
-
getLastConventional
private boolean getLastConventional
-
havePrimitiveMapping
private boolean havePrimitiveMapping
-
isProperties
private boolean isProperties
-
STATE_NONE
private static final int STATE_NONE
- See Also:
- Constant Field Values
-
STATE_INPUT
private static final int STATE_INPUT
- See Also:
- Constant Field Values
-
STATE_INPUT_FROM
private static final int STATE_INPUT_FROM
- See Also:
- Constant Field Values
-
STATE_WAVEFUNCTION
private static final int STATE_WAVEFUNCTION
- See Also:
- Constant Field Values
-
STATE_OPT_POINT
private static final int STATE_OPT_POINT
- See Also:
- Constant Field Values
-
STATE_OPT_FINAL
private static final int STATE_OPT_FINAL
- See Also:
- Constant Field Values
-
STATE_FREQ
private static final int STATE_FREQ
- See Also:
- Constant Field Values
-
state
private int state
-
ac
private int ac
-
atomIndexLast
private int atomIndexLast
-
atomFrag
private int[] atomFrag
-
primitiveToIndex
private int[] primitiveToIndex
-
nuclearCharges
private float[] nuclearCharges
-
lstCoords
private javajs.util.Lst<java.lang.String> lstCoords
-
energy
private java.lang.Double energy
-
ptOriginShift
private javajs.util.P3 ptOriginShift
-
directLatticeVectors
private javajs.util.V3[] directLatticeVectors
-
spaceGroupName
private java.lang.String spaceGroupName
-
checkModelTrigger
private boolean checkModelTrigger
-
fullSymmetry
private boolean fullSymmetry
-
htCriticalPoints
private java.util.Map<java.lang.String,javajs.util.Lst<java.lang.Object>> htCriticalPoints
-
directLatticeVectorsFirst
private boolean directLatticeVectorsFirst
CRYSTAL 17 moves directLatticeVectors before LATTICE PARAMETERS
-
cpno
private int cpno
-
crtypes
private static final java.lang.String[] crtypes
-
symops
private javajs.util.Lst<java.lang.String> symops
-
f14
private final float[] f14
-
f16
private final float[] f16
-
smap
private static final int[] smap
-
primitiveVolume
private float primitiveVolume
-
primitiveDensity
private float primitiveDensity
-
firstLine
private java.lang.String firstLine
-
-
Method Detail
-
rd
public java.lang.String rd() throws java.lang.Exceptionfilter out unnecessary lines- Overrides:
rdin classAtomSetCollectionReader- Throws:
java.lang.Exception
-
initializeReader
protected void initializeReader() throws java.lang.Exception- Overrides:
initializeReaderin classAtomSetCollectionReader- Throws:
java.lang.Exception
-
checkLine
protected boolean checkLine() throws java.lang.Exception- Overrides:
checkLinein classAtomSetCollectionReader- Returns:
- true if need to read new line
- Throws:
java.lang.Exception
-
processNextCriticalPoint
private void processNextCriticalPoint() throws java.lang.Exception- Throws:
java.lang.Exception
-
getCPAtomInfo
private java.lang.String getCPAtomInfo(java.lang.String line, javajs.util.Lst<java.lang.Object> list)Process a CP data line- Parameters:
line- full TOPOND data linelist- entries to fill with information- Returns:
- matrix information for eigenvectors
-
newLattice
private void newLattice(boolean isConv) throws java.lang.Exception- Throws:
java.lang.Exception
-
addModel
private boolean addModel() throws java.lang.Exception- Throws:
java.lang.Exception
-
readSymmetryOperators
private void readSymmetryOperators() throws java.lang.Exception- Throws:
java.lang.Exception
-
finalizeSubclassReader
protected void finalizeSubclassReader() throws java.lang.ExceptionDescription copied from class:AtomSetCollectionReaderoptional reader-specific method run first.- Overrides:
finalizeSubclassReaderin classAtomSetCollectionReader- Throws:
java.lang.Exception
-
getDirect
private void getDirect() throws java.lang.Exception- Throws:
java.lang.Exception
-
setUnitCellOrientation
private void setUnitCellOrientation()
-
readPrimitiveLatticeVectors
private void readPrimitiveLatticeVectors() throws java.lang.ExceptionRead transform matrix primitive to conventional.- Throws:
java.lang.Exception
-
readShift
private boolean readShift()
Read the origin shift- Returns:
- true
-
readHeader
private boolean readHeader() throws java.lang.Exception- Throws:
java.lang.Exception
-
readLatticeParams
private void readLatticeParams(boolean isPrimitive) throws java.lang.ExceptionRead the lattice parameters.- Parameters:
isNewSet-- Throws:
java.lang.Exception
-
getAtomIndexFromPrimitiveIndex
private int getAtomIndexFromPrimitiveIndex(int iPrim)
Get the atom index from a primitive index. Used for atomic properties and frequency fragments. Note that primitive to conventional is not a 1:1 mapping. We don't consider that.- Parameters:
iPrim-- Returns:
- the original number or the number from the primitive.
-
readAtoms
private boolean readAtoms() throws java.lang.Exception- Throws:
java.lang.Exception
-
fixAtomName
private static java.lang.String fixAtomName(java.lang.String s)
MN33 becomes Mn33- Parameters:
s-- Returns:
- fixed atom name
-
getAtomicNumber
private int getAtomicNumber(java.lang.String token)
-
readCoordLines
private void readCoordLines() throws java.lang.ExceptionRead coordinates, either input or crystallographic, just saving their lines in a vector for now.- Throws:
java.lang.Exception
-
processCoordLines
private void processCoordLines() throws java.lang.ExceptionNow create atoms from the coordinate lines.- Throws:
java.lang.Exception
-
applySymmetryAndSetTrajectory
public void applySymmetryAndSetTrajectory() throws java.lang.Exception- Overrides:
applySymmetryAndSetTrajectoryin classAtomSetCollectionReader- Throws:
java.lang.Exception
-
newAtomSet
private void newAtomSet() throws java.lang.Exception- Throws:
java.lang.Exception
-
setEnergy
private void setEnergy()
-
readPartialCharges
private boolean readPartialCharges() throws java.lang.Exception- Throws:
java.lang.Exception
-
readTotalAtomicCharges
private boolean readTotalAtomicCharges() throws java.lang.Exception- Throws:
java.lang.Exception
-
readFreqFragments
private void readFreqFragments() throws java.lang.ExceptionSelect only specific atoms for frequency generation. (See freq_6for_001.out)- Throws:
java.lang.Exception
-
readFrequencies
private void readFrequencies() throws java.lang.Exception- Throws:
java.lang.Exception
-
setFreqValue
private void setFreqValue(float freq, java.lang.String[] data)
-
readRaman
private javajs.util.Lst<java.lang.String> readRaman(javajs.util.Lst<java.lang.String> ramanData) throws java.lang.Exception- Throws:
java.lang.Exception
-
getModelForMode
private int getModelForMode(int i0, int mode)
-
readGradient
private boolean readGradient() throws java.lang.ExceptionRead minimization measures- Returns:
- true
- Throws:
java.lang.Exception
-
readData
private boolean readData(java.lang.String name, int nfields) throws java.lang.ExceptionFor spin and magnetic moment data, read the data block and save it as property_spin or propert_magneticMoment.- Parameters:
name-nfields-- Returns:
- true
- Throws:
java.lang.Exception
-
getQuadrupoleTensors
private boolean getQuadrupoleTensors() throws java.lang.Exception- Throws:
java.lang.Exception
-
readBornChargeTensors
private boolean readBornChargeTensors() throws java.lang.Exception- Throws:
java.lang.Exception
-
-