Esempio n. 1
0
 def read_POSCAR(self,fname='POSCAR'):
     f=open(fname,'r')
     # 1st: comment
     self.c1= f.readline()
     # 2nd: multiplying factor
     self.alc= float(f.readline().split()[0])
     # 3-5: lattice vectors
     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()])
     # 6th: num of atoms par species
     data= f.readline().split()
     if( data[0].isdigit() ):
         natm_per_spcs= np.array([int(d) for d in data])
     else:
         # skip one line and read next line
         data= f.readline().split()
         natm_per_spcs= np.array([int(d) for d in data])
     # 7th: comment (in some cases, 8th line too)
     self.c7= f.readline()
     if self.c7[0] in ('s','S'):
         self.c8= f.readline()
     # hereafter: atom positions
     sid= 0
     self.atoms=[]
     for ni in natm_per_spcs:
         sid += 1
         for j in range(ni):
             line= f.readline().split()
             data= [ float(line[i]) for i in range(3)]
             ai= Atom()
             ai.set_sid(sid)
             ai.set_pos(data[0],data[1],data[2])
             ai.set_auxd(line[3:])
             ai.pbc()
             self.atoms.append(ai)
     f.close()