Ejemplo n.º 1
0
 def read_pmd(self,fname='pmd0000'):
     f=open(fname,'r')
     # 1st: lattice constant
     self.alc= float(f.readline().split()[0])
     # 2nd-4th: cell vectors
     # for i in range(3):
     #     data= f.readline().split()
     #     self.a1[i]= float(data[0])
     #     self.a2[i]= float(data[1])
     #     self.a3[i]= float(data[2])
     self.a1= np.array([float(x) for x in f.readline().split()])
     self.a2= np.array([float(x) for x in f.readline().split()])
     self.a3= np.array([float(x) for x in f.readline().split()])
     # 5th-7th: velocity of cell vectors
     tmp= f.readline().split()
     tmp= f.readline().split()
     tmp= f.readline().split()
     # 8st: num of atoms
     natm= int(f.readline().split()[0])
     # 9th-: atom positions
     self.atoms= []
     symbol = None
     for i in range(natm):
         data= [float(x) for x in f.readline().split()]
         ai= Atom()
         ai.decode_tag(data[0])
         if self.specorder:
             symbol = self.specorder[ai.sid-1]
         if symbol and ai.symbol != symbol:
             ai.set_symbol(symbol)
         ai.set_pos(data[1],data[2],data[3]) # position
         ai.set_vel(data[4],data[5],data[6]) # velocity
         ai.set_ekin(data[7])
         ai.set_epot(data[8])
         ai.set_strs(data[9],data[10],data[11],
                     data[12],data[13],data[14])
         self.atoms.append(ai)
     f.close()