Esempio n. 1
0
 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)
Esempio n. 2
0
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
Esempio n. 3
0
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')