c Runge Kutta for first order differential equations c PROGRAM Runge-Kutta IMPLICIT none c c declarations c nsteps:number of steps, tstep:length of steps, y: initial position c REAL*8 t, y, tstep INTEGER i, j, nsteps nsteps=10 tstep=0.5 y=1.0 c c open file OPEN(6, FILE='rungef.dat') WRITE (6,*) 0, y c c do loop nsteps of Runga-Kutta algorithm DO 60 j = 1, nsteps t=j*tstep call rk4(t, y, tstep) WRITE (6,*) t, y 60 CONTINUE c CLOSE(6) STOP END c------------------------end of main program------------------------ c c fourth-order Runge-Kutta subroutine SUBROUTINE rk4(t, y, tstep) IMPLICIT none c c declarations REAL*8 DERIV, h, t, tstep, y REAL*8 k1, k2, k3, k4 INTEGER i, N h=tstep/2.0 c k1 = tstep * DERIV(t, y) k2 = tstep * DERIV(t+h, y+k1/2.0) k3 = tstep * DERIV(t+h, y+k2/2.0) k4 = tstep * DERIV(t+tstep, y+k3) c y = y + (k1 + (2.*(k2 + k3)) + k4)/6.0 c RETURN END c c function which returns the derivatives FUNCTION DERIV(t, temp) IMPLICIT none c c declarations REAL*8 DERIV, t, temp INTEGER i c DERIV=-temp c RETURN END