Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Rungen-Kutta 4 order method. Severe 161: Array bounds exceeded.

Status
Not open for further replies.

Metalman9

Technical User
Dec 16, 2013
2
So here I am trying to solve Rayleigh's differential equation using Rungen-Kutta 4th order analytic method.

This is what the exercise gives me: X(0 to 40), Y1(0)=0.1, Y2(0)=0, H=0.1, μ=0.5

This is what I ve written and gives me this error:
mlck2f7fh


Code:
	IMPLICIT REAL*8(A-K,O-Z)
	DIMENSION X(401)
	DIMENSION Y1(401)
	DIMENSION Y2(401)

	
	F2(X,Y1,Y2)=0.5D0*Y2-(0.5D0/3.0D0*(Y2**3))-Y1

	H=0.1D0
	X(0)=0
	Y1(0)=0.01D0
	Y2(0)=0


	DO I=1,400
	X(I)=X(I-1)+H
	END DO


	DO I=0,400

	K1=H*Y2(I)
	L1=H*F2(X(I),Y1(I),Y2(I))
	K2=H*(Y2(I)+L1/2.0D0)
	L2=H*F2(X(I)+H/2.0D0,Y1(I)+K1/2.0D0,Y2(I)+L1/2.0D0)
	K3=H*(Y2(I)+L2/2.0D0)
	L3=H*F2(X(I)+(H/2.0D0),Y1(I)+(K2/2.0D0),Y2(I)+(L2/2.0D0))
	K4=H*(Y2(I)+L3)
	L4=H*F2(X(I)+H,Y1(I)+K3,Y2(I)+L3)
	
	Y1(I+1)=Y1(I)+(1.0D0/6.0D0)*(K1+2.0D0*K2+2.0D0*K3+K4)
	Y2(I+1)=Y2(I)+(1.0D0/6.0D0)*(K1+2.0D0*K2+2.0D0*K3+K4)
	END DO
	
	WRITE(*,30)X(I),Y1(I),Y2(I)
30	FORMAT(2X,F8.6,2X,F8.6,2X,F8.6)
	

	STOP
	END

Any ideas why am I exceeding array bounds?
 
By default, Fortran arrays begin from 1. You need to change the array declarations
Code:
	DIMENSION X(0:400)
	DIMENSION Y1(0:400)
	DIMENSION Y2(0:400)
 
Thank you man, it worked!
Kudos to you, much appreciated!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top