プログラムでエラーが発生しますが、その理由がまったくわかりません。助けていただけませんか? 質問は以下の通りです。
流れの問題は、粘性拡散の典型的な例です。このような問題の支配方程式は、境界層理論を使用して導き出され、完全なナビエストークス方程式を単一の放物型 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 の距離で隔てられた、無限に広がる 2 つのプレート間の一時的な粘性駆動の流れとして物理的に説明できます。最初は両方のプレートが静止しています。時間 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