program icub implicit none character*40 fn character*80 s80 integer*4 inat,nat,grid(3),ia,ix,iy,iz,i real*8 ax,ay,az,px,py,pz,axp,ayp,azp real*8,allocatable::x(:,:),orb(:) write(6,*)' inverts cub file' call getarg(1,fn) open(8,file=fn) open(9,file='i'//fn) read(8,2000)s80 2000 format(a80) write(9,2000)s80 read(8,2000)s80 write(9,2000)s80 read(8,*)inat,ax,ay,az nat=iabs(inat) allocate(x(3,nat)) read(8,*)grid(1),px read(8,*)grid(2),py,py read(8,*)grid(3),pz,pz,pz axp=-(ax+dble(grid(1))*px) ayp=ay azp=az write(9,2001)nat,axp,ayp,azp 2001 format(i5,3f12.6) write(9,2001)grid(1),px,0.0d0,0.0d0 write(9,2001)grid(2),0.0d0,py,0.0d0 write(9,2001)grid(3),0.0d0,0.0d0,pz do 902 ia=1,nat read(8,2000)s80 read(s80(18:80),*)(x(i,ia),i=1,3) 902 write(9,2200)s80(1:17),-x(1,ia),x(2,ia),x(3,ia) 2200 format(a17,3f12.6) c read(8,905)j,(idum,i=1,j) c05 format(10i5) allocate(orb(grid(1)*grid(2)*grid(3))) do 906 ix=1,grid(1) do 906 iy=1,grid(2) 906 read( 8,4000) 1(orb(iz+grid(3)*(iy-1+grid(2)*(ix-1))),iz=1,grid(3)) do 907 ix=1,grid(1) i=grid(1)-ix+1 do 907 iy=1,grid(2) 907 write(9,4000) 1(orb(iz+grid(3)*(iy-1+grid(2)*(i -1))),iz=1,grid(3)) 4000 format(6E13.5) close(8) close(9) end