主题:继续求解答!求指导!我承认我比较笨~
很感谢之前几位前辈的指导,我把程序重新整理了一下,发现还是越界了。而且我不知道我的输出是否是正确的。请指导。万分感谢!
对了,我觉得问题就是出在后面那个收敛条件。
program main
implicit none
!参数设置
integer,parameter::N=11,K=1000
real t(K,N) !温度的二维数组,K表示时刻,N表示节点
integer i,j,C
real tf1,tf2,h
real Bi,Fo,e
tf1=10.0
tf2=20.0
h=1000.0
Bi=0.3
Fo=0.08617
e=0.01
!设置初始温度
DO j=1,N
t(1,j)=100.0
end do
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!计算节点温度
C=0 !设置一个计数器,代表迭代次数
do i=1,k-1
C=C+1
do j=1,N
if(j==1)then
t(i+1,j)=t(i,j)*(1-2*Fo*Bi-2*Fo)+2*Fo*t(i,j+1)+2*Fo*Bi*tf1 !计算左边节点的温度
else if(j>1.AND.j<N)then
else
t(i+1,j)=t(i,j)*(1-2*Fo*Bi-2*Fo)+2*Fo*t(i,j-1)+2*Fo*Bi*tf2 !计算右边节点的温度
end if
end do
if(ABS(t(i+1,j)-t(i,j)).LE.e)exit !收敛条件,即当两个时刻的温度差的绝对值小于e时退出循环
end do
!输出结果,即输出收敛时刻的温度值
do j=1,11
write(*,*)t(C,j)
end do
stop
end program