📄 123.f90
字号:
!!!!!!!!!!!!!!显式计算
!!!!!!!!!!!!!!作者:崔海洋 5010139006
!!!!!变量说明
!!UNEW(I),UREN(I),UOLD(I) U(n+1),U(n),U(n-1)流速值
!!HNEW(I),HREN(i),HOLD(I) H(n+1),H(n),H(n-1)的水深值
!!S1,S2 上游和下游边界的波浪波高
!!IMAX=800 断面个数
!!HO 初始水深值
!!DT=30 时间步长
!!DX=1000 距离步长
!!
INTEGER,PARAMETER:: IMAX=800
REAL:: UNEW(-1:IMAX),UREN(-1:IMAX),UOLD(-1:IMAX),HNEW(-1:IMAX),HREN(-1:IMAX),HOLD(-1:IMAX)
REAL:: H0=10.0,DT=30,DX=1000
REAL:: C=122.3167,W=2*3.142/12.4/3600,G=9.81,S1=1.5,S2
REAL:: B
B=8*G/3./3.142/C/C
IMAX1=IMAX-1
DO I=0,IMAX
HOLD(I)=1.5*(800-I)/800.
UNEW(I)=0.0
UREN(I)=0.0
UOLD(I)=0.0
ENDDO
!!欧拉步进
DO I=1,IMAX1
HREN(I)=HOLD(I)-DT/2./DX*(10.0+HOLD(I))*(UOLD(I+1)-UOLD(I-1))
UREN(I)=UOLD(I)-DT/2./DX*G*(HOLD(I+1)-HOLD(I-1))
ENDDO
UREN(IMAX)=UREN(IMAX1)
UREN(0)=UREN(1)
HREN(0)=1.5
HREN(IMAX)=0.
T=DT
OPEN(3,FILE='DIANSHUJU.DAT',STATUS='REPLACE')
DO N=1,2880
T=T+DT
S2=0.5*SIN(W*T)
HNEW(IMAX)=S2
HNEW(0)=1.5
DO I=0,IMAX1
HNEW(I)=HOLD(I)-DT/DX*(10.0+HREN(I))*(UREN(I+1)-UREN(I-1))
UNEW(I)=UOLD(I)-DT/DX*G*(HREN(I+1)-HREN(I-1))&
-2.*DT*G*ABS(UOLD(I))*UREN(I)/C/C/(10.0+HREN(I))
ENDDO
UNEW(IMAX)=UNEW(IMAX1)
UNEW(0)=UNEW(1)
DO I=0,IMAX
UOLD(I)=UREN(I)
UREN(I)=UNEW(I)
ENDDO
DO I=0,IMAX
HOLD(I)=HREN(I)
HREN(I)=HNEW(I)
ENDDO
WRITE(3,'(1F10.5)')(HNEW(800))
ENDDO
CLOSE(3)
OPEN(2,FILE='SHUJU.DAT',STATUS='REPLACE')
WRITE(2,'(1F10.5)')(HNEW(I),I=0,IMAX)
CLOSE(2)
STOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -