11 use iso_c_binding,
only : c_short, c_int, c_float, c_double
25 real (c_double),
intent(inout) :: actual_et
26 real (c_double),
intent(in) :: soil_storage
27 real (c_float),
intent(in) :: soil_storage_max
28 real (c_float),
intent(in) :: infiltration
29 real (c_float),
intent(in) :: crop_etc
32 real (c_double) :: p_minus_pe
33 real (c_double) :: soil_storage_temp
35 p_minus_pe = real(infiltration, c_double) - real(crop_etc, c_double)
37 if ( p_minus_pe >= 0.0_c_double )
then
41 elseif ( p_minus_pe < 0.0_c_double )
then
52 soil_storage_temp = soil_storage * exp( p_minus_pe / real(soil_storage_max, c_double))
53 actual_et = soil_storage - soil_storage_temp
58 actual_et = min(real(infiltration, c_double), real(crop_etc, c_double))