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 int
ac
private int[]
atomFrag
private int
atomIndexLast
private boolean
checkModelTrigger
private int
cpno
private static String[]
crtypes
private javajs.util.V3[]
directLatticeVectors
private boolean
directLatticeVectorsFirst
CRYSTAL 17 moves directLatticeVectors before LATTICE PARAMETERSprivate Double
energy
private float[]
f14
private float[]
f16
private String
firstLine
private boolean
fullSymmetry
private boolean
getLastConventional
private boolean
haveCharges
private boolean
havePrimitiveMapping
private Map<String,javajs.util.Lst<Object>>
htCriticalPoints
private boolean
inputOnly
private boolean
isLongMode
private boolean
isPolymer
private boolean
isProperties
private boolean
isSlab
private boolean
isVersion3
private javajs.util.Lst<String>
lstCoords
private float[]
nuclearCharges
private float
primitiveDensity
private int[]
primitiveToIndex
private float
primitiveVolume
private javajs.util.P3
ptOriginShift
private static int[]
smap
private String
spaceGroupName
private int
state
private static int
STATE_FREQ
private static int
STATE_INPUT
private static int
STATE_INPUT_FROM
private static int
STATE_NONE
private static int
STATE_OPT_FINAL
private static int
STATE_OPT_POINT
private static int
STATE_WAVEFUNCTION
private 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 boolean
addModel()
void
applySymmetryAndSetTrajectory()
protected boolean
checkLine()
protected void
finalizeSubclassReader()
optional reader-specific method run first.private static String
fixAtomName(String s)
MN33 becomes Mn33private int
getAtomicNumber(String token)
private int
getAtomIndexFromPrimitiveIndex(int iPrim)
Get the atom index from a primitive index.private String
getCPAtomInfo(String line, javajs.util.Lst<Object> list)
Process a CP data lineprivate void
getDirect()
private int
getModelForMode(int i0, int mode)
private boolean
getQuadrupoleTensors()
protected void
initializeReader()
private void
newAtomSet()
private void
newLattice(boolean isConv)
private void
processCoordLines()
Now create atoms from the coordinate lines.private void
processNextCriticalPoint()
String
rd()
filter out unnecessary linesprivate boolean
readAtoms()
private boolean
readBornChargeTensors()
private void
readCoordLines()
Read coordinates, either input or crystallographic, just saving their lines in a vector for now.private boolean
readData(String name, int nfields)
For spin and magnetic moment data, read the data block and save it as property_spin or propert_magneticMoment.private void
readFreqFragments()
Select only specific atoms for frequency generation.private void
readFrequencies()
private boolean
readGradient()
Read minimization measuresprivate boolean
readHeader()
private void
readLatticeParams(boolean isPrimitive)
Read the lattice parameters.private boolean
readPartialCharges()
private void
readPrimitiveLatticeVectors()
Read transform matrix primitive to conventional.private javajs.util.Lst<String>
readRaman(javajs.util.Lst<String> ramanData)
private boolean
readShift()
Read the origin shiftprivate void
readSymmetryOperators()
private boolean
readTotalAtomicCharges()
private void
setEnergy()
private void
setFreqValue(float freq, String[] data)
private void
setUnitCellOrientation()
-
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:
rd
in classAtomSetCollectionReader
- Throws:
Exception
-
initializeReader
protected void initializeReader() throws Exception
- Overrides:
initializeReader
in classAtomSetCollectionReader
- Throws:
Exception
-
checkLine
protected boolean checkLine() throws Exception
- Overrides:
checkLine
in 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 Exception
Description copied from class:AtomSetCollectionReader
optional reader-specific method run first.- Overrides:
finalizeSubclassReader
in classAtomSetCollectionReader
- Throws:
Exception
-
setUnitCellOrientation
private void setUnitCellOrientation()
-
readPrimitiveLatticeVectors
private void readPrimitiveLatticeVectors() throws Exception
Read transform matrix primitive to conventional.- Throws:
Exception
-
readShift
private boolean readShift()
Read the origin shift- Returns:
- true
-
readLatticeParams
private void readLatticeParams(boolean isPrimitive) throws Exception
Read 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 Exception
Read coordinates, either input or crystallographic, just saving their lines in a vector for now.- Throws:
Exception
-
processCoordLines
private void processCoordLines() throws Exception
Now create atoms from the coordinate lines.- Throws:
Exception
-
applySymmetryAndSetTrajectory
public void applySymmetryAndSetTrajectory() throws Exception
- Overrides:
applySymmetryAndSetTrajectory
in classAtomSetCollectionReader
- Throws:
Exception
-
setEnergy
private void setEnergy()
-
readFreqFragments
private void readFreqFragments() throws Exception
Select 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 Exception
Read 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
-
-