SUB_SHUILIANGJISUAN/Fortran/SUB_SHUILIANGJISUAN.f90

564 lines
14 KiB
Fortran
Raw Normal View History

2025-05-09 17:45:43 +08:00
! SUB_SHUILIANGJISUAN.f90
!
! FUNCTIONS/SUBROUTINES exported from SUB_SHUILIANGJISUAN.dll:
! SUB_SHUILIANGJISUAN - subroutine
!
subroutine SUB_SHUILIANGJISUAN( NDATA ,& ! <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LONG ,& ! <20>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
INbd ,& ! <20><><EFBFBD><EFBFBD><EFBFBD>׿<EFBFBD>
INzd ,& ! <20>׸߳<D7B8>
INsm ,& ! <20><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
INrough ,& ! <20><><EFBFBD><EFBFBD>
ZZ0 ,& ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼˮλ
DB ,& ! <20><><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.ˮλ<CBAE>߽<EFBFBD> 2.<2E><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>
UQ ,& ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DQH ,& ! <20><><EFBFBD><EFBFBD>ˮλ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dt ,& ! <20><><EFBFBD><EFBFBD><E3B2BD><EFBFBD><EFBFBD> <20>
OUTT ,& ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
OUTQ ,& ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OUTH ) ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ
! Expose subroutine SUB_SHUILIANGJISUAN to users of this DLL
!
!DEC$ ATTRIBUTES DLLEXPORT::SUB_SHUILIANGJISUAN
! Variables
INTEGER::FHD
INTEGER::NRIVER
INTEGER::NSECT
INTEGER::MRIVER
INTEGER::KRC
INTEGER::NDATA
REAL::ZZ0
INTEGER::DB
REAL::UQ(NDATA)
REAL::DQH(NDATA)
REAL::OUTQ(1000)
REAL::OUTH(1000)
REAL::OUTT(1000)
REAL::DDGC ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6>߳<EFBFBD>
REAL::MAXH
INTEGER::MY ! 1.<2E><><EFBFBD><EFBFBD> 2.δ<><CEB4><EFBFBD><EFBFBD>
integer River,tstep
! node
INTEGER,ALLOCATABLE::Ns(:),Pc(:),Nrc(:,:),Lc(:,:)
REAL,ALLOCATABLE::Dric(:,:),Qj(:,:,:),Asave(:,:)
! section
REAL,ALLOCATABLE::ds(:,:),bd(:,:),zd(:,:),sm(:,:), rough(:,:)
! boundary
INTEGER,ALLOCATABLE::UB1(:),UB2(:),DB1(:),DB2(:),NUB(:,:),NDB(:,:)
REAL,ALLOCATABLE::UBV(:,:),Aphi(:,:),DBV(:,:),Gate(:,:)
REAL::ql,Zctr
! calcu
REAL::dt,sita,Bsor1,Bsor2
! zzqq
REAL,ALLOCATABLE::Z0(:,:),Q0(:,:),Z(:,:),Q(:,:),V(:,:)
! r_bv
REAL::condu,condd(3)
! BARC
REAL::Bs,As,Rs,Cs
REAL,ALLOCATABLE::Qp(:)
REAL,ALLOCATABLE::Zc(:,:),Qc(:,:)
INTEGER::I
INTEGER::II
REAL::LONG
REAL::INbd
REAL::INzd
REAL::INsm
REAL::INrough
INTEGER::TEMP
!OPEN(1,FILE='OUTFHDL.TXT')
!WRITE(1,*)' ! <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> ', NDATA ,&
! ' ! <20>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD> ', LONG ,&
! '! <20><><EFBFBD><EFBFBD><EFBFBD>׿<EFBFBD> ', INbd ,&
! '! <20>׸߳<D7B8> ' , INzd ,&
! '! <20><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> ', INsm ,&
! ' ! <20><><EFBFBD><EFBFBD> ' , INrough ,&
! ' ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼˮλ ', ZZ0 ,&
! ' ! <20><><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.ˮλ<CBAE>߽<EFBFBD> 2.<2E><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD> ', DB ,&
! ' ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ' , UQ ,&
! ' ! <20><><EFBFBD><EFBFBD>ˮλ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ', DQH ,&
! ' ! <20><><EFBFBD><EFBFBD><E3B2BD><EFBFBD><EFBFBD> <20>룩 ', dt ,&
! '! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6>߳<EFBFBD> ', DDGC
FHD = 0
TEMP = 0
! 1.<2E><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
!open(1,file='<27>ӵ<EFBFBD><D3B5><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>.TXT')
! <20><><EFBFBD>룺1.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD> 2.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 3.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 4.<2E><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
!CALL SUB_GETNXT(1)
!read(1,*)
nriver = 1
nsect = 6
krc = 0
mriver=nsect - 1 ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ģ<EFBFBD>΢<EFBFBD><CEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>-1<><31>
ALLOCATE(Ns(nriver),Pc(nriver),Nrc(krc,nriver),Lc(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(UB1(nriver),UB2(nriver),DB1(nriver),DB2(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(Zc(nsect,nriver),Qc(nsect,nriver))
!<21><><EFBFBD>룺 1.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD> 2.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
! CALL SUB_GETNXT(1)
! DO I = 1,nriver
!read(1,*)II,Ns(i),Pc(i)
! END DO
Ns(1) = 6
Pc(1) = 0
!<21><><EFBFBD>룺! 1.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD> 2.<2E>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD>κ<EFBFBD> 3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>㣬2<E3A3AC><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺӵ<C4BA><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣺1<E3A3BA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣺-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Nrc = 0
Lc = 0
Dric = 0
! DO J = 1,nriver
! DO I = 1,Pc(J)
! CALL SUB_GETNXT(1)
!read(1,*)II,Nrc(i,j),Lc(i,j),Dric(i,j)
! END DO
! END DO
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Qj = 0.0
!DO k=1,nriver
! DO j=1,Pc(k)
! CALL SUB_GETNXT(1)
! if(Lc(j,k).eq.2)then
! read(1,*)II,II,(Qj(i,j,k),i=1,ndata)
! end if
! END DO
! END DO
! <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m2<6D><32>
Asave = 0.0
!DO k=1,nriver
! DO j=1,Pc(k)
! if(Lc(j,k).eq.3)then
! CALL SUB_GETNXT(1)
! read(1,*)Asave(j,k)
! end if
! END DO
! END DO
! 2.<2E><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! CALL SUB_GETNXT(1)
! ds = 0.0
! DO J = 1,nriver
! DO I = 1,Ns(j)-1
!read(1,*)II,II,ds(i,j) ! ÿ<><C3BF><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>΢<EFBFBD>εij<CEB5><C4B3>ȣ<EFBFBD><C8A3><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><E3A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ȡ0<C8A1><30>ÿ<EFBFBD><C3BF><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ĩ΢<C4A9>γ<EFBFBD><CEB3>ȱ<EFBFBD><C8B1><EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
! END DO
! END DO
ds(:,1) = LONG/5
! CALL SUB_GETNXT(1)
! bd = 0.0
! zd = 0.0
! sm = 0.0
! rough = 0.0
! DO j=1,nriver
! DO I =1,Ns(j)
!read(1,*)II,II,bd(i,j),zd(i,j),sm(i,j),rough(i,j) ! <20><><EFBFBD>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD>׿<EFBFBD><D7BF><EFBFBD><EFBFBD>׸̡߳<DFB3><CCA1><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! END DO
! END DO
bd = INbd
zd = INzd
sm = INsm
rough = INrough
! 3.<2E><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
! CALL SUB_GETNXT(1)
! read(1,*)ZZ0,Zctr ! ZZ0<5A><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼˮλ,Zctr<74><72><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ĩ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD>բ<EFBFBD><D5A2><EFBFBD>п<EFBFBD><D0BF><EFBFBD>ˮλ,
Zctr = 0.0
Scanal = 0.0 ! Scanal<61><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кӵ<D0BA><D3B5>ĺϼƳ<CFBC><C6B3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ql
DO J = 1,nriver
DO I = 1,Ns(j)-1
Scanal = Scanal + ds(i,j) ! ÿ<><C3BF><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>΢<EFBFBD>εij<CEB5><C4B3>ȣ<EFBFBD><C8A3><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><E3A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ȡ0<C8A1><30>ÿ<EFBFBD><C3BF><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ĩ΢<C4A9>γ<EFBFBD><CEB3>ȱ<EFBFBD><C8B1><EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
END DO
END DO
!CALL SUB_GETNXT(1)
!DO I = 1,ndata
! read(1,*)II,Qp(i) ! Qp<51><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! END DO
Qp = 0.0
! UB1<42><31><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>1<EFBFBD><31><EFBFBD><EFBFBD>ˮλ<CBAE>߽磬2<E7A3AC><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>,3<><33><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
! UB2<42><32><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磬2<E7A3AC><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ߽磩
! DB1<42><31><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>1<EFBFBD><31><EFBFBD><EFBFBD>ˮλ<CBAE>߽磬2<E7A3AC><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>,3<><33><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
! DB2<42><32><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽磬2<E7A3AC><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ߽磩
!CALL SUB_GETNXT(1)
! DO I = 1,nriver
! read(1,*)II,UB1(i),UB2(i),DB1(i),DB2(i)
!END DO
UB1(1) = 2
UB2(1) = 1
DB1(1) = DB
DB2(1) = 1
!CALL SUB_GETNXT(1)
UBV = 0.0
NUB = 0
!DO i=1,nriver
! if(UB2(i).eq.1)then ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ⲿ<EFBFBD>߽<EFBFBD>
! read(1,*)II,II,II,(UBV(j,i),j=1,ndata) ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A6>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! elseif(UB2(i).eq.2)then ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>߽<EFBFBD>
! read(1,*)II,II,II,(NUB(j,i),j=1,2) ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ߽<DAB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĺӵ<C4BA><D3B5><EFBFBD><EFBFBD>š<EFBFBD>΢<EFBFBD>α<EFBFBD><CEB1><EFBFBD>
! endif
! END DO
DO I = 1,ndata
UBV(I,1) = UQ(I)
END DO
!CALL SUB_GETNXT(1)
!DO i=1,nriver
! if(DB2(i).eq.1)then ! <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ
! if(DB1(i).eq.3)then ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>բ<EFBFBD>³<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
! read(1,*)II,II,II,(DBV(j,i),j=1,ndata),(Gate(j,i),j=1,4) ! <20><><EFBFBD><EFBFBD> Gate(1,i) = բ<><D5A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Gate(2,i) = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Gate(3,i) = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽC1<43><31>Gate(4,i) = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽC2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽQ=C1*B*e*dZ^C2<43>е<EFBFBD>C1<43><31>C2<43><32>
! ELSE
! read(1,*)II,II,II,(DBV(j,i),j=1,ndata) ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A6>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>բ<EFBFBD>³<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
! end if
! elseif(DB2(i).eq.2)then ! <20><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>
! if(DB1(i).eq.2)then
! read(1,*)II,II,II,(NDB(j,i),j=1,2),(Aphi(j,i),j=1,2) ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ߽磨<DFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> <20><><EFBFBD><EFBFBD><EFBFBD>ڱ߽<DAB1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ǹܺ<C7B9><DCBA><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
! ELSE
! read(1,*)II,II,II,(NDB(j,i),j=1,2) ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ߽<DAB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĺӵ<C4BA><D3B5><EFBFBD><EFBFBD>š<EFBFBD>΢<EFBFBD>α<EFBFBD><CEB1><EFBFBD>
! end if
! endif
!END DO
DO I = 1,ndata
DBV(I,1) = DQH(I)
END DO
! 4.<2E><><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
!CALL SUB_GETNXT(1)
!read(1,*)period,dt,sita ! period<6F><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>dt<64><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BD><EFBFBD><EFBFBD><EFBFBD>룩,sita<74><61><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽȨϵ<C8A8><CFB5>
!CALL SUB_GETNXT(1)
!read(1,*)sorz,sorq,epsz,epsq ! sorz<72><7A>sorq<72><71><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD>,epsz<73><7A>epsq<73><71><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD>
!CALL SUB_GETNXT(1)
!read(1,*)Bsor1,Bsor2 ! Bsor1<72><31>Bsor2<72><32><EFBFBD><EFBFBD>ˮբ<CBAE><D5A2><EFBFBD>߽硢<DFBD>ܺ<EFBFBD><DCBA>ڱ߽<DAB1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD>
!close(1)
period =REAL( NDATA - 1 )
! read(1,*)dt
sita = 0.7
sorz = 0.3
sorq = 0.3
epsz = 0.01
epsq = 0.1
Bsor1 = 0.3
Bsor2 = 0.1
! <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BD>
maxtstep=period*3600/dt
maxiter=1000 ! <20><><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E2B2BD>
! <20><><EFBFBD>ӵ<EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
DO river=1,nriver
DO Is=1,Ns(river)
Z0(Is,river)=ZZ0
Q0(Is,river)=0.0
END DO
END DO
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD>
!open(1,file='<27>ӵ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ<CBAE>仯.TXT')
!open(2,file='<27>ӵ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ<CBAE>仯.TXT')
!open(3,file='<27>ӵ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ<CBAE>仯.TXT')
!open(4,file='<27>ӵ<EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ<CBAE>仯.TXT')
!
!open(11,file='<27>ӵ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯.TXT')
!open(12,file='<27>ӵ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯.TXT')
!open(13,file='<27>ӵ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯.TXT')
!open(14,file='<27>ӵ<EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯.TXT')
! ----------------------------------------------------------------------------------
! <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ʱ<EFBFBD>̵<EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
! ----------------------------------------------------------------------------------
DO tstep=1,maxtstep ! <20><><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD>
TEMP = TEMP + 1
ttime=dt*tstep/3600.0 ! <20><>ʵʱ<CAB5><CAB1>
! write(*,15)ttime
iter=0
DO river=1,nriver
DO Is=1,Ns(river)
Z(Is,river)=Z0(Is,river)
Q(Is,river)=Q0(Is,river)
END DO
END DO
! <20><><EFBFBD>㵱ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
call int_a( ttime ,& ! <20><>ʵʱ<CAB5><CAB1> // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ndata ,& ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
Qp ,& ! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fc ) ! <20><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ql=fc/Scanal
25 iter=iter+1
DO river=1,nriver
DO Is=1,Ns(river)
Zc(Is,river)=Z(Is,river)
Qc(Is,river)=Q(Is,river)
END DO
END DO
DO river=1,nriver
! ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>̺Ӷ<CCBA><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α߽<CEB1><DFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
call 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 )
! <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>δ֪ʱ<D6AA><CAB1>ˮλZ<CEBB><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q
call sub_QZ( NRIVER ,&
NSECT ,&
MRIVER ,&
KRC ,&
NDATA ,&
river ,&
tstep ,&
Ns ,&
Pc ,&
Nrc ,&
Lc ,&
Dric ,&
Qj ,&
Asave ,&
ds ,&
bd ,&
zd ,&
sm ,&
rough ,&
UB1 ,&
UB2 ,&
DB1 ,&
DB2 ,&
NUB ,&
NDB ,&
UBV ,&
Aphi ,&
DBV ,&
Gate ,&
ql ,&
Zctr ,&
dt ,&
sita ,&
Bsor1 ,&
Bsor2 ,&
Z0 ,&
Q0 ,&
Z ,&
Q ,&
V ,&
condu ,&
condd ,&
Bs ,&
As ,&
Rs ,&
Cs )
END DO
dzmax=0.0
dqmax=0.0
DO river=1,nriver
DO Is=1,Ns(river)
dz=abs(Z(Is,river)-Zc(Is,river))
dq=abs(Q(Is,river)-Qc(Is,river))
if(dz.gt.dzmax)then
dzmax=dz
maxz_r=river
maxz_s=Is
end if
if(dq.gt.dqmax)then
dqmax=dq
maxq_r=river
maxq_s=Is
end if
END DO
END DO
if(dzmax.gt.epsz.or.dqmax.gt.epsq)then
! write(*,50)iter,maxz_r,maxz_s,dzmax,maxq_r,maxq_s,dqmax
DO river=1,nriver
DO Is=1,Ns(river)
Z(Is,river)=(1.0-sorz)*Zc(Is,river)+sorz*Z(Is,river)
Q(Is,river)=(1.0-sorq)*Qc(Is,river)+sorq*Q(Is,river)
END DO
END DO
if(iter.le.maxiter)then
goto 25
else
! write(*,55)
goto 600
end if
else
DO river=1,nriver
DO Is=1,Ns(river)
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BCB8>Ҫ<EFBFBD><D2AA>
call sub_sect(NRIVER ,&
NSECT ,&
MRIVER ,&
KRC ,&
NDATA ,&
river,Is,Z(Is,river),&
ds ,&
bd ,&
zd ,&
sm ,&
rough ,&
Bs ,&
As ,&
Rs ,&
Cs )
V(Is,river)=Q(Is,river)/As
END DO
END DO
! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺӵ<CDBA><D3B5><EFBFBD>ˮλ<CBAE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD><EFBFBD>
DO jj=1,nriver
!write(jj,80)ttime,(Z(ii,jj),ii=1,Ns(jj))
END DO
DO jj=1,nriver
jj1=jj+10
!write(jj1,80)ttime,(Q(ii,jj),ii=1,Ns(jj))
END DO
IF(FHD==1)THEN
OUTQ(TEMP ) = Q(5,1)*0.9
OUTH(TEMP ) = Z(5,1)*0.95
ELSE
OUTQ(TEMP ) = Q(5,1)
OUTH(TEMP ) = Z(5,1)
END IF
OUTT(TEMP ) = ttime
DO river=1,nriver
DO Is=1,Ns(river)
Z0(Is,river)=Z(Is,river)
Q0(Is,river)=Q(Is,river)
END DO
END DO
end if
END DO
600 close(100)
close(2)
close(3)
close(4)
close(11)
close(12)
close(13)
close(14)
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)
55 format(1x,'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ')
80 format(1x,40f12.4)
!MAXH = MAXVAL(OUTH)
!IF(MAXH.GT.DDGC)THEN
! MY = 1
!ELSE
! MY = 0
!END IF
!WRITE(1,*)' ! 1.<2E><><EFBFBD><EFBFBD> 0.δ<><CEB4><EFBFBD><EFBFBD> ' , MY ,&
! '! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ', OUTT ,&
! '! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ', OUTQ ,&
! '! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮλ ', OUTH
CLOSE(1)
END SUBROUTINE SUB_SHUILIANGJISUAN