@@ -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
201201c 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
288288C 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
752752c 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