33 integer (c_int) :: indx, jndx
34 integer (c_int) :: landuse_index
40 call cells%update_crop_coefficient()
41 call cells%update_growing_season()
42 call cells%update_rooting_depth()
43 call cells%calc_reference_et()
49 call cells%calc_interception()
53 actual_et_interception=cells%actual_et_interception, &
54 interception=cells%interception, &
55 interception_storage_max=cells%interception_storage_max, &
56 reference_et0=cells%reference_et0 )
60 cells%crop_etc = max(cells%reference_et0 - cells%actual_et_interception, 0.0_c_float) * cells%crop_coefficient_kcb
62 call cells%calc_snowfall()
66 call cells%calc_snowmelt()
68 call cells%calc_continuous_frozen_ground_index()
71 potential_snowmelt=cells%potential_snowmelt, &
72 snowmelt=cells%snowmelt, &
73 net_snowfall=cells%net_snowfall )
75 cells%runon = 0.0_c_float
76 cells%runoff = 0.0_c_float
77 cells%runoff_outside = 0.0_c_float
81 do jndx=1, ubound( cells%sort_order, 1 )
86 indx = cells%sort_order( jndx )
88 landuse_index = cells%landuse_index( indx )
91 net_infiltration => cells%net_infiltration( indx ), &
92 pervious_fraction => cells%pervious_fraction( indx ), &
94 direct_net_infiltration => cells%direct_net_infiltration( indx ), &
95 direct_soil_moisture => cells%direct_soil_moisture( indx ), &
96 surface_storage => cells%surface_storage( indx ), &
97 actual_et_impervious => cells%actual_et_impervious( indx ), &
98 actual_et_soil => cells%actual_et_soil( indx ), &
99 actual_et => cells%actual_et( indx ), &
100 surface_storage_excess => cells%surface_storage_excess( indx ), &
101 surface_storage_max => cells%surface_storage_max( indx ), &
102 soil_storage_max => cells%soil_storage_max( indx ), &
103 soil_storage => cells%soil_storage( indx ), &
105 gross_precipitation => cells%gross_precip( indx ), &
106 rainfall => cells%rainfall( indx ), &
107 net_rainfall => cells%net_rainfall( indx ), &
108 snowmelt => cells%snowmelt( indx ), &
109 snowfall => cells%snowfall( indx ), &
110 runon => cells%runon( indx ), &
111 runoff => cells%runoff( indx ), &
112 inflow => cells%inflow( indx ), &
113 delta_soil_storage => cells%delta_soil_storage( indx ), &
114 infiltration => cells%infiltration( indx ), &
115 fog => cells%fog( indx ), &
116 interception => cells%interception( indx ), &
117 reference_et0 => cells%reference_et0( indx ), &
118 actual_et_interception => cells%actual_et_interception( indx ), &
119 canopy_cover_fraction => cells%canopy_cover_fraction(indx) )
122 inflow = max( 0.0_c_float, runon + net_rainfall + fog + snowmelt )
124 call cells%calc_runoff( indx )
131 call cells%calc_irrigation( indx )
144 surface_storage=surface_storage, &
145 actual_et_impervious=actual_et_impervious, &
146 paved_to_unpaved=surface_storage_excess, &
147 surface_storage_max=surface_storage_max, &
150 net_rainfall=net_rainfall, &
155 reference_et0=reference_et0, &
156 pervious_fraction=pervious_fraction )
165 call cells%calc_direct_soil_moisture( indx )
169 infiltration = max( 0.0_c_float, &
175 + direct_soil_moisture &
176 - runoff ) * pervious_fraction &
177 + surface_storage_excess ) / pervious_fraction )
180 call cells%calc_actual_et( indx )
190 soil_storage=soil_storage, &
191 soil_storage_max=soil_storage_max, &
192 delta_soil_storage=delta_soil_storage, &
193 actual_et_soil=actual_et_soil, &
194 reference_et0=reference_et0, &
195 infiltration=infiltration, &
200 actual_et = actual_et_soil * pervious_fraction &
201 + actual_et_impervious * ( 1.0_c_float - pervious_fraction ) &
202 + actual_et_interception * canopy_cover_fraction
204 call cells%calc_climatic_water_deficit( indx )
207 call logs%write(
"line "//
ascharacter(__line__)//
": Negative runoff, indx= " &
211 call cells%calc_direct_net_infiltration( indx )
216 net_infiltration = net_infiltration * pervious_fraction + direct_net_infiltration
219 call cells%calc_maximum_net_infiltration( indx )
225 call cells%calc_routing( index=indx )