program makefc character*80 fn,s80 character*2 sy integer symboltoatnumber c write(6,6000) 6000 format(' Making big FILE.X movie file from CPMD output',/) if(iargc().gt.0)then call getarg(1,fn) call getarg(2,s80) read(s80,*)NA1 call getarg(3,s80) read(s80,*)NA2 call getarg(4,s80) read(s80,*)NN else write(6,*)'Trajectory filename:' read(5,200)fn 200 format(a80) write(6,6001) 6001 format( 1 'Interval of atoms, geom int (N1 N2 NN, "0 0 0" for all): ',$) read(5,*)NA1,NA2,NN endif ig=0 it=0 if(NN.eq.0)NN=1 open(3,file='FILE.X') open(4,file=fn) 1 read(4,*,err=999,end=999)nat if(NA1.eq.0)NA1=1 if(NA2.eq.0)NA2=nat read(4,200,err=999,end=999)s80 ig=ig+1 if((ig/NN)*NN.eq.ig)then it=it+1 write(3,200)s80 write(3,*)NA2-NA1+1 do 2 ia=1,nat read(4,200)s80 read(s80(3:80),*)x,y,z if(ia.ge.NA1.and.ia.le.NA2)then write(3,300)symboltoatnumber(s80(1:2)),x,y,z 300 format(i3,3f12.6) endif 2 continue else do 21 ia=1,nat 21 read(4,*) endif goto 1 999 close(4) close(3) write(6,*)' FILE.X made.' write(6,600)ig,it 600 format(I8,' geometries found;',I8,' written.') stop end function symboltoatnumber(s) implicit none character*(*)s integer symboltoatnumber,jstart,jend,iend,istart,i character*2 atsy(89) DATA ATSy/'H ','HE','LI','BE','B ','C ','N ','O ','F ','NE', 3'NA','MG','AL','SI','P ','S ','CL','AR', 4'K ','CA','SC','TI','V ','CR','MN','FE','CO','NI','CU','ZN', 4 'GA','GE','AS','SE','BR','KR', 5'RB','SR','Y ','ZR','NB','MO','TC','RU','RH','PD','AG','CD', 5 'IN','SN','SB','TE','I ','XE', 6'CS','BA','LA', 6 'CE','PR','ND','PM','SM','EU','GD','TB','DY','HO', 6 'ER','TM','YB','LU', 6'HF','TA','W ','RE','OS','IR','PT','AU','HG', 6 'TL','PB','BI','PO','AT','RN', 7'FR','RA','AC'/ jstart=1 do 1 istart=1,len(s) 1 if(s(istart:istart).ne.' ')goto 2 2 do 3 iend=len(s),1,-1 3 if(s(iend:iend).ne.' ')goto 4 4 do 6 i=istart,iend 6 if(ichar(s(i:i)).gt.96)s(i:i)=char(ichar(s(i:i))-32) do 5 i=1,89 if(atsy(i)(2:2).eq.' ')then jend=1 else jend=2 endif if(atsy(i)(jstart:jend).eq.s(istart:iend))then symboltoatnumber=i return endif 5 continue write(6,*)s,' symbol not found' symboltoatnumber=0 return end