An error occurred while loading the file. Please try again.
-
unknown authorede43abbfd
C**********************************************************************
SUBROUTINE HU1(XV,C,D)
C Computation of ordinates of GR unit hydrograph HU1 using successives differences on the S curve SS1
C Inputs:
C C: time constant
C D: exponent
C Outputs:
C XV(3*NPX+1) to XV(3*NPX+NH): NH ordinates of discrete hydrograph
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION XV(3*NPX+5*NH)
DOUBLEPRECISION C,D,SS1
INTEGER I
DO I=1,NH
XV(3*NPX+I)=SS1(I,C,D)-SS1(I-1,C,D)
ENDDO
ENDSUBROUTINE
C**********************************************************************
SUBROUTINE HU2(XV,C,D)
C Computation of ordinates of GR unit hydrograph HU2 using successives differences on the S curve SS2
C Inputs:
C C: time constant
C D: exponent
C Outputs:
C XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION XV(3*NPX+5*NH)
DOUBLEPRECISION C,D,SS2
INTEGER I
DO I =1,2*NH
XV(3*NPX+NH+I)=SS2(I,C,D)-SS2(I-1,C,D)
ENDDO
ENDSUBROUTINE
C**********************************************************************
SUBROUTINE HU4(XV,ALPHA,BETA)
C Computation of ordinates of MOHYSE unit hydrograph
C Inputs:
C Alpha: parameter
C Beta: parameter
C Outputs:
C XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION XV(3*NPX+5*NH),U(3*NH)
DOUBLEPRECISION ALPHA,BETA,SU
INTEGER K
SU=0.
c IF(ALPHA.LT.1.)THEN
c WRITE(*,*)' Pb ALPHA'
c STOP
c ENDIF
IF(ALPHA.EQ.1.)THEN
U(1)=1.
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
SU=1.
DO 1 K=2,3*NH
U(K)=0.
1 CONTINUE
ELSE
DO 11 K=1,3*NH
U(K)=FLOAT(K)*(ALPHA-1.)*EXP(-FLOAT(K)/BETA)
SU=SU+U(K)
11 CONTINUE
ENDIF
c IF(SU.LT.0.0000000001)THEN
c WRITE(*,*)' Pb HU4',ALPHA, BETA
c STOP
c ENDIF
DO 2 K=1,3*NH
XV(3*NPX+K)=U(K)/SU
2 CONTINUE
ENDSUBROUTINE
C**********************************************************************
SUBROUTINE HU(XV,C)
C Computation of ordinates of GRP unit hydrograph
C Inputs:
C C: time constant
C Alpha: parameter
C Beta: parameter
C Outputs:
C XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION XV(3*NPX+5*NH)
DOUBLEPRECISION C
DOUBLEPRECISION SH
INTEGER I
DO 10 I=1,2*NH
XV(3*NPX+NH+I)=SH(I,C)-SH(I-1,C)
10 CONTINUE
RETURN
ENDSUBROUTINE
C**********************************************************************
FUNCTION SH(I,C)
C Values of the S curve (cumulative HU curve) of GRP unit hydrograph HU
C Inputs:
C C: time constant
C I: time-step
C Outputs:
C SH: Values of the S curve for I
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION C
DOUBLEPRECISION SH,FI
INTEGER I
FI=I
IF(FI.LE.0.)THEN
SH=0.
RETURN
ENDIF
IF(FI.GE.C)THEN
SH=1.
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
RETURN
ENDIF
SH=FI**2.5/(FI**2.5+(C-FI)**2.5)
RETURN
ENDFUNCTION
C**********************************************************************
FUNCTION SS1(I,C,D)
C Values of the S curve (cumulative HU curve) of GR unit hydrograph HU1
C Inputs:
C C: time constant
C D: exponent
C I: time-step
C Outputs:
C SS1: Values of the S curve for I
C**********************************************************************
Implicit None
DOUBLEPRECISION C,D,SS1
INTEGER I,FI
FI=I
IF(FI.LE.0.) THEN
SS1=0.
RETURN
ENDIF
IF(FI.LT.C) THEN
SS1=(FI/C)**D
RETURN
ENDIF
SS1=1.
ENDFUNCTION
C**********************************************************************
FUNCTION SS2(I,C,D)
C Values of the S curve (cumulative HU curve) of GR unit hydrograph HU2
C Inputs:
C C: time constant
C D: exponent
C I: time-step
C Outputs:
C SS2: Values of the S curve for I
C**********************************************************************
Implicit None
DOUBLEPRECISION C,D,SS2
INTEGER I,FI
FI=I
IF(FI.LE.0.) THEN
SS2=0.
RETURN
ENDIF
IF(FI.LE.C) THEN
SS2=0.5*(FI/C)**D
RETURN
ENDIF
IF(FI.LT.2.*C) THEN
SS2=1.-0.5*(2.-FI/C)**D
RETURN
ENDIF
SS2=1.
ENDFUNCTION
C**********************************************************************
SUBROUTINE DEL(XV,C)
C Computation of HU ordinates corresponding to a time lag of a given number (possibly non-integer) of time-steps
C (all ordinates are nul except 2 at max)
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
C Inputs:
C C: time constant
C Outputs:
C XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION XV(3*NPX+5*NH)
DOUBLEPRECISION C,F
INTEGER I,K
I=INT(C)
F=C-INT(C)
DO 1 K=3*NPX+1,3*NPX+3*NH
XV(K)=0.
1 CONTINUE
XV(3*NPX+I)=1.-F
XV(3*NPX+I+1)=F
ENDSUBROUTINE
C**********************************************************************
SUBROUTINE DEL2(XV,C)
C Computation of HU ordinates corresponding to a time lag of a given number (possibly non-integer) of time-steps
C (all ordinates are nul except 2 at max)
C Inputs:
C C: time constant
C Outputs:
C XV(3*NPX+NH+1) to XV(3*NPX+3*NH): NH ordinates of discrete hydrograph
C**********************************************************************
Implicit None
INTEGER NPX,NH
PARAMETER (NPX=14,NH=20)
DOUBLEPRECISION XV(3*NPX+5*NH)
DOUBLEPRECISION C,F
INTEGER K,I
IF(C.GT.FLOAT(NH)) C=FLOAT(NH)
I=INT(C)
F=C-INT(C)
DO 1 K=3*NPX+1,3*NPX+NH
XV(K)=0.
1 CONTINUE
XV(3*NPX+I)=1.-F
XV(3*NPX+I+1)=F
ENDSUBROUTINE
C**********************************************************************
FUNCTION tanHyp(Val)
C Computation of hyperbolic tangent
C**********************************************************************
Implicit None
DOUBLEPRECISION Val,ValExp,tanHyp
ValExp=EXP(Val)
tanHyp=(ValExp - 1./ValExp)/(ValExp + 1./ValExp)
RETURN
ENDFUNCTION