2025-05-09 17:45:43 +08:00
|
|
|
|
! ==================================================================================
|
2025-05-09 17:56:57 +08:00
|
|
|
|
! 确定计算时刻河段上下游边界条件值的子程序
|
2025-05-09 17:45:43 +08:00
|
|
|
|
! ==================================================================================
|
|
|
|
|
!
|
2025-05-09 17:56:57 +08:00
|
|
|
|
! 说明:下游外边界条件都给定一个过程,有ndata个数据点(1小时间隔),水位边界即为水位过程,
|
|
|
|
|
! 流量边界即为流量过程,水位流量关系边界只限挡潮闸情况,给出闸下潮位过程。
|
|
|
|
|
! 河道末端挡潮闸水位流量关系简化成Q=C1*B*e*dZ^C2。Z>Ztide且Z>Zctr时开闸,
|
|
|
|
|
! 否则关闸,Zctr是挡潮闸运行控制水位,保证内河不会过低。
|
2025-05-09 17:45:43 +08:00
|
|
|
|
! ----------------------------------------------------------------------------------
|
|
|
|
|
SUBROUTINE SUB_BOUND( NRIVER ,&
|
|
|
|
|
NSECT ,&
|
|
|
|
|
MRIVER ,&
|
|
|
|
|
KRC ,&
|
|
|
|
|
NDATA ,&
|
|
|
|
|
river ,&
|
|
|
|
|
tstep ,&
|
|
|
|
|
Ns ,&
|
|
|
|
|
Pc ,&
|
|
|
|
|
Nrc ,&
|
|
|
|
|
Lc ,&
|
|
|
|
|
Dric ,&
|
|
|
|
|
Qj ,&
|
|
|
|
|
Asave ,&
|
|
|
|
|
UB1 ,&
|
|
|
|
|
UB2 ,&
|
|
|
|
|
DB1 ,&
|
|
|
|
|
DB2 ,&
|
|
|
|
|
NUB ,&
|
|
|
|
|
NDB ,&
|
|
|
|
|
UBV ,&
|
|
|
|
|
Aphi ,&
|
|
|
|
|
DBV ,&
|
|
|
|
|
Gate ,&
|
|
|
|
|
ql ,&
|
|
|
|
|
Zctr ,&
|
|
|
|
|
dt ,&
|
|
|
|
|
sita ,&
|
|
|
|
|
Bsor1 ,&
|
|
|
|
|
Bsor2 ,&
|
|
|
|
|
Z0 ,&
|
|
|
|
|
Q0 ,&
|
|
|
|
|
Z ,&
|
|
|
|
|
Q ,&
|
|
|
|
|
V ,&
|
|
|
|
|
condu ,&
|
|
|
|
|
condd )
|
|
|
|
|
|
|
|
|
|
INTEGER::NRIVER
|
|
|
|
|
INTEGER::NSECT
|
|
|
|
|
INTEGER::MRIVER
|
|
|
|
|
INTEGER::KRC
|
|
|
|
|
INTEGER::NDATA
|
|
|
|
|
|
|
|
|
|
INTEGER RIVER,TSTEP
|
|
|
|
|
|
|
|
|
|
! node
|
|
|
|
|
INTEGER::Ns(nriver),Pc(nriver),Nrc(krc,nriver),Lc(krc,nriver)
|
|
|
|
|
REAL::Dric(krc,nriver),Qj(ndata,krc,nriver),Asave(krc,nriver)
|
|
|
|
|
! boundary
|
2025-05-09 17:56:57 +08:00
|
|
|
|
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
|
2025-05-09 17:45:43 +08:00
|
|
|
|
! calcu
|
|
|
|
|
REAL::dt,sita,Bsor1,Bsor2
|
|
|
|
|
! zzqq
|
2025-05-09 17:56:57 +08:00
|
|
|
|
REAL::Z0(nsect,nriver),Q0(nsect,nriver),Z(nsect,nriver),&
|
|
|
|
|
Q(nsect,nriver),V(nsect,nriver)
|
2025-05-09 17:45:43 +08:00
|
|
|
|
! r_bv
|
|
|
|
|
REAL::condu,condd(3)
|
|
|
|
|
|
|
|
|
|
REAL:: ZQ(NDATA)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TC=DT*FLOAT(TSTEP)/3600.0
|
|
|
|
|
|
2025-05-09 17:56:57 +08:00
|
|
|
|
! 上游边界处理
|
|
|
|
|
IF(UB2(RIVER).EQ.1)THEN ! 外
|
2025-05-09 17:45:43 +08:00
|
|
|
|
DO II=1,NDATA
|
|
|
|
|
ZQ(II)=UBV(II,RIVER)
|
|
|
|
|
END DO
|
|
|
|
|
CALL INT_A(TC,NDATA,ZQ,FC)
|
|
|
|
|
CONDU=FC
|
2025-05-09 17:56:57 +08:00
|
|
|
|
ELSEIF(UB2(RIVER).EQ.2)THEN ! 内
|
2025-05-09 17:45:43 +08:00
|
|
|
|
IR=NUB(1,RIVER)
|
|
|
|
|
IS=NUB(2,RIVER)
|
|
|
|
|
IF(UB1(RIVER).EQ.1)THEN
|
|
|
|
|
CONDU=Z(IS,IR)
|
|
|
|
|
END IF
|
|
|
|
|
IF(UB1(RIVER).EQ.2)THEN
|
|
|
|
|
CONDU=Q(IS+1,IR)
|
|
|
|
|
END IF
|
|
|
|
|
END IF
|
|
|
|
|
|
2025-05-09 17:56:57 +08:00
|
|
|
|
! 下游边界处理
|
2025-05-09 17:45:43 +08:00
|
|
|
|
IF(DB2(RIVER).EQ.1)THEN
|
|
|
|
|
DO II=1,NDATA
|
|
|
|
|
ZQ(II)=DBV(II,RIVER)
|
|
|
|
|
END DO
|
|
|
|
|
CALL INT_A(TC,NDATA,ZQ,FC)
|
|
|
|
|
IF(DB1(RIVER).EQ.1)THEN
|
|
|
|
|
CONDD(1)=1.0
|
|
|
|
|
CONDD(2)=0.0
|
|
|
|
|
CONDD(3)=FC
|
|
|
|
|
ELSE IF(DB1(RIVER).EQ.2)THEN
|
|
|
|
|
CONDD(1)=0.0
|
|
|
|
|
CONDD(2)=1.0
|
|
|
|
|
CONDD(3)=FC
|
|
|
|
|
ELSE IF(DB1(RIVER).EQ.3)THEN
|
|
|
|
|
ZU0=Z0(NS(RIVER)-1,RIVER)
|
|
|
|
|
ZU=Z0(NS(RIVER)-1,RIVER)
|
|
|
|
|
ZU=(1-BSOR1)*ZU0+BSOR1*ZU
|
|
|
|
|
B=GATE(1,RIVER)
|
|
|
|
|
QMAX=GATE(2,RIVER)
|
|
|
|
|
C1=GATE(3,RIVER)
|
|
|
|
|
C2=GATE(4,RIVER)
|
|
|
|
|
IF(ZU>FC.AND.ZU>=ZCTR)THEN
|
|
|
|
|
DZ=ZU-FC
|
|
|
|
|
EK=5.0*DZ
|
|
|
|
|
IF(DZ<0.15)THEN
|
|
|
|
|
E=0.0
|
|
|
|
|
END IF
|
|
|
|
|
QQ=C1*B*EK*DZ**C2
|
|
|
|
|
QQ=(1-BSOR1)*Q0(NS(RIVER),RIVER)+BSOR1*QQ
|
|
|
|
|
IF(QQ>QMAX)THEN
|
|
|
|
|
QQ=QMAX
|
|
|
|
|
END IF
|
|
|
|
|
CONDD(1)=0.0
|
|
|
|
|
CONDD(2)=1.0
|
|
|
|
|
CONDD(3)=QQ
|
|
|
|
|
ELSE
|
|
|
|
|
CONDD(1)=0.0
|
|
|
|
|
CONDD(2)=1.0
|
|
|
|
|
CONDD(3)=0.0
|
|
|
|
|
END IF
|
|
|
|
|
END IF
|
|
|
|
|
ELSEIF(DB2(RIVER).EQ.2)THEN
|
|
|
|
|
IR=NDB(1,RIVER)
|
|
|
|
|
IS=NDB(2,RIVER)
|
|
|
|
|
IF(DB1(RIVER).EQ.1)THEN
|
|
|
|
|
CONDD(1)=1.0
|
|
|
|
|
CONDD(2)=0.0
|
|
|
|
|
CONDD(3)=Z(IS,IR)
|
|
|
|
|
ELSE
|
|
|
|
|
AH=APHI(1,RIVER)
|
|
|
|
|
PHI=APHI(2,RIVER)
|
|
|
|
|
IF(Z(NS(RIVER),RIVER)>=Z(IS,IR))THEN
|
|
|
|
|
QQ=AH*PHI*SQRT(2*9.8*(Z(NS(RIVER),RIVER)-Z(IS,IR)))
|
|
|
|
|
ELSE
|
|
|
|
|
QQ=-AH*PHI*SQRT(2*9.8*(Z(IS,IR)-Z(NS(RIVER),RIVER)))
|
|
|
|
|
END IF
|
|
|
|
|
QQ=(1-BSOR2)*Q0(NS(RIVER),RIVER)+BSOR2*QQ
|
|
|
|
|
CONDD(1)=0.0
|
|
|
|
|
CONDD(2)=1.0
|
|
|
|
|
CONDD(3)=QQ
|
|
|
|
|
END IF
|
|
|
|
|
END IF
|
|
|
|
|
|
|
|
|
|
END SUBROUTINE SUB_BOUND
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|