更新 Fortran/SUB_SHUILIANGJISUAN.f90
This commit is contained in:
parent
027e45867b
commit
c8bef7928e
@ -3,21 +3,21 @@
|
|||||||
! FUNCTIONS/SUBROUTINES exported from SUB_SHUILIANGJISUAN.dll:
|
! FUNCTIONS/SUBROUTINES exported from SUB_SHUILIANGJISUAN.dll:
|
||||||
! SUB_SHUILIANGJISUAN - subroutine
|
! SUB_SHUILIANGJISUAN - subroutine
|
||||||
!
|
!
|
||||||
subroutine SUB_SHUILIANGJISUAN( NDATA ,& ! 计算时刻数 // 输入参数
|
subroutine SUB_SHUILIANGJISUAN( NDATA ,& ! 计算时刻数 // 输入参数
|
||||||
LONG ,& ! 河道长度
|
LONG ,& ! 河道长度
|
||||||
INbd ,& ! 断面底宽
|
INbd ,& ! 断面底宽
|
||||||
INzd ,& ! 底高程
|
INzd ,& ! 底高程
|
||||||
INsm ,& ! 边坡系数
|
INsm ,& ! 边坡系数
|
||||||
INrough ,& ! 糙率
|
INrough ,& ! 糙率
|
||||||
ZZ0 ,& ! 计算区域初始水位
|
ZZ0 ,& ! 计算区域初始水位
|
||||||
DB ,& ! 下游边界条件类型 1.水位边界 2.流量边界
|
DB ,& ! 下游边界条件类型 1.水位边界 2.流量边界
|
||||||
UQ ,& ! 上游流量过程
|
UQ ,& ! 上游流量过程
|
||||||
DQH ,& ! 上游水位/流量过程
|
DQH ,& ! 上游水位/流量过程
|
||||||
dt ,& ! 计算步长( 秒)
|
dt ,& ! 计算步长( 秒)
|
||||||
OUTT ,& ! 计算断面输出时刻
|
OUTT ,& ! 计算断面输出时刻
|
||||||
OUTQ ,& ! 计算断面输出流量
|
OUTQ ,& ! 计算断面输出流量
|
||||||
OUTH ) ! 计算断面输出水位
|
OUTH )& ! 计算断面输出水位
|
||||||
|
BIND(C, NAME="SUB_SHUILIANGJISUAN")
|
||||||
! Expose subroutine SUB_SHUILIANGJISUAN to users of this DLL
|
! Expose subroutine SUB_SHUILIANGJISUAN to users of this DLL
|
||||||
!
|
!
|
||||||
!DEC$ ATTRIBUTES DLLEXPORT::SUB_SHUILIANGJISUAN
|
!DEC$ ATTRIBUTES DLLEXPORT::SUB_SHUILIANGJISUAN
|
||||||
@ -43,11 +43,11 @@ INTEGER::FHD
|
|||||||
REAL::OUTH(1000)
|
REAL::OUTH(1000)
|
||||||
REAL::OUTT(1000)
|
REAL::OUTT(1000)
|
||||||
|
|
||||||
REAL::DDGC ! 计算断面堤顶高程
|
REAL::DDGC ! 计算断面堤顶高程
|
||||||
|
|
||||||
REAL::MAXH
|
REAL::MAXH
|
||||||
|
|
||||||
INTEGER::MY ! 1.漫溢 2.未漫溢
|
INTEGER::MY ! 1.漫溢 2.未漫溢
|
||||||
|
|
||||||
integer River,tstep
|
integer River,tstep
|
||||||
! node
|
! node
|
||||||
@ -84,44 +84,48 @@ INTEGER::FHD
|
|||||||
INTEGER::TEMP
|
INTEGER::TEMP
|
||||||
|
|
||||||
!OPEN(1,FILE='OUTFHDL.TXT')
|
!OPEN(1,FILE='OUTFHDL.TXT')
|
||||||
!WRITE(1,*)' ! 计算时刻数 ', NDATA ,&
|
!WRITE(1,*)' ! 计算时刻数 ', NDATA ,&
|
||||||
! ' ! 河道长度 ', LONG ,&
|
! ' ! 河道长度 ', LONG ,&
|
||||||
! '! 断面底宽 ', INbd ,&
|
! '! 断面底宽 ', INbd ,&
|
||||||
! '! 底高程 ' , INzd ,&
|
! '! 底高程 ' , INzd ,&
|
||||||
! '! 边坡系数 ', INsm ,&
|
! '! 边坡系数 ', INsm ,&
|
||||||
! ' ! 糙率 ' , INrough ,&
|
! ' ! 糙率 ' , INrough ,&
|
||||||
! ' ! 计算区域初始水位 ', ZZ0 ,&
|
! ' ! 计算区域初始水位 ', ZZ0 ,&
|
||||||
! ' ! 下游边界条件类型 1.水位边界 2.流量边界 ', DB ,&
|
! ' ! 下游边界条件类型 1.水位边界 2.流量边界 ', DB ,&
|
||||||
! ' ! 上游流量过程 ' , UQ ,&
|
! ' ! 上游流量过程 ' , UQ ,&
|
||||||
! ' ! 上游水位/流量过程 ', DQH ,&
|
! ' ! 上游水位/流量过程 ', DQH ,&
|
||||||
! ' ! 计算步长( 秒) ', dt ,&
|
! ' ! 计算步长( 秒) ', dt ,&
|
||||||
! '! 计算断面堤顶高程 ', DDGC
|
! '! 计算断面堤顶高程 ', DDGC
|
||||||
FHD = 0
|
FHD = 0
|
||||||
TEMP = 0
|
TEMP = 0
|
||||||
|
|
||||||
! 1.读入河道组态数据
|
! 1.读入河道组态数据
|
||||||
!open(1,file='河道组态数据.TXT')
|
!open(1,file='河道组态数据.TXT')
|
||||||
|
|
||||||
! 读入:1.河道数量 2.河道计算断面数最大值 3.河道汊点数最大值 4.计算时刻数
|
! 读入:1.河道数量 2.河道计算断面数最大值 3.河道汊点数最大值 4.计算时刻数
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
!read(1,*)
|
!read(1,*)
|
||||||
nriver = 1
|
nriver = 1
|
||||||
nsect = 6
|
nsect = 6
|
||||||
krc = 0
|
krc = 0
|
||||||
|
|
||||||
mriver=nsect - 1 ! 这是我写的,微段数不就等于断面数-1吗
|
mriver=nsect - 1 ! 这是我写的,微段数不就等于断面数-1吗
|
||||||
|
|
||||||
ALLOCATE(Ns(nriver),Pc(nriver),Nrc(krc,nriver),Lc(krc,nriver))
|
ALLOCATE(Ns(nriver),Pc(nriver),Nrc(krc,nriver),Lc(krc,nriver))
|
||||||
ALLOCATE(Dric(krc,nriver),Qj(ndata,krc,nriver),Asave(krc,nriver))
|
ALLOCATE(Dric(krc,nriver),Qj(ndata,krc,nriver),Asave(krc,nriver))
|
||||||
ALLOCATE(ds(mriver,nriver),bd(nsect,nriver),zd(nsect,nriver),sm(nsect,nriver), rough(nsect,nriver))
|
ALLOCATE(ds(mriver,nriver),bd(nsect,nriver),zd(nsect,nriver),&
|
||||||
ALLOCATE(UB1(nriver),UB2(nriver),DB1(nriver),DB2(nriver),NUB(2,nriver),NDB(2,nriver))
|
sm(nsect,nriver), rough(nsect,nriver))
|
||||||
ALLOCATE(UBV(ndata,nriver),Aphi(2,nriver),DBV(ndata,nriver),Gate(4,nriver))
|
ALLOCATE(UB1(nriver),UB2(nriver),DB1(nriver),DB2(nriver),&
|
||||||
ALLOCATE(Z0(nsect,nriver),Q0(nsect,nriver),Z(nsect,nriver),Q(nsect,nriver),V(nsect,nriver))
|
NUB(2,nriver),NDB(2,nriver))
|
||||||
|
ALLOCATE(UBV(ndata,nriver),Aphi(2,nriver),DBV(ndata,nriver),&
|
||||||
|
Gate(4,nriver))
|
||||||
|
ALLOCATE(Z0(nsect,nriver),Q0(nsect,nriver),Z(nsect,nriver),&
|
||||||
|
Q(nsect,nriver),V(nsect,nriver))
|
||||||
ALLOCATE(Qp(ndata))
|
ALLOCATE(Qp(ndata))
|
||||||
ALLOCATE(Zc(nsect,nriver),Qc(nsect,nriver))
|
ALLOCATE(Zc(nsect,nriver),Qc(nsect,nriver))
|
||||||
|
|
||||||
!读入: 1.河道序号 2.河道断面数 3.河道汊点数
|
!读入: 1.河道序号 2.河道断面数 3.河道汊点数
|
||||||
! (所有汊点均变成三汊口处理)
|
! (所有汊点均变成三汊口处理)
|
||||||
! CALL SUB_GETNXT(1)
|
! CALL SUB_GETNXT(1)
|
||||||
! DO I = 1,nriver
|
! DO I = 1,nriver
|
||||||
!read(1,*)II,Ns(i),Pc(i)
|
!read(1,*)II,Ns(i),Pc(i)
|
||||||
@ -129,9 +133,9 @@ INTEGER::FHD
|
|||||||
Ns(1) = 6
|
Ns(1) = 6
|
||||||
Pc(1) = 0
|
Pc(1) = 0
|
||||||
|
|
||||||
!读入:! 1.河道序号 2.河道汊点微段号 3.汊点类型 4.流动方向
|
!读入:! 1.河道序号 2.河道汊点微段号 3.汊点类型 4.流动方向
|
||||||
! 汊点类型:1——普通汊点,2——集中入流,3——调蓄水库
|
! 汊点类型:1——普通汊点,2——集中入流,3——调蓄水库
|
||||||
! 与汊点相连的河道或集中入流的水流方向,流入汊点:1,流出汊点:-1,调蓄水库任意给定
|
! 与汊点相连的河道或集中入流的水流方向,流入汊点:1,流出汊点:-1,调蓄水库任意给定
|
||||||
Nrc = 0
|
Nrc = 0
|
||||||
Lc = 0
|
Lc = 0
|
||||||
Dric = 0
|
Dric = 0
|
||||||
@ -142,7 +146,7 @@ INTEGER::FHD
|
|||||||
! END DO
|
! END DO
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
! 集中入流的汊点读入流量过程
|
! 集中入流的汊点读入流量过程
|
||||||
Qj = 0.0
|
Qj = 0.0
|
||||||
!DO k=1,nriver
|
!DO k=1,nriver
|
||||||
! DO j=1,Pc(k)
|
! DO j=1,Pc(k)
|
||||||
@ -153,7 +157,7 @@ INTEGER::FHD
|
|||||||
! END DO
|
! END DO
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
! 连接调蓄水库的汊点读入水库面积(m2)
|
! 连接调蓄水库的汊点读入水库面积(m2)
|
||||||
Asave = 0.0
|
Asave = 0.0
|
||||||
!DO k=1,nriver
|
!DO k=1,nriver
|
||||||
! DO j=1,Pc(k)
|
! DO j=1,Pc(k)
|
||||||
@ -164,12 +168,12 @@ INTEGER::FHD
|
|||||||
! END DO
|
! END DO
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
! 2.读入河道几何数据
|
! 2.读入河道几何数据
|
||||||
! CALL SUB_GETNXT(1)
|
! CALL SUB_GETNXT(1)
|
||||||
! ds = 0.0
|
! ds = 0.0
|
||||||
! DO J = 1,nriver
|
! DO J = 1,nriver
|
||||||
! DO I = 1,Ns(j)-1
|
! DO I = 1,Ns(j)-1
|
||||||
!read(1,*)II,II,ds(i,j) ! 每条河道各微段的长度,普通汊点、集中入流微段及调蓄水库的长度取0,每条河道的首末微段长度必须取一个非零值。
|
!read(1,*)II,II,ds(i,j) ! 每条河道各微段的长度,普通汊点、集中入流微段及调蓄水库的长度取0,每条河道的首末微段长度必须取一个非零值。
|
||||||
! END DO
|
! END DO
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
@ -182,7 +186,7 @@ INTEGER::FHD
|
|||||||
! rough = 0.0
|
! rough = 0.0
|
||||||
! DO j=1,nriver
|
! DO j=1,nriver
|
||||||
! DO I =1,Ns(j)
|
! DO I =1,Ns(j)
|
||||||
!read(1,*)II,II,bd(i,j),zd(i,j),sm(i,j),rough(i,j) ! 梯形断面底宽、底高程、边坡系数、糙率
|
!read(1,*)II,II,bd(i,j),zd(i,j),sm(i,j),rough(i,j) ! 梯形断面底宽、底高程、边坡系数、糙率
|
||||||
! END DO
|
! END DO
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
@ -191,31 +195,31 @@ INTEGER::FHD
|
|||||||
sm = INsm
|
sm = INsm
|
||||||
rough = INrough
|
rough = INrough
|
||||||
|
|
||||||
! 3.读入河道边界数据
|
! 3.读入河道边界数据
|
||||||
! CALL SUB_GETNXT(1)
|
! CALL SUB_GETNXT(1)
|
||||||
! read(1,*)ZZ0,Zctr ! ZZ0——计算区域初始水位,Zctr——河道末端挡潮闸运行控制水位,
|
! read(1,*)ZZ0,Zctr ! ZZ0——计算区域初始水位,Zctr——河道末端挡潮闸运行控制水位,
|
||||||
|
|
||||||
Zctr = 0.0
|
Zctr = 0.0
|
||||||
|
|
||||||
Scanal = 0.0 ! Scanal——河网所有河道的合计长度,用于计算旁侧入流量ql
|
Scanal = 0.0 ! Scanal——河网所有河道的合计长度,用于计算旁侧入流量ql
|
||||||
|
|
||||||
DO J = 1,nriver
|
DO J = 1,nriver
|
||||||
DO I = 1,Ns(j)-1
|
DO I = 1,Ns(j)-1
|
||||||
Scanal = Scanal + ds(i,j) ! 每条河道各微段的长度,普通汊点、集中入流微段及调蓄水库的长度取0,每条河道的首末微段长度必须取一个非零值。
|
Scanal = Scanal + ds(i,j) ! 每条河道各微段的长度,普通汊点、集中入流微段及调蓄水库的长度取0,每条河道的首末微段长度必须取一个非零值。
|
||||||
END DO
|
END DO
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
!DO I = 1,ndata
|
!DO I = 1,ndata
|
||||||
! read(1,*)II,Qp(i) ! Qp——计算区域入河流量过程
|
! read(1,*)II,Qp(i) ! Qp——计算区域入河流量过程
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
Qp = 0.0
|
Qp = 0.0
|
||||||
|
|
||||||
! UB1上游边界条件类型1(1——水位边界,2——流量边界,3——水位流量关系)
|
! UB1上游边界条件类型1(1——水位边界,2——流量边界,3——水位流量关系)
|
||||||
! UB2上游边界条件类型2(1——河网外边界,2——河网内边界)
|
! UB2上游边界条件类型2(1——河网外边界,2——河网内边界)
|
||||||
! DB1下游边界条件类型1(1——水位边界,2——流量边界,3——水位流量关系)
|
! DB1下游边界条件类型1(1——水位边界,2——流量边界,3——水位流量关系)
|
||||||
! DB2下游边界条件类型2(1——河网外边界,2——河网内边界)
|
! DB2下游边界条件类型2(1——河网外边界,2——河网内边界)
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
! DO I = 1,nriver
|
! DO I = 1,nriver
|
||||||
! read(1,*)II,UB1(i),UB2(i),DB1(i),DB2(i)
|
! read(1,*)II,UB1(i),UB2(i),DB1(i),DB2(i)
|
||||||
@ -234,10 +238,10 @@ INTEGER::FHD
|
|||||||
UBV = 0.0
|
UBV = 0.0
|
||||||
NUB = 0
|
NUB = 0
|
||||||
!DO i=1,nriver
|
!DO i=1,nriver
|
||||||
! if(UB2(i).eq.1)then ! 如果是上游河网外部边界
|
! if(UB2(i).eq.1)then ! 如果是上游河网外部边界
|
||||||
! read(1,*)II,II,II,(UBV(j,i),j=1,ndata) ! 读入上游外边界断面处的水位,或流量过程
|
! read(1,*)II,II,II,(UBV(j,i),j=1,ndata) ! 读入上游外边界断面处的水位,或流量过程
|
||||||
! elseif(UB2(i).eq.2)then ! 如果是上游河网内部边界
|
! elseif(UB2(i).eq.2)then ! 如果是上游河网内部边界
|
||||||
! read(1,*)II,II,II,(NUB(j,i),j=1,2) ! 读入上游内边界断面所连接的河道编号、微段编号
|
! read(1,*)II,II,II,(NUB(j,i),j=1,2) ! 读入上游内边界断面所连接的河道编号、微段编号
|
||||||
! endif
|
! endif
|
||||||
! END DO
|
! END DO
|
||||||
|
|
||||||
@ -247,17 +251,19 @@ INTEGER::FHD
|
|||||||
|
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
!DO i=1,nriver
|
!DO i=1,nriver
|
||||||
! if(DB2(i).eq.1)then ! 下游外部
|
! if(DB2(i).eq.1)then ! 下游外部
|
||||||
! if(DB1(i).eq.3)then ! 如果是闸下潮位过程
|
! if(DB1(i).eq.3)then ! 如果是闸下潮位过程
|
||||||
! read(1,*)II,II,II,(DBV(j,i),j=1,ndata),(Gate(j,i),j=1,4) ! 读入 Gate(1,i) = 闸净宽;Gate(2,i) = 最大过流量;Gate(3,i) = 流量公式C1;Gate(4,i) = 流量公式C2 (流量公式Q=C1*B*e*dZ^C2中的C1和C2)
|
! read(1,*)II,II,II,(DBV(j,i),j=1,ndata),&
|
||||||
|
(Gate(j,i),j=1,4) ! 读入 Gate(1,i) = 闸净宽;Gate(2,i) = 最大过流量;Gate(3,i) = 流量公式C1;Gate(4,i) = 流量公式C2 (流量公式Q=C1*B*e*dZ^C2中的C1和C2)
|
||||||
! ELSE
|
! ELSE
|
||||||
! read(1,*)II,II,II,(DBV(j,i),j=1,ndata) ! 读入下游外边界断面处的水位,或流量,或闸下潮位过程
|
! read(1,*)II,II,II,(DBV(j,i),j=1,ndata) ! 读入下游外边界断面处的水位,或流量,或闸下潮位过程
|
||||||
! end if
|
! end if
|
||||||
! elseif(DB2(i).eq.2)then ! 下游内部
|
! elseif(DB2(i).eq.2)then ! 下游内部
|
||||||
! if(DB1(i).eq.2)then
|
! if(DB1(i).eq.2)then
|
||||||
! read(1,*)II,II,II,(NDB(j,i),j=1,2),(Aphi(j,i),j=1,2) ! 下游流量内边界(管涵)的过流断面面积、流速系数 下游内边界一般用水位,如果用流量,一般是管涵,需要提供过流面积和流速系数
|
! read(1,*)II,II,II,(NDB(j,i),j=1,2),&
|
||||||
|
(Aphi(j,i),j=1,2) ! 下游流量内边界(管涵)的过流断面面积、流速系数 下游内边界一般用水位,如果用流量,一般是管涵,需要提供过流面积和流速系数
|
||||||
! ELSE
|
! ELSE
|
||||||
! read(1,*)II,II,II,(NDB(j,i),j=1,2) ! 读入下游内边界断面所连接的河道编号、微段编号
|
! read(1,*)II,II,II,(NDB(j,i),j=1,2) ! 读入下游内边界断面所连接的河道编号、微段编号
|
||||||
! end if
|
! end if
|
||||||
! endif
|
! endif
|
||||||
!END DO
|
!END DO
|
||||||
@ -266,13 +272,13 @@ INTEGER::FHD
|
|||||||
DBV(I,1) = DQH(I)
|
DBV(I,1) = DQH(I)
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
! 4.读入河道计算条件
|
! 4.读入河道计算条件
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
!read(1,*)period,dt,sita ! period——计算小时数,dt——计算时间步长(秒),sita——水量隐格式权系数
|
!read(1,*)period,dt,sita ! period——计算小时数,dt——计算时间步长(秒),sita——水量隐格式权系数
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
!read(1,*)sorz,sorq,epsz,epsq ! sorz、sorq——水位、流量迭代松弛因子,epsz、epsq——水位、流量迭代控制精度
|
!read(1,*)sorz,sorq,epsz,epsq ! sorz、sorq——水位、流量迭代松弛因子,epsz、epsq——水位、流量迭代控制精度
|
||||||
!CALL SUB_GETNXT(1)
|
!CALL SUB_GETNXT(1)
|
||||||
!read(1,*)Bsor1,Bsor2 ! Bsor1、Bsor2——水闸外边界、管涵内边界计算中的松弛因子
|
!read(1,*)Bsor1,Bsor2 ! Bsor1、Bsor2——水闸外边界、管涵内边界计算中的松弛因子
|
||||||
!close(1)
|
!close(1)
|
||||||
|
|
||||||
period =REAL( NDATA - 1 )
|
period =REAL( NDATA - 1 )
|
||||||
@ -290,11 +296,11 @@ INTEGER::FHD
|
|||||||
Bsor2 = 0.1
|
Bsor2 = 0.1
|
||||||
|
|
||||||
|
|
||||||
! 计算时间步长
|
! 计算时间步长
|
||||||
maxtstep=period*3600/dt
|
maxtstep=period*3600/dt
|
||||||
maxiter=1000 ! 仿真模拟步数
|
maxiter=1000 ! 仿真模拟步数
|
||||||
|
|
||||||
! 给河道水位、流量赋初值
|
! 给河道水位、流量赋初值
|
||||||
DO river=1,nriver
|
DO river=1,nriver
|
||||||
DO Is=1,Ns(river)
|
DO Is=1,Ns(river)
|
||||||
Z0(Is,river)=ZZ0
|
Z0(Is,river)=ZZ0
|
||||||
@ -302,24 +308,24 @@ INTEGER::FHD
|
|||||||
END DO
|
END DO
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
! 流量、水位输出
|
! 流量、水位输出
|
||||||
!open(1,file='河道1各断面水位变化.TXT')
|
!open(1,file='河道1各断面水位变化.TXT')
|
||||||
!open(2,file='河道2各断面水位变化.TXT')
|
!open(2,file='河道2各断面水位变化.TXT')
|
||||||
!open(3,file='河道3各断面水位变化.TXT')
|
!open(3,file='河道3各断面水位变化.TXT')
|
||||||
!open(4,file='河道4各断面水位变化.TXT')
|
!open(4,file='河道4各断面水位变化.TXT')
|
||||||
!
|
!
|
||||||
!open(11,file='河道1各断面流量变化.TXT')
|
!open(11,file='河道1各断面流量变化.TXT')
|
||||||
!open(12,file='河道2各断面流量变化.TXT')
|
!open(12,file='河道2各断面流量变化.TXT')
|
||||||
!open(13,file='河道3各断面流量变化.TXT')
|
!open(13,file='河道3各断面流量变化.TXT')
|
||||||
!open(14,file='河道4各断面流量变化.TXT')
|
!open(14,file='河道4各断面流量变化.TXT')
|
||||||
|
|
||||||
! ----------------------------------------------------------------------------------
|
! ----------------------------------------------------------------------------------
|
||||||
! 迭代求解每个时刻的水位、流量
|
! 迭代求解每个时刻的水位、流量
|
||||||
! ----------------------------------------------------------------------------------
|
! ----------------------------------------------------------------------------------
|
||||||
DO tstep=1,maxtstep ! 步数累加器
|
DO tstep=1,maxtstep ! 步数累加器
|
||||||
|
|
||||||
TEMP = TEMP + 1
|
TEMP = TEMP + 1
|
||||||
ttime=dt*tstep/3600.0 ! 真实时刻
|
ttime=dt*tstep/3600.0 ! 真实时刻
|
||||||
! write(*,15)ttime
|
! write(*,15)ttime
|
||||||
|
|
||||||
iter=0
|
iter=0
|
||||||
@ -330,11 +336,11 @@ INTEGER::FHD
|
|||||||
END DO
|
END DO
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
! 计算当前时刻入河流量大小
|
! 计算当前时刻入河流量大小
|
||||||
call int_a( ttime ,& ! 真实时刻 // 输入参数
|
call int_a( ttime ,& ! 真实时刻 // 输入参数
|
||||||
ndata ,& ! 入河流量变化过程时段数
|
ndata ,& ! 入河流量变化过程时段数
|
||||||
Qp ,& ! 入河流量变化过程线
|
Qp ,& ! 入河流量变化过程线
|
||||||
fc ) ! 当前时刻入河流量大小 // 输出参数
|
fc ) ! 当前时刻入河流量大小 // 输出参数
|
||||||
|
|
||||||
ql=fc/Scanal
|
ql=fc/Scanal
|
||||||
|
|
||||||
@ -348,7 +354,7 @@ INTEGER::FHD
|
|||||||
END DO
|
END DO
|
||||||
|
|
||||||
DO river=1,nriver
|
DO river=1,nriver
|
||||||
! 确定计算时刻河段上下游边界条件值
|
! 确定计算时刻河段上下游边界条件值
|
||||||
call sub_bound( NRIVER ,&
|
call sub_bound( NRIVER ,&
|
||||||
NSECT ,&
|
NSECT ,&
|
||||||
MRIVER ,&
|
MRIVER ,&
|
||||||
@ -387,7 +393,7 @@ INTEGER::FHD
|
|||||||
condu ,&
|
condu ,&
|
||||||
condd )
|
condd )
|
||||||
|
|
||||||
! 用四点隐格式计算未知时层水位Z和流量Q
|
! 用四点隐格式计算未知时层水位Z和流量Q
|
||||||
call sub_QZ( NRIVER ,&
|
call sub_QZ( NRIVER ,&
|
||||||
NSECT ,&
|
NSECT ,&
|
||||||
MRIVER ,&
|
MRIVER ,&
|
||||||
@ -461,8 +467,10 @@ INTEGER::FHD
|
|||||||
|
|
||||||
DO river=1,nriver
|
DO river=1,nriver
|
||||||
DO Is=1,Ns(river)
|
DO Is=1,Ns(river)
|
||||||
Z(Is,river)=(1.0-sorz)*Zc(Is,river)+sorz*Z(Is,river)
|
Z(Is,river)=(1.0-sorz)*Zc(Is,river)+&
|
||||||
Q(Is,river)=(1.0-sorq)*Qc(Is,river)+sorq*Q(Is,river)
|
sorz*Z(Is,river)
|
||||||
|
Q(Is,river)=(1.0-sorq)*Qc(Is,river)+&
|
||||||
|
sorq*Q(Is,river)
|
||||||
END DO
|
END DO
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
@ -477,7 +485,7 @@ INTEGER::FHD
|
|||||||
|
|
||||||
DO river=1,nriver
|
DO river=1,nriver
|
||||||
DO Is=1,Ns(river)
|
DO Is=1,Ns(river)
|
||||||
! 计算断面几何要素
|
! 计算断面几何要素
|
||||||
call sub_sect(NRIVER ,&
|
call sub_sect(NRIVER ,&
|
||||||
NSECT ,&
|
NSECT ,&
|
||||||
MRIVER ,&
|
MRIVER ,&
|
||||||
@ -499,7 +507,7 @@ INTEGER::FHD
|
|||||||
END DO
|
END DO
|
||||||
END DO
|
END DO
|
||||||
|
|
||||||
! 输出几个典型河道的水位流量变化过程
|
! 输出几个典型河道的水位流量变化过程
|
||||||
DO jj=1,nriver
|
DO jj=1,nriver
|
||||||
!write(jj,80)ttime,(Z(ii,jj),ii=1,Ns(jj))
|
!write(jj,80)ttime,(Z(ii,jj),ii=1,Ns(jj))
|
||||||
END DO
|
END DO
|
||||||
@ -540,8 +548,9 @@ INTEGER::FHD
|
|||||||
close(14)
|
close(14)
|
||||||
|
|
||||||
15 format(55x,'time=',f10.2)
|
15 format(55x,'time=',f10.2)
|
||||||
50 format(55x,'iter=',i5/1x,'maxz_r=',i5,5x,'maxz_s=',i5,5x,'dzmax=',e10.4/1x,'maxq_r=',i5,5x,'maxq_s=',i5,5x,'dqmax=',e10.4)
|
50 format(55x,'iter=',i5/1x,'maxz_r=',i5,5x,'maxz_s=',i5,&
|
||||||
55 format(1x,'迭代发散')
|
5x,'dzmax=',e10.4/1x,'maxq_r=',i5,5x,'maxq_s=',i5,5x,'dqmax=',e10.4)
|
||||||
|
55 format(1x,'迭代发散')
|
||||||
80 format(1x,40f12.4)
|
80 format(1x,40f12.4)
|
||||||
|
|
||||||
|
|
||||||
@ -552,10 +561,10 @@ INTEGER::FHD
|
|||||||
! MY = 0
|
! MY = 0
|
||||||
!END IF
|
!END IF
|
||||||
|
|
||||||
!WRITE(1,*)' ! 1.漫溢 0.未漫溢 ' , MY ,&
|
!WRITE(1,*)' ! 1.漫溢 0.未漫溢 ' , MY ,&
|
||||||
! '! 计算断面输出时刻 ', OUTT ,&
|
! '! 计算断面输出时刻 ', OUTT ,&
|
||||||
! '! 计算断面输出流量 ', OUTQ ,&
|
! '! 计算断面输出流量 ', OUTQ ,&
|
||||||
! '! 计算断面输出水位 ', OUTH
|
! '! 计算断面输出水位 ', OUTH
|
||||||
|
|
||||||
CLOSE(1)
|
CLOSE(1)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user