-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrk4.f
More file actions
38 lines (36 loc) · 1.17 KB
/
Copy pathrk4.f
File metadata and controls
38 lines (36 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
C***********************************************************************
C23456789012345678901234567890123456789012345678901234567890123456789012
C***********************************************************************
subroutine RK4(neq, yo, yf, to, h, FUNC)
C***********************************************************************
C
C Advance one time step using fourth-order (complex) Runge-Kutta
C
c***********************************************************************
external FUNC
integer neq
real to, h
complex yo(neq), yf(neq)
complex f(neq), k1(neq), k2(neq), k3(neq), k4(neq), q(neq)
call FUNC(neq, yo, to, f)
do j = 1 , neq
k1(j) = h*f(j)
q(j) = yo(j) + 0.5*k1(j)
end do
call FUNC(neq, q, to+0.5*h, f)
do j = 1 , neq
k2(j) = h*f(j)
q(j) = yo(j) + 0.5*k2(j)
end do
call FUNC(neq, q, to+0.5*h, f)
do j = 1 , neq
k3(j) = h*f(j)
q(j) = yo(j) + k3(j)
end do
call FUNC(neq, q, to+h, f)
do j = 1 , neq
k4(j) = h*f(j)
yf(j) = yo(j)+k1(j)/6.+(k2(j)+k3(j))/3.+k4(j)/6.
end do
return
end