def expand(self,n1,n2,n3): #...expand unit vectors self.a1= self.a1*n1 self.a2= self.a2*n2 self.a3= self.a3*n3 n123= n1*n2*n3 nsid= 0 for ai in self.atoms: nsid= max(nsid,ai.sid) natm_per_spcs= np.zeros((nsid,),dtype=int) for ai in self.atoms: sid= ai.sid -1 natm_per_spcs[sid] += 1 natm0= self.num_atoms() atoms0= copy.copy(self.atoms) self.atoms= [] aid= 0 for ai0 in atoms0: ai0.pos[0] /= n1 ai0.pos[1] /= n2 ai0.pos[2] /= n3 for i1 in range(n1): for i2 in range(n2): for i3 in range(n3): aid += 1 ai= Atom() ai.sid= ai0.sid x= ai0.pos[0]+1.0/n1*i1 y= ai0.pos[1]+1.0/n2*i2 z= ai0.pos[2]+1.0/n3*i3 ai.set_pos(x,y,z) ai.set_auxd(ai0.auxd) ai.set_id(aid) self.atoms.append(ai)
amax = options.amax print ' amax = ', amax distance = options.distance print ' distance = ', distance, ' Ang.' pmdexec = options.pmdexec asys = AtomSystem() a1 = np.array([2.0, 0.0, 0.0]) a2 = np.array([0.0, 2.0, 0.0]) a3 = np.array([0.0, 0.0, 1.0]) alc = rcut asys.set_lattice(alc, a1, a2, a3) atom1 = Atom() atom1.set_pos(0.0, 0.0, 0.0) atom1.set_id(1) asys.add_atom(atom1) hd = distance / (alc * 2) atom2 = Atom() atom2.set_pos(hd, 0.0, 0.0) atom2.set_id(2) asys.add_atom(atom2) atom3 = Atom() atom3.set_pos(0.0, 0.0, 0.0) atom3.set_id(3) asys.add_atom(atom3) da = (amax - amin) / nsmpl
print ' rcut = ', rcut, ' Ang.' rmin = options.rmin print ' rmin = ', rmin, ' Ang.' pmdexec = options.pmdexec asys = AtomSystem() a1 = np.array([2.0, 0.0, 0.0]) a2 = np.array([0.0, 1.0, 0.0]) a3 = np.array([0.0, 0.0, 1.0]) alc = rcut asys.set_lattice(alc, a1, a2, a3) atom1 = Atom() atom2 = Atom() atom1.set_pos(0.0, 0.0, 0.0) atom1.set_id(1) asys.add_atom(atom1) atom2.set_pos(0.5, 0.0, 0.0) atom2.set_id(2) asys.add_atom(atom2) hmin = rmin / (2 * rcut) hd = (0.5 - hmin) / nsmpl fout = open('out.2body', 'w') for ip in range(nsmpl + 1): print '.', d = hmin + hd * ip asys.atoms[1].pos[0] = d asys.write_pmd('0000/pmd00000') os.system(pmdexec + ' > out.pmd')