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 = real(max(cells%reference_et0 &
61 - cells%actual_et_interception, 0.0_c_double), c_float) &
62 * cells%crop_coefficient_kcb
64 call cells%calc_snowfall()
68 call cells%calc_snowmelt()
70 call cells%calc_continuous_frozen_ground_index()
73 potential_snowmelt=cells%potential_snowmelt, &
74 snowmelt=cells%snowmelt, &
75 net_snowfall=cells%net_snowfall )
77 cells%runon = 0.0_c_float
78 cells%runoff = 0.0_c_float
79 cells%runoff_outside = 0.0_c_float
83 do jndx=1, ubound( cells%sort_order, 1 )
88 indx = cells%sort_order( jndx )
90 landuse_index = cells%landuse_index( indx )
93 net_infiltration => cells%net_infiltration( indx ), &
94 pervious_fraction => cells%pervious_fraction( indx ), &
96 direct_net_infiltration => cells%direct_net_infiltration( indx ), &
97 direct_soil_moisture => cells%direct_soil_moisture( indx ), &
98 surface_storage => cells%surface_storage( indx ), &
99 actual_et_impervious => cells%actual_et_impervious( indx ), &
100 actual_et_soil => cells%actual_et_soil( indx ), &
101 actual_et => cells%actual_et( indx ), &
102 surface_storage_excess => cells%surface_storage_excess( indx ), &
103 surface_storage_max => cells%surface_storage_max( indx ), &
104 soil_storage_max => cells%soil_storage_max( indx ), &
105 soil_storage => cells%soil_storage( indx ), &
107 gross_precipitation => cells%gross_precip( indx ), &
108 rainfall => cells%rainfall( indx ), &
109 net_rainfall => cells%net_rainfall( indx ), &
110 snowmelt => cells%snowmelt( indx ), &
111 snowfall => cells%snowfall( indx ), &
112 runon => cells%runon( indx ), &
113 runoff => cells%runoff( indx ), &
114 inflow => cells%inflow( indx ), &
115 delta_soil_storage => cells%delta_soil_storage( indx ), &
116 infiltration => cells%infiltration( indx ), &
117 fog => cells%fog( indx ), &
118 interception => cells%interception( indx ), &
119 reference_et0 => cells%reference_et0( indx ), &
120 actual_et_interception => cells%actual_et_interception( indx ), &
121 canopy_cover_fraction => cells%canopy_cover_fraction(indx) )
124 inflow = max( 0.0_c_float, runon + net_rainfall + fog + snowmelt )
126 call cells%calc_runoff( indx )
133 call cells%calc_irrigation( indx )
146 surface_storage=surface_storage, &
147 actual_et_impervious=actual_et_impervious, &
148 paved_to_unpaved=surface_storage_excess, &
149 surface_storage_max=surface_storage_max, &
152 net_rainfall=net_rainfall, &
157 reference_et0=reference_et0, &
158 pervious_fraction=pervious_fraction )
167 call cells%calc_direct_soil_moisture( indx )
171 infiltration = max( 0.0_c_float, &
177 + direct_soil_moisture &
178 - runoff ) * pervious_fraction &
179 + surface_storage_excess ) / pervious_fraction )
182 call cells%calc_actual_et( indx )
192 soil_storage=soil_storage, &
193 soil_storage_max=soil_storage_max, &
194 delta_soil_storage=delta_soil_storage, &
195 actual_et_soil=actual_et_soil, &
196 reference_et0=reference_et0, &
197 infiltration=infiltration, &
202 actual_et = actual_et_soil * pervious_fraction &
203 + actual_et_impervious * ( 1.0_c_float - pervious_fraction ) &
204 + actual_et_interception * canopy_cover_fraction
206 call cells%calc_climatic_water_deficit( indx )
209 call logs%write(
"line "//
ascharacter(__line__)//
": Negative runoff, indx= " &
213 call cells%calc_direct_net_infiltration( indx )
218 net_infiltration = net_infiltration * pervious_fraction + direct_net_infiltration
221 call cells%calc_maximum_net_infiltration( indx )
227 call cells%calc_routing( index=jndx )