program inputcage parameter (nat0=5500) dimension r(nat0,3),ia(nat0) c write(*,*)' This program takes a geometry in FILE.X' write(*,*)'and recommends cage dimensions for a cube' write(*,*)'with electron mapping; intended as a supplement' write(*,*)'to Gaussian 98' write(*,*) open(3,file='FILE.X') read(3,*) read(3,*)nat write(*,*)nat,' atoms' if(nat.gt.nat0)then write(6,*)'Too many atoms' stop endif do 1 i=1,nat read(3,*)ia(i),x,y,z r(i,1)=x r(i,2)=y r(i,3)=z if(ij.eq.1)then d=2.0 else d=2.5 endif if(i.eq.1)then xa=x xi=x yi=y ya=y zi=z za=z xac=x+d xic=x-d yac=y+d yic=y-d zac=z+d zic=z-d else if(x.lt.xi)xi=x if(y.lt.yi)yi=y if(z.lt.zi)zi=z if(x.gt.xa)xa=x if(y.gt.ya)ya=y if(z.gt.za)za=z if(x-d.lt.xic)xic=x-d if(y-d.lt.yic)yic=y-d if(z-d.lt.zic)zic=z-d if(x+d.gt.xac)xac=x+d if(y+d.gt.yac)yac=y+d if(z+d.gt.zac)zac=z+d endif 1 continue close(3) write(*,6000) write(*,6001)xi,xa,yi,ya,zi,za write(*,6002) write(*,6001)xic,xac,yic,yac,zic,zac 6000 format( 1'Found range X Y Z') 6001 format(f8.2,' to',F8.2,f10.2,' to',f8.2,f10.2,' to',f8.2,' A',/) 6002 format( 1'Recommended cage X Y Z') d=0.5 nx=int((xac-xic)/d) ny=int((yac-yic)/d) nz=int((zac-zic)/d) write(*,6003)d,nx,ny,nz 6003 format('Grid ',f7.3,' A: ',I4,' x ',I4,' x ',I4) d=0.25 nx=int((xac-xic)/d) ny=int((yac-yic)/d) nz=int((zac-zic)/d) write(*,6003)d,nx,ny,nz open(4,file='CAGE') open(45,file='CAGE.PAR') write(4,4001) 4001 format('#HF/6-31G** Geom=(NoDistance,NoAngle) ',/, 1'cube=(density,cards) nosymm',/,/, 2'example of density calculation',/,/, 3'0 1') do 100 i=1,nat 100 write(4,4002)ia(i),(r(i,j),j=1,3) 4002 format(I3,3F15.6) write(4,*) write(4,4003) 4003 format('DENSITY.BBB') write(4,4004)-2,xic,yic,zic write(45,4004)-2,xic,yic,zic 4004 format(I5,3f12.6) write(4,4004)nx, d,0.0,0.0 write(4,4004)ny,0.0, d,0.0 write(4,4004)nz,0.0,0.0, d write(45,4004)nx, d,0.0,0.0 write(45,4004)ny,0.0, d,0.0 write(45,4004)nz,0.0,0.0, d write(4,*) close(4) close(45) stop end