Dear Bob

So far with the code I worked out I can correctly see my atom within Jmol. What 
I miss are cell parameters on the top -left corner and the cell box as well! 
Should I call another function somewhere which print them?
Further CRYSTAL uses to remove the periodicy  in  SLAB or POLYMER. the former 
keep periodic just  2 dimensions while the latter  just 1, which in nutshell 
means  having the Z (for slab) and Y and Z (for polymer) expresses as Cartesian 
 coordinates since the periodicity is reduced! Does Jmol has already 
implemented this type of sytem,  should I work out a way to tackle it ?

Crystal can also calculate vibrational frequency in Gamma as Gaussian03/09! Do 
you have some hint as to let Jmol  plot them?

Thanks a lot and have a Good Weekend, Piero



public class CrystalReader extends AtomSetCollectionReader{
 
 float a;
 float b;
 float c;
 float alpha;
 float beta ;
 float gamma;
 
 
 
  public void readAtomSetCollection(BufferedReader reader) {
  
    atomSetCollection = new AtomSetCollection("Crystal0X_output", this);
    try{
      this.reader = reader;
      atomSetCollection.setCollectionName(readLine());
     readSystem();
  
    }catch (Exception e) {
      setError(e);
    }
  }  
 private void readSystem() throws Exception{
   do{
     readLine();
     if(line.startsWith("MOLECULE")){
     setFractionalCoordinates(false);
     readAtomCoords();
     break;
     }
     if (line.startsWith("CRYSTAL")|| line.startsWith("SLAB")||
     line.startsWith("POLYMER") || line.startsWith("EXTERNAL") ){
   
       setFractionalCoordinates(true);
      
      readCellParams();
      readAtomCoords();
       break;
     }
     }while(line != null);
 
 }
 

 private void readCellParams()  throws Exception{
  
  do{
     readLine();
    
     if(line.startsWith(" PRIMITIVE CELL")){
       readLine();
       readLine();
       a = parseFloat(line.substring(2,17)) ;
       b = parseFloat(line.substring(18,33)) ;
       c = parseFloat(line.substring(34,42)) ;
       alpha =  parseFloat(line.substring(43,60)) ;
       beta =  parseFloat(line.substring(61,71)) ;
       gamma =  parseFloat(line.substring(72,80)) ;
      //this method works fine so far
       setFractionalCoordinates(true); 
       setUnitCell(a, b, c, alpha, beta, gamma);
     
      break;
     }
   }while (line != null);
  }
 
 private void readAtomCoords() throws Exception{
   setFractionalCoordinates(true);
   do{
     readLine();
     if(line.startsWith(" ATOMS IN THE ASYMMETRIC")){
       int numberAtoms = parseInt(line.substring(61,65));
      
       readLine();
       readLine();
      
       int j=0;
      for(int i=0; i<numberAtoms ; i++){
        readLine();
        addNewatom();
        String atomName = line.substring(8,11);
        String sym =atomName.substring(0,2).trim();
       
      int atomicnumber = parseInt(sym);
      Atom atom = atomSetCollection.getAtom(i);
      sym =getElementSymbol(atomicnumber);
      atom.elementSymbol=sym ;
      atom.atomName= atomName + "_" + (j++);
     
      }
       break;
       }
   }while (line != null);
 }
 private void addNewatom(){
   float x = parseFloat(line.substring(15,35));
   float y = parseFloat(line.substring(36,55));
   float z = parseFloat(line.substring(56,75));
   Atom atom=atomSetCollection.addNewAtom();
   setAtomCoord(atom, x, y,z);
  
 }

}



-- 
Pieremanuele Canepa
Room 104
Functional Material Group
School of Physical Sciences, Ingram Building,
University of Kent, Canterbury, Kent,
CT2 7NH
United Kingdom

e-mail: [email protected]
mobile: +44 (0) 7772-9756456
-----------------------------------------------------------
------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers

Reply via email to