162 lines
3.7 KiB
Fortran
162 lines
3.7 KiB
Fortran
|
! ==================================================================================
|
|||
|
! ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>̺Ӷ<CCBA><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
|
|||
|
! ==================================================================================
|
|||
|
!
|
|||
|
! ˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD>ndata<74><61><EFBFBD><EFBFBD><EFBFBD>ݵ㣨1Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ<CBAE>߽缴Ϊˮλ<CBAE><CEBB><EFBFBD>̣<EFBFBD>
|
|||
|
! <20><><EFBFBD><EFBFBD><EFBFBD>߽缴Ϊ<E7BCB4><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>߽<EFBFBD>ֻ<EFBFBD><EFBFBD><DEB5><EFBFBD>բ<EFBFBD><D5A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>բ<EFBFBD>³<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>̡<EFBFBD>
|
|||
|
! <20>ӵ<EFBFBD>ĩ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD>բˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>Q=C1*B*e*dZ^C2<43><32>Z>Ztide<64><65>Z>Zctrʱ<72><CAB1>բ<EFBFBD><D5A2>
|
|||
|
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>բ<EFBFBD><D5A2>Zctr<74>ǵ<EFBFBD><C7B5><EFBFBD>բ<EFBFBD><D5A2><EFBFBD>п<EFBFBD><D0BF><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD>֤<EFBFBD>ںӲ<DABA><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>
|
|||
|
! ----------------------------------------------------------------------------------
|
|||
|
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
|
|||
|
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)
|
|||
|
! r_bv
|
|||
|
REAL::condu,condd(3)
|
|||
|
|
|||
|
REAL:: ZQ(NDATA)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
TC=DT*FLOAT(TSTEP)/3600.0
|
|||
|
|
|||
|
! <20><><EFBFBD>α߽紦<DFBD><E7B4A6>
|
|||
|
IF(UB2(RIVER).EQ.1)THEN ! <20><>
|
|||
|
DO II=1,NDATA
|
|||
|
ZQ(II)=UBV(II,RIVER)
|
|||
|
END DO
|
|||
|
CALL INT_A(TC,NDATA,ZQ,FC)
|
|||
|
CONDU=FC
|
|||
|
ELSEIF(UB2(RIVER).EQ.2)THEN ! <20><>
|
|||
|
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
|
|||
|
|
|||
|
! <20><><EFBFBD>α߽紦<DFBD><E7B4A6>
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|