|
发表于 2011-10-28 00:47:08
|
显示全部楼层
怎么设初值
李老师好,R-K方法中间步应该怎么设初值呢?我是这样设的,可是结果很不满意
!first order
do j=0,199
do i=0,100
u0(i)=u_1(i,j)
end do
do i=1,100
u1(i)=u0(i)-dt*(u0(i)-u0(i-1))/dx
end do
u1(0)=0
do i=1,100
u2(i)=u0(i)-0.25*dt*(u0(i)-u0(i-1))/dx-0.25*dt*(u1(i)-u1(i-1))/dx
end do
u2(0)=0
do i=1,100
u3(i)=u0(i)-dt*(u0(i)-u0(i-1))/(6*dx)-dt*(u1(i)-u1(i-1))/(6*dx)-dt*(u2(i)-u2(i-1))/(6*dx)
end do
u3(0)=0
do i=1,100
u_1(i,j+1)=u3(i)
end do
end do
!second order
do j=0,199
do i=0,100
u00(i)=u_2(i,j)
end do
u11(0)=0.0
u11(1)=0.0
do i=2,100
u11(i)=u00(i)-dt*(3*u00(i)-4*u00(i-1)+u00(i-2))/(2*dx)
end do
u22(0)=0.0
u22(1)=0.0
do i=2,100
u22(i)=u00(i)-0.25*dt*(3*u00(i)-4*u00(i-1)+u00(i-2))/(2*dx)-0.25*dt*(3*u11(i)-4*u11(i-1)+u11(i-2))/(2*dx)
end do
u33(0)=0.0
u33(1)=0.0
do i=2,100
u33(i)=u00(i)-dt*(3*u00(i)-4*u00(i-1)+u00(i-2))/(12*dx)-dt*(3*u11(i)-4*u11(i-1)+u11(i-2))/(12*dx)-dt*(3*u22(i)-4*u22(i-1)+u22(i-2))/(12*dx)
end do
do i=1,100
u_2(i,j+1)=u33(i)
end do
end do |
|