19 USE mo_kind,
ONLY : i4, dp
73 elemental pure FUNCTION pet_hargreaves(HarSamCoeff, HarSamConst, tavg, tmax, tmin, latitude, doy)
75 use mo_constants,
only : deg2rad_dp
76 use mo_utils,
only : le
81 real(dp),
intent(in) :: harsamcoeff
84 real(dp),
intent(in) :: harsamconst
87 real(dp),
intent(in) :: tavg
90 real(dp),
intent(in) :: tmax
93 real(dp),
intent(in) :: tmin
96 real(dp),
intent(in) :: latitude
99 integer(i4),
intent(in) :: doy
106 real(dp) :: delta_temp
109 delta_temp = tmax - tmin
110 if(le(delta_temp, 0.0_dp) .or. le(tavg, -harsamconst))
then
151 use mo_constants,
only : daysecs, psychro_dp, specheatet_dp
156 real(dp),
intent(in) :: prietayparam
159 real(dp),
intent(in) :: rn
161 real(dp),
intent(in) :: tavg
172 pet_priestly = prietayparam * delta / (psychro_dp + delta) * (rn * daysecs / specheatet_dp)
235 elemental pure FUNCTION pet_penman(net_rad, tavg, act_vap_pressure, aerodyn_resistance, bulksurface_resistance, a_s, &
238 use mo_constants,
only : daysecs, psychro_dp, specheatet_dp, cp0_dp, rho0_dp
243 real(dp),
intent(in) :: net_rad
246 real(dp),
intent(in) :: tavg
249 real(dp),
intent(in) :: act_vap_pressure
252 real(dp),
intent(in) :: aerodyn_resistance
255 real(dp),
intent(in) :: bulksurface_resistance
258 real(dp),
intent(in) :: a_s
261 real(dp),
intent(in) :: a_sh
269 rho0_dp * cp0_dp * (
sat_vap_pressure(tavg) - act_vap_pressure) * a_sh / aerodyn_resistance) / &
270 (
slope_satpressure(tavg) + psychro_dp * a_sh / a_s * (1.0_dp + bulksurface_resistance / aerodyn_resistance))
316 use mo_constants,
only : daysecs, yeardays, pi_d, solarconst_dp, specheatet_dp, twopi_d
322 integer(i4),
intent(in) :: doy
325 real(dp),
intent(in) :: latitude
330 real(dp) :: dr, delta
338 dr = 1.0_dp +
duffiedr * cos(twopi_d * doy / yeardays)
344 arg = - tan(latitude) * tan(delta)
345 if(arg .lt. -1.0_dp) arg = -1.0_dp
346 if(arg .gt. 1.0_dp) arg = 1.0_dp
353 dr * (omega * sin(latitude) * sin(delta) + cos(latitude) * cos(delta) * sin(omega))
391 real(dp),
intent(in) :: tavg
433 real(dp),
intent(in) :: tavg
Provides mHM specific constants.
real(dp), parameter, public duffiedelta1
real(dp), parameter, public tetens_c3
real(dp), parameter, public tetens_c1
Tetens's formula to calculate saturated vapour pressure.
real(dp), parameter, public tetens_c2
real(dp), parameter, public satpressureslope1
calculation of the slope of the saturation vapour pressure curve following Tetens
real(dp), parameter, public duffiedr
real(dp), parameter, public duffiedelta2
Module for calculating reference/potential evapotranspiration [mm d-1].
elemental pure real(dp) function, public pet_penman(net_rad, tavg, act_vap_pressure, aerodyn_resistance, bulksurface_resistance, a_s, a_sh)
Reference Evapotranspiration after Penman-Monteith.
elemental pure real(dp) function, public pet_hargreaves(harsamcoeff, harsamconst, tavg, tmax, tmin, latitude, doy)
Reference Evapotranspiration after Hargreaves.
elemental pure real(dp) function, public sat_vap_pressure(tavg)
calculation of the saturation vapour pressure
elemental pure real(dp) function, public pet_priestly(prietayparam, rn, tavg)
Reference Evapotranspiration after Priestly-Taylor.
elemental pure real(dp) function, public extraterr_rad_approx(doy, latitude)
Approximation of extraterrestrial radiation.
elemental pure real(dp) function, public slope_satpressure(tavg)
slope of saturation vapour pressure curve