0

我的程序运行时出错,我真的不知道为什么,请你帮帮我吗?问题如下:

流动问题是粘性扩散的经典例子。使用边界层理论推导出此类问题的控制方程,以将完整的 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 之后,上板以 40.0m/s 的速度沿正 x 方向运动。由于填充板之间空间的流体的粘度,随着时间的流逝,连续的流体层开始运动。最终,系统达到“准稳态”,因为速度分布在时间上变得或多或少恒定。控制方程非常适合使用有限差分技术来解决瞬态域中的问题。

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
4

0 回答 0