Soil Water Balance (SWB2)
Loading...
Searching...
No Matches
snowfall__original.F90
Go to the documentation of this file.
2
3 use iso_c_binding
4 implicit none
5
6 private
7
9
10 real (c_float), parameter :: freezing = 32.0_c_float
11
12contains
13
14 elemental subroutine snowfall_original_calculate( snowfall, net_snowfall, &
15 rainfall, net_rainfall, &
16 tmin, tmax, &
17 interception, &
18 gross_precipitation)
19
20 real (c_float), intent(inout) :: snowfall
21 real (c_float), intent(inout) :: net_snowfall
22 real (c_float), intent(inout) :: rainfall
23 real (c_float), intent(inout) :: net_rainfall
24 real (c_float), intent(in) :: tmin
25 real (c_float), intent(in) :: tmax
26 real (c_float), intent(in) :: interception
27 real (c_float), intent(in) :: gross_precipitation
28
29 ! classify gross_precipitation as snowfall if condition is met
30 if ( ( (tmin + tmax) / 2.0_c_double - ( tmax - tmin ) / 3.0_c_double ) <= freezing ) then
31
32 snowfall = gross_precipitation
33 net_snowfall = gross_precipitation - interception
34 rainfall = 0.0_c_float
35 net_rainfall = 0.0_c_float
36
37 else ! rainfall
38
39 snowfall = 0.0_c_float
40 net_snowfall = 0.0_c_float
41 rainfall = gross_precipitation
42 net_rainfall = gross_precipitation - interception
43
44 endif
45
46 end subroutine snowfall_original_calculate
47
48end module snowfall__original
real(c_float), parameter freezing
elemental subroutine, public snowfall_original_calculate(snowfall, net_snowfall, rainfall, net_rainfall, tmin, tmax, interception, gross_precipitation)