我的程序运行时出错,我真的不知道为什么,你能帮我吗?问题如下:
流动问题是粘性扩散的典型例子。使用边界层理论导出这种问题的控制方程,以将完整的Navier-Stokes方程减少到单抛物线PDE。 有必要的初始和边界条件,
t = 0:u(0)= 0,u(0.04m)= 0;
t> 0:u(0)= 40.0,u(0.04m)= U = 0.0m / s。
这个问题可以在物理上描述为两个无限长度的板之间的瞬时粘性驱动流动,并且间隔0.04m的距离。最初两块板都处于静止状态。经过一段时间后,t = 0,上板在正x方向上以40.0m / s的速度运动。由于填充板之间的空间的流体的粘度,随着时间流逝,连续的流体层开始运动。最终,系统达到“准稳态”,因为速度分布在时间上或多或少是恒定的。控制方程很好地利用有限差分技术来解决瞬态域中的问题。
Fortran中的计算机代码DUFORT FRANKEL SCHEME
。
! Homework1 DUFORT FRANKE SCHEME
! Program computes the numerical solution to the
! Transient Flow Problem.
! The following initial and bounadry conditions are applied:
! t=0: u(y=0)=40.0m/s
! t>0: u(y=0)=0.0; u(y=0.04m)=0.0
parameter(maxn=30,eps=1.0e-3)
integer k,m,mm,count
real*8 u_old(1001,maxn),u_new(1001,maxn),y(maxn)
real*8 t,tau,h,r,tmax,u_init,nu,sum,error
!
data h,m,u_init,nu,r,tmax /0.001,41,0.0,2.17e-4,0.217,2.5e5/
!
open(unit=1,file='hw1_dufort.out',status='unknown')
tau=r*h**2/nu
mm=m-1
error=1.0
!
count=0
k=1
t=0.0
y(1)=0.0
!
do 2 i=2,m
y(i)=y(i-1)+h
2 continue
!
write(1,*)'Velocity Results:'
write(1,10)t,(u_old(k,j),j=1,m)
do while ((error.gt.eps).and.(count.lt.1080))
count=count+1
sum=0.0
t=t+tau
u_old(k,1)=40.0
u_old(k,m)=0.0
do 4 i=2,mm
if (k.lt.2) then
u_new(k,i)=(2.0*r/(1.0+2.0*r))*(u_old(k,i+1)+u_old(k,i-1))
else
u_new(k,i)=(2.0*r/(1.0+2.0*r))*(u_old(k,i+1)+u_old(k,i-1))+ ((1.0 -
& 2.0*r)/(1.0+2.0*r))*u_old(k-1,i)
end if
end do
!
10 format(2x,f10.3,2x,41f8.4)
write(1,'(" Number of steps for convergence = ",i4)')count
end