real work(27),y(4) integer iwork(5) common /aaa/gammam external f Open(10,file="kepler.in") open(20,file="kepler.out") Read(10,*) relerr,abserr,amass,gamma,nt,dt,y gammam=amass*gamma neqn=4 t=0 t=tout iflag=1 CALL rkf45(f,neqn,y,t,tout,relerr,abserr,iflag,work,iwork) iflag=2 do i=1,nt iflag=2 tout=t+dt CALL rkf45(f,neqn,y,t,tout,relerr,abserr,iflag,work,iwork) t=tout print "(5e15.5)",t,y enddo stop end subroutine f(t,y,dy) common /aaa/gammam real y(4),dy(4) dy(1)=y(3) dy(2)=y(4) dy(3)=-gammam*y(1)/sqrt(y(1)**2+y(2)**2)**3 dy(4)=-gammam*y(2)/sqrt(y(1)**2+y(2)**2)**3 return end