Soil Water Balance (SWB2)
Toggle main menu visibility
Loading...
Searching...
No Matches
actual_et__thornthwaite_mather.F90
Go to the documentation of this file.
1
!> @file
2
!> Contains a single module, \ref actual_et__thornthwaite_mather, which
3
!> provides support for calculating actual evapotranspiration by means of an
4
!> approximation to the Thornthwaite-Mather soil-moisture retention tables.
5
6
!> Calculate actual ET by means of an approximation to the Thornthwaite-Mather
7
!> soil-moisture-retention tables.
8
module
actual_et__thornthwaite_mather
9
10
11
use
iso_c_binding,
only
: c_short, c_int, c_float, c_double
12
use
constants_and_conversions
,
only
:
near_zero
13
implicit none
14
15
contains
16
17
elemental
subroutine
calculate_actual_et_thornthwaite_mather
( &
18
actual_et, &
19
soil_storage, &
20
soil_storage_max, &
21
infiltration, &
22
crop_etc )
23
24
real
(c_double),
intent(inout)
:: actual_et
25
real
(c_double),
intent(in)
:: soil_storage
26
real
(c_float),
intent(in)
:: soil_storage_max
27
real
(c_float),
intent(in)
:: infiltration
28
real
(c_float),
intent(in)
:: crop_etc
29
30
! [ LOCALS ]
31
real
(c_double) :: p_minus_pe
32
real
(c_double) :: soil_storage_temp
33
34
p_minus_pe = real(infiltration, c_double) - real(crop_etc, c_double)
35
36
if
( p_minus_pe >= 0.0_c_double )
then
37
38
actual_et = crop_etc
39
40
elseif
( p_minus_pe < 0.0_c_double )
then
41
42
if
( soil_storage_max >
near_zero
)
then
43
44
! soil_storage_temp = max( 0.0, min( soil_storage_max, precipitation + soil_storage ) )
45
! actual_et = soil_storage_temp * ( 1.0_c_float - exp( -crop_etc / soil_storage_max ) )
46
47
! NOTE: there is a difference in approaches between various practitioners... the Hawaii Water Budget code
48
! calculates actual et on a temporary soil moisture value that includes the moisture received
49
! on the current day. Alley calculates actual et on the basis of the previous days' soil moisture
50
51
soil_storage_temp = soil_storage * exp( p_minus_pe / real(soil_storage_max, c_double))
52
actual_et = soil_storage - soil_storage_temp
53
54
else
55
! open water - limit actual et to the lesser of the reference ET *or* the amount of water 'infiltrated'
56
57
actual_et = min(real(infiltration, c_double), real(crop_etc, c_double))
58
59
endif
60
61
endif
62
63
end subroutine
calculate_actual_et_thornthwaite_mather
64
65
end module
actual_et__thornthwaite_mather
actual_et__thornthwaite_mather
Calculate actual ET by means of an approximation to the Thornthwaite-Mather soil-moisture-retention t...
Definition
actual_et__thornthwaite_mather.F90:8
actual_et__thornthwaite_mather::calculate_actual_et_thornthwaite_mather
elemental subroutine calculate_actual_et_thornthwaite_mather(actual_et, soil_storage, soil_storage_max, infiltration, crop_etc)
Definition
actual_et__thornthwaite_mather.F90:23
constants_and_conversions
This module contains physical constants and convenience functions aimed at performing unit conversion...
Definition
constants_and_conversions.F90:8
constants_and_conversions::near_zero
real(c_float), parameter, public near_zero
Definition
constants_and_conversions.F90:41
src
actual_et__thornthwaite_mather.F90
Generated on
for Soil Water Balance (SWB2) by
1.17.0