HargreavesSamaniModified Subroutine

private subroutine HargreavesSamaniModified(time, Tavg, Tmax, Tmin, etRad, elevation, pet)

Compute potential evapotranspiration at daily time scale with Hargreaves Samani model modified by Ravazzani et al. (2012) to include an elevation correction factor

References: Hargreaves, G.H., and Z.A. Samani (1982). Estimating potential evapotranspiration. J. Irrig. Drain. Eng., ASCE, 108(3), 223-230

Ravazzani, G., Corbari, C., Morella, S., Gianoli, P., & Mancini, M.. (2012). Modified Hargreaves-Samani equation for the assessment of reference evapotranspiration in Alpine river basins. Journal of irrigation and drainage engineering, 138(7), 592–599.

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

simulation time

real(kind=float), intent(in) :: Tavg

average daily temperature [°C]

real(kind=float), intent(in) :: Tmax

maximum daily temperature [°C]

real(kind=float), intent(in) :: Tmin

minimum daily temperature [°C]

real(kind=float), intent(in) :: etRad

extra terrestrial solar radiation [mm/day]

real(kind=float), intent(in) :: elevation

elevation above sea level [m]

real(kind=float), intent(out) :: pet

potential evapotranspiration [m/s]


Variables

Type Visibility Attributes Name Initial
real(kind=float), public, parameter :: HC = 0.0023

empirical coefficient

real(kind=float), public, parameter :: HE = 0.5

empirical exponent

real(kind=float), public, parameter :: HT = 17.8

empirical temperature coefficient

real(kind=float), public, parameter :: c0 = 0.817

empirical coefficient for elevation correlation

real(kind=float), public, parameter :: c1 = 0.00022

empirical coefficient for elevation correlation


Source Code

SUBROUTINE HargreavesSamaniModified &
!
(time, Tavg, Tmax, Tmin, etrad, elevation, pet)

IMPLICIT NONE

!Arguments with intent(in):
TYPE(DateTime)     , INTENT(in)  :: time !!simulation time
REAL (KIND = float), INTENT(in)  :: Tavg !!average daily temperature [°C]
REAL (KIND = float), INTENT(in)  :: Tmax !!maximum daily temperature [°C]
REAL (KIND = float), INTENT(in)  :: Tmin !!minimum daily temperature [°C]
REAL (KIND = float), INTENT(in)  :: etRad !!extra terrestrial solar radiation [mm/day]
REAL (KIND = float), INTENT(in)  :: elevation !!elevation above sea level [m]


!Arguments with intent(out):
REAL (KIND = float), INTENT(out) :: pet		!! potential evapotranspiration [m/s]

!local declarations.
REAL (KIND = float), PARAMETER   :: HC = 0.0023 !!empirical coefficient
REAL (KIND = float), PARAMETER   :: HE = 0.5  !!empirical exponent
REAL (KIND = float), PARAMETER   :: HT = 17.8  !!empirical temperature coefficient
REAL (KIND = float), PARAMETER   :: c0 = 0.817  !!empirical coefficient for elevation correlation
REAL (KIND = float), PARAMETER   :: c1 = 0.00022   !!empirical coefficient for elevation correlation

!-----------------------------------------end of declarations------------------

!calculate evapotranspiration
IF ( ( Tmax - Tmin) < 0.) THEN
    CALL Catch ('warning', 'Evapotranspiration', '(Tmax - Tmin) < 0.' )
	pet = 0.
	RETURN
ELSE
	pet = (c0 + c1 * elevation) * HC * etRad * (Tmax - Tmin) ** HE * (Tavg + HT)
END IF

!conversion from mm/day to m/s
pet = pet * millimeter / day
	
    
RETURN	
END SUBROUTINE HargreavesSamaniModified