

      subroutine rungekutta2(dt,t,x,y)
C
C  takes one step for fourth-order runge-kutta
C  for two dependent variables
C
C   solves x'(t) = f(x,y,y), y'(t) = g(x,y,t)
C
C  input: 
C     dt:  step in independent variable
C       t:  independent variable
C       x,y: dependent variables
C
C  output:
C       t:
C      x,y: dependent variables
C
C   NOTES: must define functions f(x,y,t) and g(x,y,t)
C
      implicit none

      real x,y,t
      real dt         ! time step

      real f,g	! must be defined by user

      real k1,k2,k3,k4    ! intermediate evaluations
      real l1,l2,l3,l4

      k1= f(x,y,t)*dt
      l1 = g(x,y,t)*dt
      k2 = f(x+0.5*k1,y+0.5*l1,t+0.5*dt)*dt
      l2 = g(x+0.5*k1,y+0.5*l1,t+0.5*dt)*dt
      k3 = f(x+0.5*k2,y+0.5*l2,t+0.5*dt)*dt
      l3 = g(x+0.5*k2,y+0.5*l2,t+0.5*dt)*dt
      k4 = f(x+k3,y+l3,t+dt)*dt
      l4 = g(x+k3,y+l3,t+dt)*dt

      x = x+1./6.*(k1+2*k2+2*k3+k4)
      y = y+1./6.*(l1+2*l2+2*l3  +l4)
      t = t+dt

      return
      end
