SUBROUTINE WATROF(THLIQ,THICE,ZPOND,OVRFLW,SUBFLW,RUNOFF, 4,1
1 FI,ZPLIM,XSLOPE,GRKFAC,WFSURF,WFCINT,
2 DELZW,THPOR,THLMIN,BI,THFC,THCRIT,DODRN,
3 DOVER,DIDRN,DIDRNMX,ISAND,IWF,IG,ILG,IL1,IL2)
C * AUG 19/04 - Y.DELAGE. REGROUP COMMON BLOCKS
C * MAKE DECLARATIONS EXPLICIT
C * AUG 02/02 - R.SOULIS/D.VERSEGHY. UPDATES DEVELOPED AT
C * WATERLOO.
C * DEC 10/01 - R.SOULIS/K.SNELGROVE/T.WHIDDEN/D.VERSEGHY
C * WATFLOOD ROUTINE TO CALCULATE OVERLAND FLOW AND
C * INTERFLOW COMPONENTS OF SURFACE RUNOFF.
C
IMPLICIT NONE
INTEGER IWF,IG,ILG,IL1,IL2,I,J
REAL HP,HARAT,CCH,WFFLIM,WFF,WFKMA,WFAREA,RATIO,HMULT
C
C * INPUT/OUTPUT ARRAYS.
C
REAL THLIQ (ILG,IG), THICE (ILG,IG), ZPOND (ILG),
1 OVRFLW(ILG), SUBFLW(ILG), RUNOFF(ILG)
C
C * INPUT ARRAYS.
C
REAL FI (ILG), ZPLIM (ILG), XSLOPE(ILG),
1 GRKFAC(ILG), WFSURF(ILG), WFCINT(ILG)
C
C * SOIL INFORMATION ARRAYS.
C
REAL DELZW (ILG,IG), THPOR (ILG,IG), THLMIN(ILG,IG),
1 BI (ILG,IG), THFC (ILG,IG)
INTEGER ISAND (ILG,IG)
C
C * WORK ARRAYS.
C
REAL THCRIT(ILG,IG), DODRN (ILG), DOVER (ILG),
1 DIDRN (ILG,IG), DIDRNMX(ILG,IG)
C
#include "class_com.cdk"
C
C-----------------------------------------------------------------------
C
C * PART 1 - OVERLAND FLOW
C * (MODELLED USING MANNINGS EQUATION).
C * CALCULATED USING A PARAMETER "WFSURF" WHICH IS A COMBINATION
C * OF MANNING'S "N" AND THE DRAINAGE DENSITY "DD":
C * WFSURF = 'N' / (2*DD).
C * SINCE DD = 1/(AVERAGE INTERSTEAM DISTANCE) THIS CAN ALSO BE
C * INTERPRETED AS:
C * WFSURF = 'N' * (EFFECTIVE HILLSLOPE LENGTH).
DO 100 I=IL1,IL2
IF(FI(I).GT.0.0 .AND. IWF.GT.0) THEN
DOVER(I)=MAX(ZPOND(I)-ZPLIM(I),0.)
DODRN(I)=DOVER(I)**(5./3.)*SQRT(XSLOPE(I))*
1 DELT/WFSURF(I)
IF(DOVER(I).GT.0.0) THEN
DODRN(I)=DODRN(I)*(1.0-0.833333*DODRN(I)/DOVER(I))
ELSE
DODRN(I)=0.0
ENDIF
IF(DODRN(I).GT.DOVER(I)/2.0) DODRN(I)=DOVER(I)/2.0
RUNOFF(I)=RUNOFF(I)+DODRN(I)
OVRFLW(I)=OVRFLW(I)+FI(I)*DODRN(I)
ZPOND(I)=ZPOND(I)-DODRN(I)
ENDIF
100 CONTINUE
C * PART 2 - INTERFLOW
C * (MODELLED AS FLOW ALONG A SHALLOW SLOPING AQUIFER).
C * CALCULATED FROM THE RELATIVE DEPTH OF THE CONTRIBUTING
C * PORTION OF THE SOIL (HARAT), THE CRITICAL SOIL MOISTURE
C * CONTENT AT WHICH UNSATURATED FLOW BEGINS TO TAKE PLACE,
C * THE FIELD CAPACITY, THE RELATIVE SATURATION AND THE
C * INTERNAL SLOPE.
IF(IWF.GT.0) THEN
DO 250 J=1,IWF
DO 200 I=IL1,IL2
IF(FI(I).GT.0.0 .AND. ISAND(I,J).GE.-2) THEN
HP=GRKFAC(I)*DELZW(I,J)
HARAT=(1.0-EXP(-HP))/HP
CCH=2.0*BI(I,J)+3.0
THCRIT(I,J)=(1.0-HARAT/CCH)*THPOR(I,J)
IF(THCRIT(I,J).LE.0.0 .OR. THCRIT(I,J).GT.
1 THPOR(I,J)) THEN
CALL XIT
('WATROF',-1)
ENDIF
WFFLIM=CCH-(CCH+1.0)*CCH/(CCH-1.0)*THFC(I,J)
IF(HP.GE.25.0) THEN
WFF=HP*((CCH-1.0)*WFFLIM/(5.0*CCH-3.0)+
1 2.0*CCH/(5.0*CCH-3.0))-1.0-CCH/
2 (5.0*CCH-3.0)
ELSEIF(HP.LT.0.1) THEN
WFF=WFFLIM
ELSE
WFKMA=CCH*HP-1.0+EXP(-HP)-
1 HP*THFC(I,J)*CCH
WFAREA=(5.0*CCH-3.0)/(CCH+1.0)-
1 2.0*CCH*HP/(-1.0+EXP(HP))+
2 2.0*(CCH-1.0)**3*(1.0-EXP(-HP/
3 (CCH-1.0)))/((CCH+1.0)*(-1.0+
4 EXP(HP)))
WFF=WFKMA/WFAREA-1.0
ENDIF
RATIO=((THLIQ(I,J)-THFC(I,J))/
1 (THCRIT(I,J)-THFC(I,J)))
IF(RATIO.LT.0.0) RATIO=0.0
IF(RATIO.GT.1.0) RATIO=1.0
C
IF(RATIO.GT.0.0) THEN
IF(J.EQ.1) HMULT=0
IF(J.EQ.2) HMULT=DELZW(I,1)
IF(J.EQ.3) HMULT=DELZW(I,1)+DELZW(I,2)
HMULT=EXP(-GRKFAC(I)*HMULT)*HARAT*
1 XSLOPE(I)*DELZW(I,J)
HMULT=HMULT*(1.0-THICE(I,J)/(THPOR(I,J)-
1 THLMIN(I,J)))**0.666667
DIDRN(I,J)=WFCINT(I)*HMULT*(RATIO**WFF)*DELT
DIDRNMX(I,J)=DELZW(I,J)*(THLIQ(I,J)-THFC(I,J))
IF(DIDRNMX(I,J).LE.0.0) THEN
DIDRN(I,J)=0.0
ELSE
DIDRN(I,J)=DIDRN(I,J)*(1.0-(WFF/2.0)*
1 DIDRN(I,J)/DIDRNMX(I,J))
IF(DIDRN(I,J).GT.DIDRNMX(I,J)) DIDRN(I,J)=
1 DIDRNMX(I,J)
ENDIF
SUBFLW(I)=SUBFLW(I)+FI(I)*DIDRN(I,J)
RUNOFF(I)=RUNOFF(I)+DIDRN(I,J)
THLIQ(I,J)=THLIQ(I,J)-DIDRN(I,J)/DELZW(I,J)
ENDIF
ENDIF
200 CONTINUE
250 CONTINUE
ENDIF
RETURN
END