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<String> 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 String[]crtypesprivate javajs.util.V3[]directLatticeVectorsprivate booleandirectLatticeVectorsFirstCRYSTAL 17 moves directLatticeVectors before LATTICE PARAMETERSprivate Doubleenergyprivate float[]f14private float[]f16private StringfirstLineprivate booleanfullSymmetryprivate booleangetLastConventionalprivate booleanhaveChargesprivate booleanhavePrimitiveMappingprivate Map<String,javajs.util.Lst<Object>>htCriticalPointsprivate booleaninputOnlyprivate booleanisLongModeprivate booleanisPolymerprivate booleanisPropertiesprivate booleanisSlabprivate booleanisVersion3private javajs.util.Lst<String>lstCoordsprivate float[]nuclearChargesprivate floatprimitiveDensityprivate int[]primitiveToIndexprivate floatprimitiveVolumeprivate javajs.util.P3ptOriginShiftprivate static int[]smapprivate 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<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, 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, 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 StringfixAtomName(String s)MN33 becomes Mn33private intgetAtomicNumber(String token)private intgetAtomIndexFromPrimitiveIndex(int iPrim)Get the atom index from a primitive index.private StringgetCPAtomInfo(String line, javajs.util.Lst<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()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(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<String>readRaman(javajs.util.Lst<String> ramanData)private booleanreadShift()Read the origin shiftprivate voidreadSymmetryOperators()private booleanreadTotalAtomicCharges()private voidsetEnergy()private voidsetFreqValue(float freq, String[] data)private voidsetUnitCellOrientation()-
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addAtomXYZSymName, addExplicitLatticeVector, addJmolScript, addSites, addSiteScript, appendLoadNote, appendUunitCellInfo, applySymTrajASCR, 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<String> lstCoords
-
energy
private Double energy
-
ptOriginShift
private javajs.util.P3 ptOriginShift
-
directLatticeVectors
private javajs.util.V3[] directLatticeVectors
-
spaceGroupName
private String spaceGroupName
-
checkModelTrigger
private boolean checkModelTrigger
-
fullSymmetry
private boolean fullSymmetry
-
directLatticeVectorsFirst
private boolean directLatticeVectorsFirst
CRYSTAL 17 moves directLatticeVectors before LATTICE PARAMETERS
-
cpno
private int cpno
-
crtypes
private static final String[] crtypes
-
symops
private javajs.util.Lst<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 String firstLine
-
-
Method Detail
-
rd
public String rd() throws Exception
filter out unnecessary lines- Overrides:
rdin classAtomSetCollectionReader- Throws:
Exception
-
initializeReader
protected void initializeReader() throws Exception- Overrides:
initializeReaderin classAtomSetCollectionReader- Throws:
Exception
-
checkLine
protected boolean checkLine() throws Exception- Overrides:
checkLinein classAtomSetCollectionReader- Returns:
- true if need to read new line
- Throws:
Exception
-
getCPAtomInfo
private String getCPAtomInfo(String line, javajs.util.Lst<Object> list)
Process a CP data line- Parameters:
line- full TOPOND data linelist- entries to fill with information- Returns:
- matrix information for eigenvectors
-
finalizeSubclassReader
protected void finalizeSubclassReader() throws ExceptionDescription copied from class:AtomSetCollectionReaderoptional reader-specific method run first.- Overrides:
finalizeSubclassReaderin classAtomSetCollectionReader- Throws:
Exception
-
setUnitCellOrientation
private void setUnitCellOrientation()
-
readPrimitiveLatticeVectors
private void readPrimitiveLatticeVectors() throws ExceptionRead transform matrix primitive to conventional.- Throws:
Exception
-
readShift
private boolean readShift()
Read the origin shift- Returns:
- true
-
readLatticeParams
private void readLatticeParams(boolean isPrimitive) throws ExceptionRead the lattice parameters.- Parameters:
isPrimitive-- Throws:
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.
-
fixAtomName
private static String fixAtomName(String s)
MN33 becomes Mn33- Parameters:
s-- Returns:
- fixed atom name
-
getAtomicNumber
private int getAtomicNumber(String token)
-
readCoordLines
private void readCoordLines() throws ExceptionRead coordinates, either input or crystallographic, just saving their lines in a vector for now.- Throws:
Exception
-
processCoordLines
private void processCoordLines() throws ExceptionNow create atoms from the coordinate lines.- Throws:
Exception
-
applySymmetryAndSetTrajectory
public void applySymmetryAndSetTrajectory() throws Exception- Overrides:
applySymmetryAndSetTrajectoryin classAtomSetCollectionReader- Throws:
Exception
-
setEnergy
private void setEnergy()
-
readFreqFragments
private void readFreqFragments() throws ExceptionSelect only specific atoms for frequency generation. (See freq_6for_001.out)- Throws:
Exception
-
setFreqValue
private void setFreqValue(float freq, String[] data)
-
readRaman
private javajs.util.Lst<String> readRaman(javajs.util.Lst<String> ramanData) throws Exception
- Throws:
Exception
-
getModelForMode
private int getModelForMode(int i0, int mode)
-
readGradient
private boolean readGradient() throws ExceptionRead minimization measures- Returns:
- true
- Throws:
Exception
-
readData
private boolean readData(String name, int nfields) throws Exception
For spin and magnetic moment data, read the data block and save it as property_spin or propert_magneticMoment.- Parameters:
name-nfields-- Returns:
- true
- Throws:
Exception
-
-