program pos implicit none double precision vreal(2),vfcc(2),v(2),u,x(3),dx(3),c,xreal(3),a,vlength integer i,j external vlength read(5,*)c a=8.490540*0.529177 !a.u. to ang. this is FeSi a=4.7097 !RuSi !real structure vreal(1)=0.12800 !Ru vreal(2)=0.83600 !Si !fcc vfcc(1)=0.25d0 vfcc(2)=0.75d0 v(1)=c*vfcc(1) + (1.d0-c)* vreal(1) v(2)=c*vfcc(2) + (1.d0-c)* vreal(2) write(*,*)c write(*,*)v write(*,*) dx=0.d0 if (c.eq.1.d0) then dx(1)=0.25 dx(2)=-0.25 dx(3)=-0.25 endif !half way !v(1)=0.1929 !v(2)=0.797 !dx=0.d0 do i=1,2 u=v(i) x(1)=u x(2)=u x(3)=u xreal(1)=vreal(i) xreal(2)=vreal(i) xreal(3)=vreal(i) x=x-dx xreal=xreal-dx write(*,'(10F12.8)') x , vlength(x,xreal)*a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! x(1)=0.5d0-u x(2)=1.d0-u x(3)=0.5d0+u xreal(1)=0.5d0-vreal(i) xreal(2)=1.d0-vreal(i) xreal(3)=0.5d0+vreal(i) x=x-dx xreal=xreal-dx do j=1,3 if (x(j).gt.1.d0) x(j)=x(j)-1.d0 if (x(j).lt.0.d0) x(j)=x(j)+1.d0 if (xreal(j).gt.1.d0) xreal(j)=xreal(j)-1.d0 if (xreal(j).lt.0.d0) xreal(j)=xreal(j)+1.d0 enddo write(*,'(10F12.8)') x, vlength(x,xreal)*a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! x(1)=0.5d0+u x(2)=0.5d0-u x(3)=1.d0-u xreal(1)=0.5d0+vreal(i) xreal(2)=0.5d0-vreal(i) xreal(3)=1.d0-vreal(i) x=x-dx xreal=xreal-dx do j=1,3 if (x(j).gt.1.d0) x(j)=x(j)-1.d0 if (x(j).lt.0.d0) x(j)=x(j)+1.d0 if (xreal(j).gt.1.d0) xreal(j)=xreal(j)-1.d0 if (xreal(j).lt.0.d0) xreal(j)=xreal(j)+1.d0 enddo write(*,'(10F12.8)') x, vlength(x,xreal)*a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! x(1)=1.d0-u x(2)=0.5d0+u x(3)=0.5d0-u xreal(1)=1.d0-vreal(i) xreal(2)=.5d0+vreal(i) xreal(3)=0.5d0-vreal(i) x=x-dx xreal=xreal-dx do j=1,3 if (x(j).gt.1.d0) x(j)=x(j)-1.d0 if (x(j).lt.0.d0) x(j)=x(j)+1.d0 if (xreal(j).gt.1.d0) xreal(j)=xreal(j)-1.d0 if (xreal(j).lt.0.d0) xreal(j)=xreal(j)+1.d0 enddo write(*,'(10F12.8)') x, vlength(x,xreal)*a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! write(*,*) enddo end double precision function vlength(x,y) implicit none double precision x(3),y(3),d integer i d=0.d0 do i=1,3 d=d+(x(i)-y(i))**2.d0 enddo vlength=dsqrt(d) end