program fixda character*80 s80,fo,fn,st integer,allocatable::it(:) real,allocatable::r(:,:) write(6,600) 600 format(' Deletes duplicate atoms from an .x file') if(iargc().ne.3)then write(6,605) 605 format(' Usage: fixda ') stop endif call getarg(1,fo) call getarg(2,fn) call getarg(3,st) read(st,*)dl dl=dl**2 open(9,file=fo) read(9,80)s80 80 format(a80) read(9,*)nat allocate(it(nat),r(nat,3)) do 1 ia=1,nat 1 read(9,*)it(ia),(r(ia,ix),ix=1,3) close(9) write(6,602)fo(1:40),nat 602 format(a40,i6,' atoms') nd=0 33 do 2 ia=1,nat x=r(ia,1) y=r(ia,2) z=r(ia,3) do 2 ja=ia+1,nat d=(x-r(ja,1))**2+(y-r(ja,2))**2+(z-r(ja,3))**2 if (d.lt.dl)then nd=nd+1 do 3 ka=ja,nat-1 it(ka)=it(ka+1) do 3 ix=1,3 3 r(ka,ix)=r(ka+1,ix) nat=nat-1 goto 33 endif 2 continue open(9,file=fn) write(9,80)s80 write(9,*)nat do 4 ia=1,nat 4 write(9,900)it(ia),(r(ia,ix),ix=1,3) 900 format(i6,3f12.6,' 0 0 0 0 0 0 0 0.0') close(9) write(6,602),fn(1:40),nat write(6,604)nd 604 format(i4,' atoms deleted') end