Skip to content

Commit 6d6c62a

Browse files
authored
Merge pull request #1 from Br2-1/fixingbugs
Fixing Reservoirs Inflow, Design Water Level and Total Storage Capacity Bugs
2 parents f0fa647 + 99cdfa8 commit 6d6c62a

1 file changed

Lines changed: 25 additions & 33 deletions

File tree

Routing/SourceCode/reservoir.f

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,10 @@ SUBROUTINE MAKE_CONVOLUTION
196196
& (RPATH,RESER,NCOL, NROW, NO_OF_BOX, PMAX, DAYS, CATCHIJ,
197197
& BASE, RUNO, FLOW, KE, UH_DAY, UH_S, FRACTION, FACTOR_SUM,
198198
& XC, YC, SIZE, DPREC, INPATH,ICOL,NDAY,IDAY,IMONTH,IYEAR, START_YEAR, START_MO,
199-
& MO, YR, NYR, VOL, FLOWIN, FLOWOUT, HHO, RESFLOWS, NO,RES_EVAPORATION, NO_STAS)
199+
& MO, YR, NYR, VOL, FLOWIN, FLOWOUT, HHO, RESFLOWS, NO, RESN, RES_EVAPORATION, NO_STAS)
200200
IMPLICIT NONE
201201
c Declare variables
202-
INTEGER N, NO, I, J, DAYS, NDAY, II, JJ, K, SODONG
202+
INTEGER N, NO, RESN, I, J, DAYS, NDAY, II, JJ, K, SODONG
203203
INTEGER NCOL,NROW,ICOL,PMAX,KE,UH_DAY
204204
INTEGER NO_OF_BOX(200)
205205
INTEGER CATCHIJ(PMAX,2,200)
@@ -287,7 +287,7 @@ SUBROUTINE MAKE_CONVOLUTION
287287
END DO
288288
C Look for starting year
289289
IF (NO .NE. NO_STAS) THEN
290-
WRITE(RESNO,*) NO
290+
WRITE(RESNO,*) RESN
291291
TEMPRPATH = trim(RPATH)//"res"//trim(ADJUSTL(RESNO))//".txt" ! only calculate open surface water evaporation after the commision year
292292
OPEN(26, FILE = TEMPRPATH,FORM = 'FORMATTED', STATUS='OLD',ERR=9002)
293293
READ(26,*)
@@ -747,7 +747,7 @@ SUBROUTINE MAKE_CONVOLUTIONRS
747747
& CATCHIJ, BASE, RUNO, FLOW, KE, UH_DAY, UH_S, FRACTION,
748748
& FACTOR_SUM,XC,YC,SIZE,DPREC,INPATH,ICOL,NDAY,
749749
& IDAY,IMONTH,IYEAR, START_YEAR, START_MO, MO, YR, NYR, VOL,
750-
& FLOWIN, FLOWOUT, HHO, RESFLOWS,RES_DIRECT(N,1),RES_EVAPORATION, NO_STAS)
750+
& FLOWIN, FLOWOUT, HHO, RESFLOWS,N,RES_DIRECT(N,1),RES_EVAPORATION, NO_STAS)
751751
END DO
752752
c Initiate reservoir parameters
753753
DO I = 1, NDAY
@@ -830,7 +830,7 @@ SUBROUTINE MAKE_CONVOLUTIONRS
830830
DO J = 1, NO_STAS-1
831831
CURRENTYEAR = START_YEAR + INT(I/365) ! approximate, does not consider leap years
832832
IF (CURRENTYEAR>=OPEYEAR(J)) THEN
833-
VRESER(J) = VRESERTHAT(J)
833+
VRESER(J) = VRESERTHAT(J)+VDEAD(J)
834834
REALHEAD(J) = HYDRAUHEAD(J)
835835
QRESER(J) = QRESERTHAT(J)
836836
ELSE
@@ -850,43 +850,35 @@ SUBROUTINE MAKE_CONVOLUTIONRS
850850
END IF
851851
IF (RULE(J) .EQ. 1) THEN
852852
IF (OP1(J,1)>OP1(J,2)) THEN
853-
TEMPO = OP1(J,1)
854-
OP1(J,1) = OP1(J,2)
855-
OP1(J,2) = TEMPO
856-
END IF
857853
! Caculate target water level
858-
IF ((CRTDATE .GT. OP1(J,1)) .and. (CRTDATE .LT. OP1(J,2))) THEN
859-
IF (HMAX(J) .GE. HMIN(J)) THEN
860-
DESIGNWL=(CRTDATE-OP1(J,1))/(OP1(J,2)-OP1(J,1))
854+
IF ((CRTDATE .GT. OP1(J,2)) .and. (CRTDATE .LT. OP1(J,1))) THEN
855+
DESIGNWL=(CRTDATE-OP1(J,2))/(OP1(J,1)-OP1(J,2))
861856
& *(HMAX(J)-HMIN(J))
862-
ELSE
863-
DESIGNWL=(HMIN(J)-HMAX(J))-(CRTDATE-OP1(J,1))/(OP1(J,2)-OP1(J,1))
864-
& *(HMIN(J)-HMAX(J))
865-
END IF
866-
ELSE IF (CRTDATE .GE. OP1(J,2)) THEN
867-
IF (HMAX(J) .GE. HMIN(J)) THEN
857+
ELSE IF (CRTDATE .GE. OP1(J,1)) THEN
868858
DESIGNWL=(HMAX(J)-HMIN(J))
869-
& -(CRTDATE-OP1(J,2))/(365-OP1(J,2)+OP1(J,1))*
859+
& -(CRTDATE-OP1(J,1))/(365-OP1(J,1)+OP1(J,2))*
870860
& (HMAX(J)-HMIN(J))
871861
ELSE
872-
DESIGNWL=(CRTDATE-OP1(J,2))/(365-OP1(J,2)+OP1(J,1))*
873-
& (HMIN(J)-HMAX(J))
862+
DESIGNWL=(HMAX(J)-HMIN(J))
863+
& -(CRTDATE+365-OP1(J,1))/(365-OP1(J,1)+OP1(J,2))*
864+
& (HMAX(J)-HMIN(J))
874865
END IF
875866
ELSE
876-
IF (HMAX(J) .GE. HMIN(J)) THEN
877-
DESIGNWL=(HMAX(J)-HMIN(J))
878-
& -(CRTDATE+365-OP1(J,2))/(365-OP1(J,2)+OP1(J,1))*
879-
& (HMAX(J)-HMIN(J))
880-
ELSE
881-
DESIGNWL=(CRTDATE+365-OP1(J,2))/(365-OP1(J,2)+OP1(J,1))*
882-
& (HMIN(J)-HMAX(J))
867+
IF ((CRTDATE .GT. OP1(J,1)) .and. (CRTDATE .LT. OP1(J,2))) THEN
868+
DESIGNWL=(HMAX(J)-HMIN(J))-(CRTDATE-OP1(J,1))/(OP1(J,2)-OP1(J,1))
869+
& *(HMAX(J)-HMIN(J))
870+
ELSE IF (CRTDATE .GE. OP1(J,2)) THEN
871+
DESIGNWL=(HMAX(J)-HMIN(J))/(365-OP1(J,2)+OP1(J,1))*(CRTDATE-OP1(J,2))
872+
ELSE
873+
DESIGNWL=(HMAX(J)-HMIN(J))/(365-OP1(J,2)+OP1(J,1))*
874+
& (CRTDATE-OP1(J,1))
875+
END IF
883876
END IF
877+
DESIGNWL = DESIGNWL + (HMIN(J) - H0(J))
878+
ELSE
879+
DESIGNWL = RESLV(J,CAL_MONTH(CRTDATE))
880+
DESIGNWL = DESIGNWL - H0(J)
884881
END IF
885-
DESIGNWL = DESIGNWL + (HMIN(J) - HRESERMIN(J))
886-
ELSE
887-
DESIGNWL = RESLV(J,CAL_MONTH(CRTDATE))
888-
DESIGNWL = DESIGNWL - H0(J)
889-
END IF
890882
HTK(J,I) = DESIGNWL + H0(J) ! water head
891883
CURRENTWL = VOL(J,I) * (HRESERMAX(J)-H0(J))/VRESER(J)
892884
IF (CURRENTWL>=DESIGNWL) THEN ! Zone 3

0 commit comments

Comments
 (0)