71 sfr_surf, zenith_deg, nlayer, & !input:
72 tsfc_surf, tsfc_roof, tsfc_wall, &
73 kdown, ldown, Tair_C, alb_surf, emis_surf, LAI_id, &
74 n_vegetation_region_urban, &
75 n_stream_sw_urban, n_stream_lw_urban, &
76 sw_dn_direct_frac, air_ext_sw, air_ssa_sw, &
77 veg_ssa_sw, air_ext_lw, air_ssa_lw, veg_ssa_lw, &
78 veg_fsd_const, veg_contact_fraction_const, &
79 ground_albedo_dir_mult_fact, use_sw_direct_albedo, &
80 height, building_frac, veg_frac, sfr_roof, sfr_wall, &
81 building_scale, veg_scale, & !input:
82 alb_roof, emis_roof, alb_wall, emis_wall, &
83 roof_albedo_dir_mult_fact, wall_specular_frac, &
84 qn, kup, lup, qn_roof, qn_wall, qn_surf, & !output:
86 USE parkind1,
ONLY: jpim, jprb
87 USE radsurf_interface,
ONLY: radsurf
88 USE radsurf_config,
ONLY: config_type
90 USE radsurf_canopy_properties,
ONLY: canopy_properties_type
91 USE radsurf_sw_spectral_properties,
ONLY: sw_spectral_properties_type
92 USE radsurf_lw_spectral_properties,
ONLY: lw_spectral_properties_type
93 USE radsurf_boundary_conds_out,
ONLY: boundary_conds_out_type
94 USE radsurf_canopy_flux,
ONLY: canopy_flux_type
95 USE radsurf_simple_spectrum,
ONLY: calc_simple_spectrum_lw
104 REAL(KIND(1D0)),
INTENT(IN) :: zenith_deg
105 INTEGER,
INTENT(IN) :: DiagQN
106 INTEGER,
INTENT(IN) :: nlayer
109 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: tsfc_roof, tsfc_wall
110 REAL(KIND(1D0)),
INTENT(IN) :: Tair_C
112 REAL(KIND(1D0)),
INTENT(IN) :: kdown
113 REAL(KIND(1D0)),
INTENT(IN) :: ldown
114 REAL(KIND(1D0)),
DIMENSION(NSURF),
INTENT(IN) :: tsfc_surf
116 REAL(KIND(1D0)),
DIMENSION(NSURF),
INTENT(IN) :: sfr_surf, alb_surf, emis_surf
117 REAL(KIND(1D0)),
DIMENSION(NVegSurf),
INTENT(IN) :: LAI_id
120 INTEGER,
INTENT(IN) :: n_vegetation_region_urban, &
121 n_stream_sw_urban, n_stream_lw_urban
122 REAL(KIND(1D0)),
INTENT(IN) :: sw_dn_direct_frac, air_ext_sw, air_ssa_sw, &
123 veg_ssa_sw, air_ext_lw, air_ssa_lw, veg_ssa_lw, &
124 veg_fsd_const, veg_contact_fraction_const, &
125 ground_albedo_dir_mult_fact
128 INTEGER(kind=jpim),
ALLOCATABLE :: i_representation(:)
129 INTEGER(kind=jpim),
ALLOCATABLE :: nlay(:)
130 INTEGER :: istartcol, iendcol
131 INTEGER :: jrepeat, ilay, jlay, jcol
137 REAL(KIND(1D0)),
INTENT(OUT) :: qn, kup, lup
138 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(OUT) :: qn_roof
139 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(OUT) :: qn_wall
140 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(OUT) :: qn_surf
141 REAL(KIND(1D0)) :: sw_net_grnd
142 REAL(KIND(1D0)) :: lw_net_grnd
143 REAL(KIND(1D0)) :: sw_dn_grnd
144 REAL(KIND(1D0)) :: lw_dn_grnd
145 REAL(KIND(1D0)) :: lw_up_grnd
146 REAL(KIND(1D0)),
DIMENSION(NSURF - 1) :: qn_grnd_ind
147 REAL(KIND(1D0)),
DIMENSION(NSURF - 1) :: alb_grnd_ind
148 REAL(KIND(1D0)),
DIMENSION(NSURF - 1) :: emis_grnd_ind
149 REAL(KIND(1D0)),
DIMENSION(NSURF - 1) :: sfr_grnd_ind
150 REAL(KIND(1D0)),
DIMENSION(nsurf - 1) :: sw_net_grnd_ind
151 REAL(KIND(1D0)),
DIMENSION(nsurf - 1) :: lw_net_grnd_ind
152 REAL(KIND(1D0)),
DIMENSION(NSURF - 1) :: tsfc_grnd_ind_K
155 REAL(KIND(1D0)) :: alb_spc, emis_spc, lw_emission_spc, lw_up_spc, sw_up_spc, qn_spc
156 REAL(KIND(1D0)) :: top_net_lw_spc
157 REAL(KIND(1D0)) :: grnd_net_lw_spc
158 REAL(KIND(1D0)) :: top_dn_lw_spc
159 REAL(KIND(1D0)) :: top_dn_dir_sw_spc
160 REAL(KIND(1D0)) :: top_net_sw_spc
161 REAL(KIND(1D0)) :: grnd_dn_dir_sw_spc
162 REAL(KIND(1D0)) :: grnd_net_sw_spc
163 REAL(KIND(1D0)) :: grnd_vertical_diff
164 REAL(KIND(1D0)),
DIMENSION(15) :: clear_air_abs_lw_spc
165 REAL(KIND(1D0)),
DIMENSION(15) :: clear_air_abs_sw_spc
166 REAL(KIND(1D0)),
DIMENSION(15) :: roof_in_sw_spc
167 REAL(KIND(1D0)),
DIMENSION(15) :: roof_in_lw_spc
168 REAL(KIND(1D0)),
DIMENSION(15) :: roof_net_sw_spc
169 REAL(KIND(1D0)),
DIMENSION(15) :: roof_net_lw_spc
170 REAL(KIND(1D0)),
DIMENSION(15) :: wall_in_sw_spc
171 REAL(KIND(1D0)),
DIMENSION(15) :: wall_in_lw_spc
172 REAL(KIND(1D0)),
DIMENSION(15) :: wall_net_sw_spc
173 REAL(KIND(1D0)),
DIMENSION(15) :: wall_net_lw_spc
174 REAL(KIND(1D0)),
DIMENSION(15) :: sfr_roof_spc
175 REAL(KIND(1D0)),
DIMENSION(15) :: sfr_wall_spc
178 REAL(KIND(1D0)),
DIMENSION(ncolumnsDataOutSPARTACUS - 5),
INTENT(OUT) :: dataOutLineSPARTACUS
181 TYPE(config_type) :: config
182 TYPE(canopy_properties_type) :: canopy_props
183 TYPE(sw_spectral_properties_type) :: sw_spectral_props
184 TYPE(lw_spectral_properties_type) :: lw_spectral_props
185 TYPE(boundary_conds_out_type) :: bc_out
186 TYPE(canopy_flux_type) :: sw_norm_dir
187 TYPE(canopy_flux_type) :: sw_norm_diff
188 TYPE(canopy_flux_type) :: lw_internal
189 TYPE(canopy_flux_type) :: lw_norm
190 TYPE(canopy_flux_type) :: lw_flux
191 TYPE(canopy_flux_type) :: sw_flux
194 REAL(KIND(1D0)),
ALLOCATABLE :: top_flux_dn_sw(:, :)
195 REAL(KIND(1D0)),
ALLOCATABLE :: top_flux_dn_direct_sw(:, :)
196 REAL(KIND(1D0)),
ALLOCATABLE :: top_flux_dn_lw(:, :)
199 REAL(KIND(1D0)),
DIMENSION(nlayer) :: tsfc_roof_K, tsfc_wall_K
200 REAL(KIND(1D0)),
DIMENSION(nsurf) :: tsfc_surf_K
201 REAL(KIND(1D0)) :: tair_K
203 REAL(KIND(1D0)) :: top_flux_dn_diffuse_sw
205 REAL(KIND(1D0)) :: alb_no_tree_bldg, emis_no_tree_bldg
209 REAL(KIND(1D0)),
ALLOCATABLE :: LAI_av(:)
211 REAL(KIND(1D0)),
ALLOCATABLE :: LAI_av_z(:)
212 REAL(KIND(1D0)),
ALLOCATABLE :: veg_ext(:)
214 REAL(KIND(1D0)),
ALLOCATABLE :: veg_depth(:)
216 LOGICAL,
INTENT(IN) :: use_sw_direct_albedo
218 REAL(KIND(1D0)),
DIMENSION(nlayer + 1),
INTENT(IN) :: height
219 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: building_frac
220 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: veg_frac
221 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: sfr_roof
222 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: sfr_wall
223 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: building_scale
224 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: veg_scale
225 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: alb_roof
226 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: emis_roof
227 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: alb_wall
228 REAL(KIND(1D0)),
DIMENSION(nlayer),
INTENT(IN) :: emis_wall
229 REAL(KIND(1D0)),
DIMENSION(nspec, nlayer),
INTENT(IN) :: roof_albedo_dir_mult_fact
230 REAL(KIND(1D0)),
DIMENSION(nspec, nlayer),
INTENT(IN) :: wall_specular_frac
233 REAL(KIND(1D0)),
DIMENSION(nspec, nlayer) :: roof_albedo
234 REAL(KIND(1D0)),
DIMENSION(nspec, nlayer) :: wall_albedo
235 REAL(KIND(1D0)),
DIMENSION(nspec, nlayer) :: roof_emissivity
236 REAL(KIND(1D0)),
DIMENSION(nspec, nlayer) :: wall_emissivity
237 REAL(KIND(1D0)),
DIMENSION(nlayer) :: veg_fsd, veg_contact_fraction
241 IF (diagqn == 1) print *,
'in SPARTACUS, starting ...'
243 dataoutlinespartacus = -999.
246 sfr_roof_spc(1:nlayer) = sfr_roof
248 sfr_wall_spc(1:nlayer) = sfr_wall
250 ALLOCATE (nlay(
ncol))
253 ALLOCATE (veg_ext(nlayer))
257 veg_fsd(:) = veg_fsd_const
258 veg_contact_fraction(:) = veg_contact_fraction_const
261 roof_albedo(
nspec, :) = alb_roof
262 wall_albedo(
nspec, :) = alb_wall
263 roof_emissivity(
nspec, :) = emis_roof
264 wall_emissivity(
nspec, :) = emis_wall
269 IF (diagqn == 1) print *,
'in SPARTACUS, setting up model ...'
271 config%do_sw = .true.
272 config%do_lw = .true.
273 config%use_sw_direct_albedo = use_sw_direct_albedo
274 ALLOCATE (i_representation(
ncol))
276 config%do_vegetation = .true.
277 i_representation = [3]
278 config%do_urban = .true.
280 config%do_vegetation = .false.
281 i_representation = [2]
282 config%do_urban = .true.
284 config%do_vegetation = .true.
285 i_representation = [1]
286 config%do_urban = .false.
288 config%do_vegetation = .false.
289 i_representation = [0]
290 config%do_urban = .false.
293 config%n_vegetation_region_urban = n_vegetation_region_urban
294 config%n_vegetation_region_forest = n_vegetation_region_urban
297 config%n_stream_sw_urban = n_stream_sw_urban
298 config%n_stream_lw_urban = n_stream_lw_urban
299 config%n_stream_sw_forest = n_stream_sw_urban
300 config%n_stream_lw_forest = n_stream_lw_urban
301 CALL config%consolidate()
306 CALL canopy_props%DEALLOCATE()
307 CALL canopy_props%ALLOCATE(config,
ncol, nlayer, i_representation)
310 canopy_props%cos_sza = cos(zenith_deg*3.1415927/180)
311 canopy_props%nlay = nlay
312 canopy_props%ncol =
ncol
313 canopy_props%ntotlay = nlayer
315 IF (diagqn == 1) print *,
'in SPARTACUS, calculating dz array ...'
319 canopy_props%dz(ilay:ilay + canopy_props%nlay(jcol) - 1) &
320 & = height(ilay + 1:ilay + canopy_props%nlay(jcol)) &
321 & - height(ilay:ilay + canopy_props%nlay(jcol) - 1)
322 canopy_props%istartlay(jcol) = ilay
323 ilay = ilay + canopy_props%nlay(jcol)
326 ALLOCATE (lai_av(
ncol))
327 ALLOCATE (veg_depth(
ncol))
328 ALLOCATE (lai_av_z(nlayer))
343 ilay = canopy_props%istartlay(jcol)
345 DO jlay = 0, nlay(jcol) - 1
346 IF (veg_frac(ilay + jlay) > 0.)
THEN
347 veg_depth(jcol) = veg_depth(jcol) + canopy_props%dz(ilay + jlay)
353 ilay = canopy_props%istartlay(jcol)
356 DO jlay = 0, nlay(jcol) - 1
361 IF (veg_frac(ilay + jlay) > 0.)
THEN
362 lai_av_z(ilay + jlay) = lai_av(jcol)*canopy_props%dz(ilay + jlay)/veg_depth(jcol)
363 veg_ext(ilay + jlay) = lai_av_z(ilay + jlay)/(2*canopy_props%dz(ilay))
369 tsfc_surf_k = tsfc_surf + 273.15
370 tsfc_roof_k = tsfc_roof + 273.15
371 tsfc_wall_k = tsfc_wall + 273.15
372 tair_k = tair_c + 273.15
375 canopy_props%ground_temperature = (dot_product(tsfc_surf_k, sfr_surf) - tsfc_surf_k(
bldgsurf)*sfr_surf(
bldgsurf)) &
378 canopy_props%roof_temperature = tsfc_roof_k
379 canopy_props%wall_temperature = tsfc_wall_k
380 canopy_props%clear_air_temperature = tair_k
383 canopy_props%veg_air_temperature = tair_k
387 canopy_props%i_representation = i_representation
388 canopy_props%building_scale = building_scale(:)
389 canopy_props%building_fraction = building_frac(:)
391 canopy_props%veg_fraction = veg_frac(:)
392 canopy_props%veg_scale = veg_scale(:)
393 canopy_props%veg_ext = veg_ext(:)
394 canopy_props%veg_fsd = veg_fsd(:)
395 canopy_props%veg_contact_fraction = veg_contact_fraction(:)
399 IF (diagqn == 1) print *,
'in SPARTACUS, setting canopy top forcing ...'
401 ALLOCATE (top_flux_dn_direct_sw(
nspec,
ncol))
403 top_flux_dn_sw = kdown
404 top_flux_dn_direct_sw = sw_dn_direct_frac*kdown
405 top_flux_dn_diffuse_sw = top_flux_dn_sw(
nspec,
ncol) - top_flux_dn_direct_sw(
nspec,
ncol)
406 top_flux_dn_lw = ldown
410 CALL sw_spectral_props%DEALLOCATE()
411 CALL sw_spectral_props%ALLOCATE(config,
ncol, nlayer,
nspec, canopy_props%i_representation)
414 alb_no_tree_bldg = (alb_surf(1)*sfr_surf(
pavsurf) + alb_surf(5)*sfr_surf(
grasssurf) + &
417 sw_spectral_props%air_ext = air_ext_sw
418 sw_spectral_props%air_ssa = air_ssa_sw
420 sw_spectral_props%veg_ssa = veg_ssa_sw
422 sw_spectral_props%ground_albedo = alb_no_tree_bldg
423 sw_spectral_props%roof_albedo = roof_albedo(
nspec,
ncol)
424 sw_spectral_props%wall_albedo = wall_albedo(
nspec,
ncol)
425 sw_spectral_props%wall_specular_frac = wall_specular_frac(
nspec,
ncol)
426 IF (config%use_sw_direct_albedo)
THEN
427 sw_spectral_props%ground_albedo_dir = alb_no_tree_bldg*ground_albedo_dir_mult_fact
428 sw_spectral_props%roof_albedo_dir = roof_albedo(
nspec,
ncol)*roof_albedo_dir_mult_fact(
nspec,
ncol)
433 CALL lw_spectral_props%DEALLOCATE()
434 CALL lw_spectral_props%ALLOCATE(config,
nspec,
ncol, nlayer, canopy_props%i_representation)
436 emis_no_tree_bldg = (emis_surf(1)*sfr_surf(
pavsurf) + emis_surf(5)*sfr_surf(
grasssurf) + &
439 lw_spectral_props%air_ext = air_ext_lw
440 lw_spectral_props%air_ssa = air_ssa_lw
442 lw_spectral_props%veg_ssa = veg_ssa_lw
444 lw_spectral_props%ground_emissivity = emis_no_tree_bldg
445 lw_spectral_props%roof_emissivity = roof_emissivity(
nspec,
ncol)
446 lw_spectral_props%wall_emissivity = wall_emissivity(
nspec,
ncol)
455 IF (config%do_sw)
THEN
456 CALL sw_norm_dir%ALLOCATE(config,
ncol, nlayer, config%nsw, use_direct=.true.)
457 CALL sw_norm_diff%ALLOCATE(config,
ncol, nlayer, config%nsw, use_direct=.true.)
459 CALL sw_norm_dir%zero_all()
460 CALL sw_norm_diff%zero_all()
462 CALL sw_flux%ALLOCATE(config,
ncol, nlayer, config%nsw, use_direct=.true.)
467 IF (config%do_lw)
THEN
468 CALL lw_internal%ALLOCATE(config,
ncol, nlayer, config%nlw, use_direct=.true.)
469 CALL lw_norm%ALLOCATE(config,
ncol, nlayer, config%nlw, use_direct=.true.)
471 CALL lw_internal%zero_all()
472 CALL lw_norm%zero_all()
474 CALL lw_flux%ALLOCATE(config,
ncol, nlayer, config%nlw, use_direct=.true.)
479 CALL bc_out%ALLOCATE(
ncol, config%nsw, config%nlw)
483 CALL lw_spectral_props%calc_monochromatic_emission(canopy_props)
491 IF (config%do_lw)
THEN
493 CALL calc_simple_spectrum_lw(config, canopy_props, lw_spectral_props, &
494 & istartcol, iendcol)
497 CALL radsurf(config, canopy_props, &
498 & sw_spectral_props, lw_spectral_props, &
500 & istartcol, iendcol, &
501 & sw_norm_dir, sw_norm_diff, &
502 & lw_internal, lw_norm)
503 IF (config%do_sw)
THEN
505 CALL sw_norm_dir%SCALE(canopy_props%nlay, &
506 & top_flux_dn_direct_sw)
507 CALL sw_norm_diff%SCALE(canopy_props%nlay, &
508 & top_flux_dn_sw - top_flux_dn_direct_sw)
509 CALL sw_flux%SUM(sw_norm_dir, sw_norm_diff)
511 IF (config%do_lw)
THEN
512 CALL lw_norm%SCALE(canopy_props%nlay, top_flux_dn_lw)
513 CALL lw_flux%SUM(lw_internal, lw_norm)
518 IF (top_flux_dn_diffuse_sw + top_flux_dn_direct_sw(
nspec,
ncol) > 0.1)
THEN
519 alb_spc = ((top_flux_dn_diffuse_sw + 10.**(-10))*(bc_out%sw_albedo(
nspec,
ncol)) &
520 + (top_flux_dn_direct_sw(
nspec,
ncol) + 10.**(-10))*(bc_out%sw_albedo_dir(
nspec,
ncol))) &
521 /(top_flux_dn_diffuse_sw + top_flux_dn_direct_sw(
nspec,
ncol) + 10.**(-10))
522 IF (alb_spc < 0.0) alb_spc = 0
530 emis_spc = bc_out%lw_emissivity(
nspec,
ncol)
532 lw_emission_spc = bc_out%lw_emission(
nspec,
ncol)
534 lw_up_spc = lw_emission_spc + (1 - emis_spc)*ldown
537 sw_up_spc = kdown*alb_spc
542 clear_air_abs_lw_spc = -999
543 clear_air_abs_lw_spc(:nlayer) = lw_flux%clear_air_abs(
nspec, :nlayer)
544 wall_net_lw_spc = -999
545 wall_net_lw_spc(:nlayer) = lw_flux%wall_net(
nspec, :nlayer)
546 wall_in_lw_spc = -999
547 wall_in_lw_spc(:nlayer) = lw_flux%wall_in(
nspec, :nlayer)
549 roof_net_lw_spc = -999
550 roof_net_lw_spc(:nlayer) = lw_flux%roof_net(
nspec, :nlayer)
552 roof_in_lw_spc = -999
553 roof_in_lw_spc(:nlayer) = lw_flux%roof_in(
nspec, :nlayer)
554 top_net_lw_spc = lw_flux%top_net(
nspec,
ncol)
555 grnd_net_lw_spc = lw_flux%ground_net(
nspec,
ncol)
556 top_dn_lw_spc = lw_flux%top_dn(
nspec,
ncol)
559 clear_air_abs_sw_spc = -999
560 clear_air_abs_sw_spc(:nlayer) = sw_flux%clear_air_abs(
nspec, :nlayer)
561 wall_net_sw_spc = -999
562 wall_net_sw_spc(:nlayer) = sw_flux%wall_net(
nspec, :nlayer)
563 wall_in_sw_spc = -999
564 wall_in_sw_spc(:nlayer) = sw_flux%wall_in(
nspec, :nlayer)
566 roof_net_sw_spc = -999
567 roof_net_sw_spc(:nlayer) = sw_flux%roof_net(
nspec, :nlayer)
570 roof_in_sw_spc = -999
571 roof_in_sw_spc(:nlayer) = sw_flux%roof_in(
nspec, :nlayer)
575 top_dn_dir_sw_spc = sw_flux%top_dn_dir(
nspec,
ncol)
576 top_net_sw_spc = sw_flux%top_net(
nspec,
ncol)
577 grnd_dn_dir_sw_spc = sw_flux%ground_dn_dir(
nspec,
ncol)
578 grnd_net_sw_spc = sw_flux%ground_net(
nspec,
ncol)
579 grnd_vertical_diff = sw_flux%ground_vertical_diff(
nspec,
ncol)
588 qn = max(qn_spc, -600d0)
594 qn_roof = roof_net_lw_spc(:nlayer) + roof_net_sw_spc(:nlayer)
595 qn_wall = wall_net_lw_spc(:nlayer) + wall_net_sw_spc(:nlayer)
600 qn_roof = qn_roof/sfr_roof(:nlayer)
602 qn_wall = qn_wall/sfr_wall(:nlayer)
614 sw_net_grnd = grnd_net_sw_spc/(1 - building_frac(1))
615 lw_net_grnd = grnd_net_lw_spc/(1 - building_frac(1))
618 sw_dn_grnd = sw_net_grnd/dot_product(alb_grnd_ind, sfr_grnd_ind)/sum(sfr_grnd_ind)
622 lw_up_grnd =
sbconst*dot_product(emis_grnd_ind*tsfc_grnd_ind_k**4, sfr_grnd_ind)/sum(sfr_grnd_ind)
625 lw_dn_grnd = lw_up_grnd + lw_net_grnd
626 lw_net_grnd_ind = lw_dn_grnd -
sbconst*emis_grnd_ind*tsfc_grnd_ind_k**4
629 qn_grnd_ind = lw_net_grnd_ind + sw_net_grnd_ind
636 qn_surf(
bldgsurf) = (qn_spc - dot_product(qn_grnd_ind, sfr_grnd_ind))/sfr_surf(
bldgsurf)
638 dataoutlinespartacus = &
639 [alb_spc, emis_spc, &
648 grnd_dn_dir_sw_spc, &
649 grnd_vertical_diff, &
656 clear_air_abs_sw_spc, &
663 clear_air_abs_lw_spc &
668 CALL canopy_props%DEALLOCATE()
669 CALL sw_spectral_props%DEALLOCATE()
670 CALL lw_spectral_props%DEALLOCATE()
671 CALL bc_out%DEALLOCATE()
672 CALL sw_norm_dir%DEALLOCATE()
673 CALL sw_norm_diff%DEALLOCATE()
674 CALL lw_internal%DEALLOCATE()
675 CALL lw_norm%DEALLOCATE()
676 CALL sw_flux%DEALLOCATE()
677 CALL lw_flux%DEALLOCATE()
680 DEALLOCATE (top_flux_dn_sw)
681 DEALLOCATE (top_flux_dn_direct_sw)
682 DEALLOCATE (top_flux_dn_lw)
687 DEALLOCATE (veg_depth)
690 DEALLOCATE (lai_av_z)