更新 Fortran/SUB_QZ.f90
This commit is contained in:
parent
09b57710b8
commit
c852e41e3c
@ -1,5 +1,5 @@
|
||||
! ==================================================================================
|
||||
! 用四点隐格式计算未知时层水位Z和流量Q的子程序
|
||||
! 用四点隐格式计算未知时层水位Z和流量Q的子程序
|
||||
! ==================================================================================
|
||||
subroutine sub_QZ( NRIVER ,&
|
||||
NSECT ,&
|
||||
@ -62,14 +62,18 @@
|
||||
INTEGER::Ns(nriver),Pc(nriver),Nrc(krc,nriver),Lc(krc,nriver)
|
||||
REAL::Dric(krc,nriver),Qj(ndata,krc,nriver),Asave(krc,nriver)
|
||||
! section
|
||||
REAL::ds(mriver,nriver),bd(nsect,nriver),zd(nsect,nriver),sm(nsect,nriver), rough(nsect,nriver)
|
||||
REAL::ds(mriver,nriver),bd(nsect,nriver),zd(nsect,nriver),&
|
||||
sm(nsect,nriver), rough(nsect,nriver)
|
||||
! boundary
|
||||
INTEGER::UB1(nriver),UB2(nriver),DB1(nriver),DB2(nriver),NUB(2,nriver),NDB(2,nriver)
|
||||
REAL::UBV(ndata,nriver),Aphi(2,nriver),DBV(ndata,nriver),Gate(4,nriver),ql,Zctr
|
||||
INTEGER::UB1(nriver),UB2(nriver),DB1(nriver),DB2(nriver),&
|
||||
NUB(2,nriver),NDB(2,nriver)
|
||||
REAL::UBV(ndata,nriver),Aphi(2,nriver),DBV(ndata,nriver),&
|
||||
Gate(4,nriver),ql,Zctr
|
||||
! calcu
|
||||
REAL::dt,sita,Bsor1,Bsor2
|
||||
! zzqq
|
||||
REAL::Z0(nsect,nriver),Q0(nsect,nriver),Z(nsect,nriver),Q(nsect,nriver),V(nsect,nriver)
|
||||
REAL::Z0(nsect,nriver),Q0(nsect,nriver),Z(nsect,nriver),&
|
||||
Q(nsect,nriver),V(nsect,nriver)
|
||||
! r_bv
|
||||
REAL::condu,condd(3)
|
||||
! BARC
|
||||
@ -83,7 +87,7 @@
|
||||
if(UB1(river).eq.2)Q(1,river)=condu
|
||||
|
||||
! ----------------------------------------------------------------------------------
|
||||
! 计算递推公式系数L、M、P、R
|
||||
! 计算递推公式系数L、M、P、R
|
||||
! ----------------------------------------------------------------------------------
|
||||
P(1)=condu
|
||||
R(1)=0.0
|
||||
@ -137,9 +141,9 @@
|
||||
|
||||
if(Ik.ne.1)then
|
||||
! ------------------------------------------------------
|
||||
! 非汊点河段计算
|
||||
! 非汊点河段计算
|
||||
!
|
||||
! 计算河段M点处的水面宽B、面积A、水力半径R、流量Q和水位Z
|
||||
! 计算河段M点处的水面宽B、面积A、水力半径R、流量Q和水位Z
|
||||
! ------------------------------------------------------
|
||||
call sub_sect( NRIVER ,&
|
||||
NSECT ,&
|
||||
@ -187,11 +191,12 @@
|
||||
Zm=f(Z0(k,river),Z(k,river),Z0(k+1,river),Z(k+1,river))
|
||||
|
||||
! ------------------------------------------------------
|
||||
! 计算河段方程中的系数
|
||||
! 计算河段方程中的系数
|
||||
! ------------------------------------------------------
|
||||
a1=1.0
|
||||
c1=2.0*sita*dt/(ds(k,river)*Bm)
|
||||
e1=Z0(k,river)+Z0(k+1,river)+(1.0-sita)/sita*c1*(Q0(k,river)-Q0(k+1,river))+2.0*dt*ql/Bm
|
||||
e1=Z0(k,river)+Z0(k+1,river)+(1.0-sita)/sita*c1*(Q0(k,river)&
|
||||
-Q0(k+1,river))+2.0*dt*ql/Bm
|
||||
a2=2.0*sita*dt/ds(k,river)*((Qm/Am)**2.0*Bm-9.8*Am)
|
||||
c2=1.0-4.0*sita*dt/ds(k,river)*Qm/Am
|
||||
d2=1.0+4.0*sita*dt/ds(k,river)*Qm/Am
|
||||
@ -227,11 +232,14 @@
|
||||
Rs ,&
|
||||
Cs )
|
||||
AZm2=As
|
||||
e2=(1.0-sita)/sita*a2*(Z0(k+1,river)-Z0(k,river))+(1.0-4.0*(1.0-sita)*dt/ds(k,river)*Qm/Am)*Q0(k+1,river)+(1.0+4.0*(1.0-sita)*dt/ds(k,river)*Qm/Am)*Q0(k,river)+2.0*dt*(Qm/Am)**2.0*(AZm2-AZm1)/ds(k,river)-2.0*dt*9.8*abs(Qm)*Qm/(Am*Cm*Cm*Rm)
|
||||
e2=(1.0-sita)/sita*a2*(Z0(k+1,river)-Z0(k,river))+(1.0-4.0*&
|
||||
(1.0-sita)*dt/ds(k,river)*Qm/Am)*Q0(k+1,river)+(1.0+4.0*&
|
||||
(1.0-sita)*dt/ds(k,river)*Qm/Am)*Q0(k,river)+2.0*dt*&
|
||||
(Qm/Am)**2.0*(AZm2-AZm1)/ds(k,river)-2.0*dt*9.8*abs(Qm)*Qm/(Am*Cm*Cm*Rm)
|
||||
else
|
||||
|
||||
! --------------------------------------------------------
|
||||
! 汊点计算处理(普通汊点Lc=1,集中入流Lc=2,调蓄水库Lc=3)
|
||||
! 汊点计算处理(普通汊点Lc=1,集中入流Lc=2,调蓄水库Lc=3)
|
||||
! --------------------------------------------------------
|
||||
if(Lc(Ic,river).eq.1)then
|
||||
do 35 j=1,nriver
|
||||
@ -279,7 +287,7 @@
|
||||
end if
|
||||
|
||||
! ------------------------------------------------------
|
||||
! 求上游边界条件为水位过程线的递推系数
|
||||
! 求上游边界条件为水位过程线的递推系数
|
||||
! ------------------------------------------------------
|
||||
if(UB1(river).eq.1)then
|
||||
Y1=a1*R(k)-c1
|
||||
@ -293,7 +301,7 @@
|
||||
R(k+1)=(d2*Y1-c1*Y2)/Y5
|
||||
end if
|
||||
! ------------------------------------------------------
|
||||
! 求上游边界条件为流量过程线的递推系数
|
||||
! 求上游边界条件为流量过程线的递推系数
|
||||
! ------------------------------------------------------
|
||||
if(UB1(river).eq.2)then
|
||||
Y1=a1-c1*R(k)
|
||||
@ -317,10 +325,11 @@
|
||||
CC1=CC2
|
||||
100 continue
|
||||
! ----------------------------------------------------------------------------------
|
||||
! 回代求出流量Q和水位Z
|
||||
! 回代求出流量Q和水位Z
|
||||
! ----------------------------------------------------------------------------------
|
||||
if(UB1(river).eq.1)then
|
||||
Q(Ns(river),river)=(condd(3)-condd(1)*P(Ns(river)))/(condd(1)*R(Ns(river))+condd(2))
|
||||
Q(Ns(river),river)=(condd(3)-condd(1)*P(Ns(river)))/&
|
||||
(condd(1)*R(Ns(river))+condd(2))
|
||||
do 120 i=Ns(river),2,-1
|
||||
Z(i,river)=P(i)+R(i)*Q(i,river)
|
||||
Q(i-1,river)=L(i)+M(i)*Q(i,river)
|
||||
@ -328,7 +337,8 @@
|
||||
end if
|
||||
|
||||
if(UB1(river).eq.2)then
|
||||
Z(Ns(river),river)=(condd(3)-condd(2)*P(Ns(river)))/(condd(2)*R(Ns(river))+condd(1))
|
||||
Z(Ns(river),river)=(condd(3)-condd(2)*P(Ns(river)))/&
|
||||
(condd(2)*R(Ns(river))+condd(1))
|
||||
do 130 i=Ns(river),2,-1
|
||||
Q(i,river)=P(i)+R(i)*Z(i,river)
|
||||
Z(i-1,river)=L(i)+M(i)*Z(i,river)
|
||||
|
Loading…
Reference in New Issue
Block a user