PROGRAM CCTN_UTILS integer*4 mxln,mxnp parameter (mxln=200000,mxnp=20) character*80 ln(mxln),filename integer*4 ni(mxnp),i,j,nat character*1 ok write(6,*)' Reading CCT.INP' open(10,file='CCT.INP',status='old') i=1 1 read(10,1000,err=999,end=999)ln(i) 1000 format(a80) i=i+1 if(i.gt.mxln)then write(6,*)'Too many lines' stop endif goto 1 999 close(10) ll=i-1 write(6,*)ll,' lines' write(6,*)'Input number of atoms:' read(5,*)nat 5 write(6,*)'Number of processors:' read(5,*)n if(n.gt.mxnp)then write(6,*)'Too many processors' stop endif ni(1)=int(sqrt(real(nat)**2/real(n))) j=1 2 j=j+1 if(j.lt.n)then ni(j)=int(sqrt(real(nat)**2/real(n)+real(ni(j-1)+1)**2)) endif if(j.eq.n)ni(j)=nat if(j.lt.n)goto 2 do 4 i=1,n ii=n-i+1 if(ii.eq.1)then n2=nat else n2=nat-ni(ii-1) endif 4 write(6,600)i,nat-ni(ii)+1,n2 600 format(i3,i8,' - ',i8) write(6,*)'Do you accept this division (y/n)?' read(5,'(a)')ok if(ok.ne.'y'.and.ok.ne.'Y')goto 5 do 7 i=1,n filename='CCT'//char(48+i)//'.INP' write(6,1000)filename open(40,file=filename) ii=n-i+1 if(ii.eq.1)then n2=nat else n2=nat-ni(ii-1) endif write(40,4001) 4001 format('N1N2') write(40,400)nat-ni(ii)+1,n2 400 format(2i8) do 6 il=1,ll 6 write(40,1000)ln(il) close(40) 7 continue write(6,*)n,' inputs created.' stop end