org.jmol.adapter.readers.xtal
Class CastepReader

java.lang.Object
  extended by org.jmol.adapter.smarter.AtomSetCollectionReader
      extended by org.jmol.adapter.readers.xtal.CastepReader

public class CastepReader
extends AtomSetCollectionReader

CASTEP (http://www.castep.org) .cell file format relevant section of .cell file are included as comments below preliminary .castep, .phonon frequency reader -- hansonr@stolaf.edu 9/2011 -- Many thanks to Keith Refson for his assistance with this implementation -- atom's mass is encoded as bfactor -- FILTER options include "q=n" where n is an integer or "q={1/4 1/4 0}" -- for non-simple fractions, you must use the exact form of the wavevector description: -- load "xxx.phonon" FILTER "q=(-0.083333 0.083333 0.500000) -- for simple fractions, you can also just specify SUPERCELL {a b c} where -- the number of cells matches a given wavevector -- SUPERCELL {4 4 1}, for example -- following this with ".1" ".2" etc. gives first, second, third, etc. occurance: -- load "xxx.phonon" FILTER "q=1.3" .... -- load "xxx.phonon" FILTER "{0 0 0}.3" ....

Version:
1.2
Author:
Joerg Meyer, FHI Berlin 2009 (meyer@fhi-berlin.mpg.de)

Field Summary
private  float a
           
private  javax.vecmath.Vector3f[] abc
           
private  float alpha
           
private  int atomCount
           
private  javax.vecmath.Point3f[] atomPts
           
private  float b
           
private  float beta
           
private  float c
           
private  java.lang.String desiredQ
           
private  javax.vecmath.Vector3f desiredQpt
           
private  float gamma
           
private  boolean havePhonons
           
private  boolean isCell
           
private  boolean isOutput
           
private  boolean isPhonon
           
private  java.lang.String lastQPt
           
private static float[] lengthUnitFactors
           
private static java.lang.String[] lengthUnitIds
           
private  int qpt2
           
private  java.lang.String[] tokens
           
private static double TWOPI
           
 
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addVibrations, ANGSTROMS_PER_BOHR, applySymmetryToBonds, atomSetCollection, bsFilter, bsModels, calculationType, continuing, desiredModelNumber, desiredVibrationNumber, doApplySymmetry, doc, doCheckUnitCell, doPackUnitCell, doProcessLines, filter, filterHetero, getHeader, haveModel, havePartialChargeFilter, htParams, ignoreFileSpaceGroupName, ignoreFileSymmetryOperators, ignoreFileUnitCell, iHaveFractionalCoordinates, iHaveSymmetryOperators, iHaveUnitCell, isBinary, isSequential, isTrajectory, latticeCells, line, matUnitCellOrientation, modelNumber, next, notionalUnitCell, os, prevline, ptLine, reader, readerName, readMolecularOrbitals, spaceGroup, stateScriptVersionInt, supercell, symmetry, templateAtomCount, useAltNames, vibrationNumber, viewer
 
Constructor Summary
CastepReader()
           
 
Method Summary
protected  boolean checkLine()
           
protected  void finalizeReader()
           
private  java.lang.String getFractionalCoord(javax.vecmath.Vector3f qvec)
           
 void initializeReader()
           
private static boolean isInt(float f)
           
private  void readAtomData(float factor)
           
private  boolean readFileData()
           
private  void readLatticeAbc()
           
private  void readLatticeCart()
           
private  float readLengthUnit(java.lang.String units)
           
private  void readOutputAtoms()
           
private  void readOutputCharges()
           
private  void readOutputUnitCell()
           
private  void readPhononFractionalCoord()
           
private  void readPhononFrequencies()
           
private  void readPhononTrajectories()
           
private  void readPhononUnitCell()
           
private  void readPositionsAbs()
           
private  void readPositionsFrac()
           
private  void setDesiredQpt(java.lang.String s)
           
private  void setLatticeVectors()
           
private  void setPhononVector(float[] data, Atom atom, javax.vecmath.Vector3f rTrans, javax.vecmath.Vector3f qvec, javax.vecmath.Vector3f v)
          transform complex vibration vector to a real vector by applying the appropriate translation, storing the results in v
private  int tokenizeCastepCell()
           
 
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addJmolScript, addPrimitiveLatticeVector, addSites, addSiteScript, appendLoadNote, applySymmetryAndSetTrajectory, checkFilter, checkLastModel, checkLineForScript, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains, discardLinesUntilNonBlank, discardLinesUntilStartsWith, doGetModel, doGetVibration, fillDataBlock, fillDataBlock, fillFloatArray, fillFrequencyData, filterAtom, getElementSymbol, getFortranFormatLengths, getStrings, getSymmetry, getTokens, getTokens, getTokens, getTokensFloat, initializeSymmetry, isLastModel, newAtomSet, parseFloat, parseFloat, parseFloat, parseInt, parseInt, parseInt, parseInt, parseStringInfestedFloatArray, parseToken, parseToken, parseToken, parseTokenNext, parseTrimmed, parseTrimmed, processBinaryDocument, processXml, read3Vectors, readData, readLine, readLines, set2D, setAtomCoord, setAtomCoord, setFilter, setFractionalCoordinates, setIsPDB, setMOData, setPdb, 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

tokens

private java.lang.String[] tokens

isPhonon

private boolean isPhonon

isOutput

private boolean isOutput

isCell

private boolean isCell

a

private float a

b

private float b

c

private float c

alpha

private float alpha

beta

private float beta

gamma

private float gamma

abc

private javax.vecmath.Vector3f[] abc

atomCount

private int atomCount

atomPts

private javax.vecmath.Point3f[] atomPts

havePhonons

private boolean havePhonons

lastQPt

private java.lang.String lastQPt

qpt2

private int qpt2

desiredQpt

private javax.vecmath.Vector3f desiredQpt

desiredQ

private java.lang.String desiredQ

lengthUnitIds

private static final java.lang.String[] lengthUnitIds

lengthUnitFactors

private static final float[] lengthUnitFactors

TWOPI

private static final double TWOPI
See Also:
Constant Field Values
Constructor Detail

CastepReader

public CastepReader()
Method Detail

initializeReader

public void initializeReader()
                      throws java.lang.Exception
Overrides:
initializeReader in class AtomSetCollectionReader
Throws:
java.lang.Exception

setDesiredQpt

private void setDesiredQpt(java.lang.String s)

readFileData

private boolean readFileData()
                      throws java.lang.Exception
Throws:
java.lang.Exception

checkLine

protected boolean checkLine()
                     throws java.lang.Exception
Overrides:
checkLine in class AtomSetCollectionReader
Returns:
true if need to read new line
Throws:
java.lang.Exception

readOutputUnitCell

private void readOutputUnitCell()
                         throws java.lang.Exception
Throws:
java.lang.Exception

readOutputAtoms

private void readOutputAtoms()
                      throws java.lang.Exception
Throws:
java.lang.Exception

readOutputCharges

private void readOutputCharges()
                        throws java.lang.Exception
Throws:
java.lang.Exception

readPhononTrajectories

private void readPhononTrajectories()
                             throws java.lang.Exception
Throws:
java.lang.Exception

finalizeReader

protected void finalizeReader()
                       throws java.lang.Exception
Overrides:
finalizeReader in class AtomSetCollectionReader
Throws:
java.lang.Exception

setLatticeVectors

private void setLatticeVectors()

readLatticeAbc

private void readLatticeAbc()
                     throws java.lang.Exception
Throws:
java.lang.Exception

readLatticeCart

private void readLatticeCart()
                      throws java.lang.Exception
Throws:
java.lang.Exception

readPositionsFrac

private void readPositionsFrac()
                        throws java.lang.Exception
Throws:
java.lang.Exception

readPositionsAbs

private void readPositionsAbs()
                       throws java.lang.Exception
Throws:
java.lang.Exception

readLengthUnit

private float readLengthUnit(java.lang.String units)
                      throws java.lang.Exception
Throws:
java.lang.Exception

readAtomData

private void readAtomData(float factor)
                   throws java.lang.Exception
Throws:
java.lang.Exception

tokenizeCastepCell

private int tokenizeCastepCell()
                        throws java.lang.Exception
Throws:
java.lang.Exception

readPhononUnitCell

private void readPhononUnitCell()
                         throws java.lang.Exception
Throws:
java.lang.Exception

readPhononFractionalCoord

private void readPhononFractionalCoord()
                                throws java.lang.Exception
Throws:
java.lang.Exception

readPhononFrequencies

private void readPhononFrequencies()
                            throws java.lang.Exception
Throws:
java.lang.Exception

getFractionalCoord

private java.lang.String getFractionalCoord(javax.vecmath.Vector3f qvec)

isInt

private static boolean isInt(float f)

setPhononVector

private void setPhononVector(float[] data,
                             Atom atom,
                             javax.vecmath.Vector3f rTrans,
                             javax.vecmath.Vector3f qvec,
                             javax.vecmath.Vector3f v)
transform complex vibration vector to a real vector by applying the appropriate translation, storing the results in v

Parameters:
data - from .phonon line parsed for floats
atom -
rTrans - translation vector in unit fractional coord
qvec - q point vector
v - return vector