Soil Water Balance (SWB2)
Toggle main menu visibility
Loading...
Searching...
No Matches
mass_balance__impervious_surface.F90
Go to the documentation of this file.
1
module
mass_balance__impervious_surface
2
3
use
constants_and_conversions
4
use
iso_c_binding,
only
: c_short, c_int, c_float, c_double
5
implicit none
6
7
private
8
9
public
::
calculate_impervious_surface_mass_balance
10
11
contains
12
13
elemental
subroutine
calculate_impervious_surface_mass_balance
( &
14
surface_storage, &
15
actual_et_impervious, &
16
paved_to_unpaved, &
17
surface_storage_max, &
18
storm_drain_capture, &
19
storm_drain_capture_fraction, &
20
net_rainfall, &
21
snowmelt, &
22
runon, &
23
runoff, &
24
fog, &
25
reference_et0, &
26
pervious_fraction )
27
28
real
(c_double),
intent(inout)
:: surface_storage
29
real
(c_double),
intent(inout)
:: actual_et_impervious
30
real
(c_float),
intent(inout)
:: paved_to_unpaved
! 'wadd' in HWB
31
real
(c_float),
intent(inout)
::
storm_drain_capture
32
real
(c_float),
intent(in)
:: storm_drain_capture_fraction
33
real
(c_float),
intent(in)
:: surface_storage_max
34
real
(c_float),
intent(in)
:: net_rainfall
35
real
(c_float),
intent(in)
:: snowmelt
36
real
(c_float),
intent(in)
:: runon
37
real
(c_float),
intent(in)
:: runoff
38
real
(c_float),
intent(in)
:: fog
39
real
(c_double),
intent(in)
:: reference_et0
40
real
(c_float),
intent(in)
:: pervious_fraction
41
42
! [ LOCALS ]
43
real
(c_float) :: surface_storage_excess
44
real
(c_float) :: impervious_fraction
45
46
! if ( storm_drain_capture_fraction >= 0.0_c_float ) then
47
48
49
! NOTE: removed this conditional 16 May 2018: it appears that
50
! testing of this sort will underrepresent water in a cell
51
! because although the surface storage may be zero, the
52
! fraction impervious area may be nonzero and therefore will
53
! intercept water that should be shunted to the pervious area of
54
! the cell.
55
56
! if ( surface_storage_max > NEAR_ZERO ) then
57
58
impervious_fraction = 1.0_c_float - pervious_fraction
59
60
surface_storage = surface_storage &
61
+ net_rainfall &
62
+ fog &
63
+ snowmelt &
64
- runoff
65
66
! **amount is reduced proportional to amount of impervious surface present**
67
surface_storage_excess = real(max( 0.0_c_double, &
68
( surface_storage - surface_storage_max ) &
69
* impervious_fraction ), c_float)
70
71
surface_storage = min( surface_storage, real(surface_storage_max, c_double) )
72
73
storm_drain_capture
= surface_storage_excess * storm_drain_capture_fraction
74
75
paved_to_unpaved = max( 0.0_c_float, &
76
surface_storage_excess -
storm_drain_capture
)
77
78
! now allow for evaporation
79
actual_et_impervious = min( reference_et0, surface_storage )
80
surface_storage = max( surface_storage - actual_et_impervious, 0.0_c_double )
81
82
end subroutine
calculate_impervious_surface_mass_balance
83
84
end module
mass_balance__impervious_surface
constants_and_conversions
This module contains physical constants and convenience functions aimed at performing unit conversion...
Definition
constants_and_conversions.F90:8
mass_balance__impervious_surface
Definition
mass_balance__impervious_surface.F90:1
mass_balance__impervious_surface::calculate_impervious_surface_mass_balance
elemental subroutine, public calculate_impervious_surface_mass_balance(surface_storage, actual_et_impervious, paved_to_unpaved, surface_storage_max, storm_drain_capture, storm_drain_capture_fraction, net_rainfall, snowmelt, runon, runoff, fog, reference_et0, pervious_fraction)
Definition
mass_balance__impervious_surface.F90:27
storm_drain_capture
Definition
storm_drain_capture.F90:1
src
mass_balance__impervious_surface.F90
Generated on
for Soil Water Balance (SWB2) by
1.17.0