75 subroutine rrtmgp_sw_main_run(doSWrad, doSWclrsky, top_at_1, &
76 nCol, nDay, nLay, nGases, rrtmgp_phys_blksz, idx, icseed_sw, iovr, iovr_convcld, &
77 iovr_max, iovr_maxrand, iovr_rand, iovr_dcorr, iovr_exp, iovr_exprand, isubc_sw, &
78 iSFC, sfc_alb_nir_dir, sfc_alb_nir_dif, sfc_alb_uvvis_dir, sfc_alb_uvvis_dif, coszen,&
79 p_lay, p_lev, t_lay, t_lev, vmr_o2, vmr_h2o, vmr_o3, vmr_ch4, vmr_n2o, vmr_co2, &
80 cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_swp, cld_resnow, cld_rwp, &
81 cld_rerain, precip_frac, cld_cnv_lwp, cld_cnv_reliq, cld_cnv_iwp, cld_cnv_reice, &
82 cld_pbl_lwp, cld_pbl_reliq, cld_pbl_iwp, cld_pbl_reice, cloud_overlap_param, &
83 active_gases_array, aersw_tau, aersw_ssa, aersw_g, solcon, scmpsw, &
84 fluxswUP_allsky, fluxswDOWN_allsky, fluxswUP_clrsky, fluxswDOWN_clrsky, cldtausw, &
88 logical,
intent(in) :: &
92 integer,
intent(in) :: &
108 integer,
intent(in),
dimension(:) :: &
110 integer,
intent(in),
dimension(:) :: &
112 real(kind_phys),
dimension(:),
intent(in) :: &
118 real(kind_phys),
dimension(:,:),
intent(in) :: &
129 real(kind_phys),
dimension(:,:),
intent(in) :: &
141 real(kind_phys),
dimension(:,:),
intent(in),
optional :: &
150 real(kind_phys),
dimension(:,:,:),
intent(in) :: &
154 character(len=*),
dimension(:),
intent(in) :: &
156 real(kind_phys),
intent(in) :: &
160 character(len=*),
intent(out) :: &
162 integer,
intent(out) :: &
164 real(kind_phys),
dimension(:,:),
intent(inout) :: &
166 real(kind_phys),
dimension(:,:),
intent(inout) :: &
171 type(
cmpfsw_type),
dimension(:),
intent(inout) :: &
181 type(
cmpfsw_type),
dimension(rrtmgp_phys_blksz) :: scmpsw_clrsky, scmpsw_allsky
182 type(ty_fluxes_byband) :: flux_allsky, flux_clrsky
183 real(kind_phys) :: tau_rain, tau_snow, ssa_rain, ssa_snow, asy_rain, asy_snow, &
184 tau_prec, asy_prec, ssa_prec, asyw, ssaw, za1, za2, flux_dir, flux_dif
185 real(kind_phys),
dimension(rrtmgp_phys_blksz) :: zcf0, zcf1
186 real(kind_dbl_prec),
dimension(sw_gas_props%get_ngpt()) :: rng1d
187 real(rte_wp),
dimension(sw_gas_props%get_ngpt(),nLay,rrtmgp_phys_blksz) :: rng3d,rng3d2
188 real(kind_dbl_prec),
dimension(sw_gas_props%get_ngpt()*nLay) :: rng2d
189 logical,
dimension(rrtmgp_phys_blksz,nLay,sw_gas_props%get_ngpt()) :: maskmcica
190 logical :: cloudy_column, clear_column, dogp_sgs_pbl, dogp_sgs_cnv
191 real(rte_wp),
dimension(sw_gas_props%get_nband(),rrtmgp_phys_blksz) :: &
192 sfc_alb_dir, sfc_alb_dif
193 real(rte_wp),
dimension(rrtmgp_phys_blksz,nLay+1,sw_gas_props%get_nband()),
target :: &
194 fluxsw_up_allsky, fluxsw_up_clrsky, fluxsw_dn_dir_clrsky, fluxsw_dn_allsky, &
195 fluxsw_dn_clrsky, fluxsw_dn_dir_allsky
196 integer :: iband, ibd, ibd_uv, icol, igas, ilay, ix, ix2, iblck
197 integer,
dimension(rrtmgp_phys_blksz) :: ipseed_sw, icols
199 real(kind_phys),
dimension(2,sw_gas_props%get_nband()) :: bandlimits
200 real(kind_phys),
dimension(2),
parameter :: &
201 nir_uvvis_bnd = (/12850,16000/), &
202 uvb_bnd = (/29000,38000/)
203 real(rte_wp),
dimension(rrtmgp_phys_blksz,sw_gas_props%get_ngpt()) :: toa_src_sw
205 type(ty_gas_concs) :: gas_concs
206 type(ty_optical_props_2str) :: sw_optical_props_accum, sw_optical_props_aerosol_local, &
207 sw_optical_props_cloudsbyband, sw_optical_props_cnvcloudsbyband, &
208 sw_optical_props_pblcloudsbyband, sw_optical_props_precipbyband, &
209 sw_optical_props_clouds
215 if (.not. doswrad)
return
218 dogp_sgs_cnv = .false.
219 if (
present(cld_cnv_lwp) .and.
present(cld_cnv_reliq) .and. &
220 present(cld_cnv_iwp) .and.
present(cld_cnv_reice))
then
221 dogp_sgs_cnv = .true.
224 dogp_sgs_pbl = .false.
225 if (
present(cld_pbl_lwp) .and.
present(cld_pbl_reliq) .and. &
226 present(cld_pbl_iwp) .and.
present(cld_pbl_reice))
then
227 dogp_sgs_pbl = .true.
231 call check_error_msg(
'rrtmgp_sw_main_gas_concs_init',gas_concs%init(active_gases_array))
234 call check_error_msg(
'rrtmgp_sw_main_accumulated_optics_init',&
235 sw_optical_props_accum%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props))
236 call check_error_msg(
'rrtmgp_sw_main_cloud_optics_init',&
237 sw_optical_props_cloudsbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
238 call check_error_msg(
'rrtmgp_sw_main_precip_optics_init',&
239 sw_optical_props_precipbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
240 call check_error_msg(
'rrtmgp_sw_mian_cloud_sampling_init', &
241 sw_optical_props_clouds%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props))
242 call check_error_msg(
'rrtmgp_sw_main_aerosol_optics_init',&
243 sw_optical_props_aerosol_local%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
244 if (dogp_sgs_cnv)
then
245 call check_error_msg(
'rrtmgp_sw_main_cnv_cloud_optics_init',&
246 sw_optical_props_cnvcloudsbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
248 if (dogp_sgs_pbl)
then
249 call check_error_msg(
'rrtmgp_sw_main_pbl_cloud_optics_init',&
250 sw_optical_props_pblcloudsbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
253 if (nday .gt. 0)
then
255 bandlimits = sw_gas_props%get_band_lims_wavenumber()
261 do icol=1,nday,rrtmgp_phys_blksz
264 icols = idx(icol:icol + rrtmgp_phys_blksz - 1)
267 zcf0(:) = 1._kind_phys
268 zcf1(:) = 1._kind_phys
269 do iblck = 1, rrtmgp_phys_blksz
271 zcf0(iblck) = min(zcf0(iblck), 1._kind_phys - cld_frac(icols(iblck),ilay))
273 if (zcf0(iblck) <= ftiny) zcf0(iblck) = 0._kind_phys
274 if (zcf0(iblck) > oneminus) zcf0(iblck) = 1._kind_phys
275 zcf1(iblck) = 1._kind_phys - zcf0(iblck)
277 cloudy_column = any(zcf1 .gt. eps)
278 clear_column = .true.
279 if (cloudy_column) clear_column = .false.
286 sw_optical_props_clouds%tau = 0._kind_phys
287 sw_optical_props_clouds%ssa = 0._kind_phys
288 sw_optical_props_clouds%g = 0._kind_phys
289 sw_optical_props_accum%tau = 0._kind_phys
290 sw_optical_props_accum%ssa = 0._kind_phys
291 sw_optical_props_accum%g = 0._kind_phys
292 sw_optical_props_cloudsbyband%tau = 0._kind_phys
293 sw_optical_props_cloudsbyband%ssa = 0._kind_phys
294 sw_optical_props_cloudsbyband%g = 0._kind_phys
295 sw_optical_props_precipbyband%tau = 0._kind_phys
296 sw_optical_props_precipbyband%ssa = 0._kind_phys
297 sw_optical_props_precipbyband%g = 0._kind_phys
298 if (dogp_sgs_cnv)
then
299 sw_optical_props_cnvcloudsbyband%tau = 0._kind_phys
300 sw_optical_props_cnvcloudsbyband%ssa = 0._kind_phys
301 sw_optical_props_cnvcloudsbyband%g = 0._kind_phys
303 if (dogp_sgs_pbl)
then
304 sw_optical_props_pblcloudsbyband%tau = 0._kind_phys
305 sw_optical_props_pblcloudsbyband%ssa = 0._kind_phys
306 sw_optical_props_pblcloudsbyband%g = 0._kind_phys
308 scmpsw_clrsky=
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
309 scmpsw_allsky=
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
310 cldtausw = 0._kind_phys
313 fluxsw_up_allsky = 0._rte_wp
314 fluxsw_dn_allsky = 0._rte_wp
315 fluxsw_dn_dir_allsky = 0._rte_wp
316 fluxsw_up_clrsky = 0._rte_wp
317 fluxsw_dn_clrsky = 0._rte_wp
318 flux_allsky%bnd_flux_up => fluxsw_up_allsky
319 flux_allsky%bnd_flux_dn => fluxsw_dn_allsky
320 flux_allsky%bnd_flux_dn_dir => fluxsw_dn_dir_allsky
321 flux_clrsky%bnd_flux_up => fluxsw_up_clrsky
322 flux_clrsky%bnd_flux_dn => fluxsw_dn_clrsky
329 call check_error_msg(
'rrtmgp_sw_main_set_vmr_o2', &
330 gas_concs%set_vmr(trim(active_gases_array(istr_o2)), real(vmr_o2(icols,:), kind=rte_wp)))
331 call check_error_msg(
'rrtmgp_sw_main_set_vmr_co2', &
332 gas_concs%set_vmr(trim(active_gases_array(istr_co2)),real(vmr_co2(icols,:), kind=rte_wp)))
333 call check_error_msg(
'rrtmgp_sw_main_set_vmr_ch4', &
334 gas_concs%set_vmr(trim(active_gases_array(istr_ch4)),real(vmr_ch4(icols,:), kind=rte_wp)))
335 call check_error_msg(
'rrtmgp_sw_main_set_vmr_n2o', &
336 gas_concs%set_vmr(trim(active_gases_array(istr_n2o)),real(vmr_n2o(icols,:), kind=rte_wp)))
337 call check_error_msg(
'rrtmgp_sw_main_set_vmr_h2o', &
338 gas_concs%set_vmr(trim(active_gases_array(istr_h2o)),real(vmr_h2o(icols,:), kind=rte_wp)))
339 call check_error_msg(
'rrtmgp_sw_main_set_vmr_o3', &
340 gas_concs%set_vmr(trim(active_gases_array(istr_o3)), real(vmr_o3(icols,:), kind=rte_wp)))
348 call check_error_msg(
'rrtmgp_sw_main_gas_optics',sw_gas_props%gas_optics(&
349 real(p_lay(icols,:), kind=rte_wp), &
350 real(p_lev(icols,:), kind=rte_wp), &
351 real(t_lay(icols,:), kind=rte_wp), &
353 sw_optical_props_accum, &
357 do iblck = 1, rrtmgp_phys_blksz
358 toa_src_sw(iblck,:) = toa_src_sw(iblck,:)*solcon / sum(toa_src_sw(iblck,:))
370 do iblck = 1, rrtmgp_phys_blksz
371 do iband=1,sw_gas_props%get_nband()
372 if (bandlimits(1,iband) .lt. nir_uvvis_bnd(1))
then
373 sfc_alb_dir(iband,iblck) = sfc_alb_nir_dir(icols(iblck))
374 sfc_alb_dif(iband,iblck) = sfc_alb_nir_dif(icols(iblck))
376 if (bandlimits(1,iband) .eq. nir_uvvis_bnd(1))
then
377 sfc_alb_dir(iband,iblck) = 0.5_kind_phys*(sfc_alb_nir_dir(icols(iblck)) + &
378 sfc_alb_uvvis_dir(icols(iblck)))
379 sfc_alb_dif(iband,iblck) = 0.5_kind_phys*(sfc_alb_nir_dif(icols(iblck)) + &
380 sfc_alb_uvvis_dif(icols(iblck)))
383 if (bandlimits(1,iband) .ge. nir_uvvis_bnd(2))
then
384 sfc_alb_dir(iband,iblck) = sfc_alb_uvvis_dir(icols(iblck))
385 sfc_alb_dif(iband,iblck) = sfc_alb_uvvis_dif(icols(iblck))
387 if (bandlimits(1,iband) .eq. uvb_bnd(1)) ibd_uv = iband
396 if (cloudy_column)
then
398 call check_error_msg(
'rrtmgp_sw_main_cloud_optics',sw_cloud_props%cloud_optics(&
399 real(cld_lwp(icols,:), kind=rte_wp), &
400 real(cld_iwp(icols,:), kind=rte_wp), &
401 real(cld_reliq(icols,:),kind=rte_wp), &
402 real(cld_reice(icols,:),kind=rte_wp), &
403 sw_optical_props_cloudsbyband))
405 cldtausw(icols,:) = sw_optical_props_cloudsbyband%tau(:,:,11)
408 if (dogp_sgs_cnv)
then
410 call check_error_msg(
'rrtmgp_sw_main_cnv_cloud_optics',sw_cloud_props%cloud_optics(&
411 real(cld_cnv_lwp(icols,:), kind=rte_wp), &
412 real(cld_cnv_iwp(icols,:), kind=rte_wp), &
413 real(cld_cnv_reliq(icols,:),kind=rte_wp), &
414 real(cld_cnv_reice(icols,:),kind=rte_wp), &
415 sw_optical_props_cnvcloudsbyband))
418 call check_error_msg(
'rrtmgp_sw_main_increment_cnvclouds_to_clouds',&
419 sw_optical_props_cnvcloudsbyband%increment(sw_optical_props_cloudsbyband))
423 if (dogp_sgs_pbl)
then
425 call check_error_msg(
'rrtmgp_sw_main_pbl_cloud_optics',sw_cloud_props%cloud_optics(&
426 real(cld_pbl_lwp(icols,:), kind=rte_wp), &
427 real(cld_pbl_iwp(icols,:), kind=rte_wp), &
428 real(cld_pbl_reliq(icols,:), kind=rte_wp), &
429 real(cld_pbl_reice(icols,:), kind=rte_wp), &
430 sw_optical_props_pblcloudsbyband))
433 call check_error_msg(
'rrtmgp_sw_main_increment_pblclouds_to_clouds',&
434 sw_optical_props_pblcloudsbyband%increment(sw_optical_props_cloudsbyband))
438 do iblck = 1, rrtmgp_phys_blksz
440 if (cld_frac(icols(iblck),ilay) .gt. ftiny)
then
442 tau_rain = cld_rwp(icols(iblck),ilay)*a0r
443 if (cld_swp(icols(iblck),ilay) .gt. 0. .and. cld_resnow(icols(iblck),ilay) .gt. 10._kind_phys)
then
444 tau_snow = cld_swp(icols(iblck),ilay)*1.09087*(a0s + a1s/(1.0315*cld_resnow(icols(iblck),ilay)))
446 tau_snow = 0._kind_phys
450 do iband=1,sw_gas_props%get_nband()
452 ssa_rain = tau_rain*(1.-b0r(iband))
453 asy_rain = ssa_rain*c0r(iband)
454 ssa_snow = tau_snow*(1.-(b0s(iband)+b1s(iband)*1.0315*cld_resnow(icols(iblck),ilay)))
455 asy_snow = ssa_snow*c0s(iband)
457 tau_prec = max(1.e-12_kind_phys, tau_rain + tau_snow)
458 ssa_prec = max(1.e-12_kind_phys, ssa_rain + ssa_snow)
459 asy_prec = max(1.e-12_kind_phys, asy_rain + asy_snow)
460 asyw = asy_prec/max(1.e-12_kind_phys, ssa_prec)
461 ssaw = min(1._kind_phys-0.000001, ssa_prec/tau_prec)
464 sw_optical_props_precipbyband%tau(iblck,ilay,iband) = (1._kind_phys - za2) * tau_prec
465 sw_optical_props_precipbyband%ssa(iblck,ilay,iband) = (ssaw - za2) / (1._kind_phys - za2)
466 sw_optical_props_precipbyband%g(iblck,ilay,iband) = asyw/(1+asyw)
472 call check_error_msg(
'rrtmgp_sw_main_increment_precip_to_clouds',&
473 sw_optical_props_precipbyband%increment(sw_optical_props_cloudsbyband))
481 if(isubc_sw == 1)
then
482 do iblck = 1, rrtmgp_phys_blksz
483 ipseed_sw(iblck) = sw_gas_props%get_ngpt() + icols(iblck)
485 elseif (isubc_sw == 2)
then
486 do iblck = 1, rrtmgp_phys_blksz
487 ipseed_sw(iblck) = icseed_sw(icols(iblck))
492 do iblck = 1, rrtmgp_phys_blksz
495 if (iovr == iovr_max)
then
498 rng3d(:,ilay,iblck) = rng1d
503 rng3d(:,ilay,iblck) = rng1d
510 if (iovr == iovr_maxrand .or. iovr == iovr_rand .or. iovr == iovr_max)
then
511 call sampled_mask(rng3d, real(cld_frac(icols,:), kind=rte_wp), maskmcica)
514 if (iovr == iovr_dcorr)
then
515 do iblck = 1, rrtmgp_phys_blksz
519 rng3d2(:,:,iblck) = reshape(source = rng2d,shape=[sw_gas_props%get_ngpt(),nlay])
522 call sampled_mask(rng3d, real(cld_frac(icols,:), kind=rte_wp), &
523 maskmcica, overlap_param = real(cloud_overlap_param(icols,1:nlay-1), kind=rte_wp),&
527 if (iovr == iovr_exp .or. iovr == iovr_exprand)
then
528 call sampled_mask(rng3d, real(cld_frac(icols,:), kind=rte_wp), &
529 maskmcica, overlap_param = real(cloud_overlap_param(icols,1:nlay-1), kind=rte_wp))
532 call check_error_msg(
'rrtmgp_sw_main_cloud_sampling',&
533 draw_samples(maskmcica, .true., &
534 sw_optical_props_cloudsbyband, sw_optical_props_clouds))
543 sw_optical_props_aerosol_local%tau = aersw_tau(icols,:,:)
544 sw_optical_props_aerosol_local%ssa = aersw_ssa(icols,:,:)
545 sw_optical_props_aerosol_local%g = aersw_g(icols,:,:)
546 call check_error_msg(
'rrtmgp_sw_main_increment_aerosol_to_clrsky', &
547 sw_optical_props_aerosol_local%increment(sw_optical_props_accum))
550 if (clear_column .or. doswclrsky)
then
551 call check_error_msg(
'rrtmgp_sw_main_rte_sw_clrsky',rte_sw( &
552 sw_optical_props_accum, &
554 real(coszen(icols), kind=rte_wp), &
561 fluxswup_clrsky(icols,:) = sum(flux_clrsky%bnd_flux_up, dim=3)
562 fluxswdown_clrsky(icols,:) = sum(flux_clrsky%bnd_flux_dn, dim=3)
565 do iblck = 1, rrtmgp_phys_blksz
566 do iband=1,sw_gas_props%get_nband()
567 flux_dir = flux_clrsky%bnd_flux_dn(iblck,isfc,iband)
568 flux_dif = 0._kind_phys
570 if (iband < ibd)
then
571 scmpsw_clrsky(iblck)%nirbm = scmpsw_clrsky(iblck)%nirbm + flux_dir
572 scmpsw_clrsky(iblck)%nirdf = scmpsw_clrsky(iblck)%nirdf + flux_dif
575 if (iband == ibd)
then
576 scmpsw_clrsky(iblck)%nirbm = scmpsw_clrsky(iblck)%nirbm + flux_dir*0.5_kind_phys
577 scmpsw_clrsky(iblck)%nirdf = scmpsw_clrsky(iblck)%nirdf + flux_dif*0.5_kind_phys
578 scmpsw_clrsky(iblck)%visbm = scmpsw_clrsky(iblck)%visbm + flux_dir*0.5_kind_phys
579 scmpsw_clrsky(iblck)%visdf = scmpsw_clrsky(iblck)%visdf + flux_dif*0.5_kind_phys
582 if (iband > ibd)
then
583 scmpsw_clrsky(iblck)%visbm = scmpsw_clrsky(iblck)%visbm + flux_dir
584 scmpsw_clrsky(iblck)%visdf = scmpsw_clrsky(iblck)%visdf + flux_dif
587 scmpsw_clrsky(iblck)%uvbfc = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
591 fluxswup_clrsky(icols,:) = 0._kind_phys
592 fluxswdown_clrsky(icols,:) = 0._kind_phys
593 scmpsw =
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
601 if (cloudy_column)
then
606 call check_error_msg(
'rrtmgp_sw_main_increment_clouds_to_clrsky', &
607 sw_optical_props_clouds%increment(sw_optical_props_accum))
610 call check_error_msg(
'rrtmgp_sw_main_rte_sw_allsky',rte_sw( &
611 sw_optical_props_accum, &
613 real(coszen(icols), kind=rte_wp), &
620 fluxswup_allsky(icols,:) = sum(flux_allsky%bnd_flux_up, dim=3)
621 fluxswdown_allsky(icols,:) = sum(flux_allsky%bnd_flux_dn, dim=3)
624 do iblck = 1, rrtmgp_phys_blksz
626 do iband=1,sw_gas_props%get_nband()
627 flux_dir = flux_allsky%bnd_flux_dn_dir(iblck,isfc,iband)
628 flux_dif = flux_allsky%bnd_flux_dn(iblck,isfc,iband) - flux_allsky%bnd_flux_dn_dir(iblck,isfc,iband)
630 if (iband < ibd)
then
631 scmpsw_allsky(iblck)%nirbm = scmpsw_allsky(iblck)%nirbm + flux_dir
632 scmpsw_allsky(iblck)%nirdf = scmpsw_allsky(iblck)%nirdf + flux_dif
635 if (iband == ibd)
then
636 scmpsw_allsky(iblck)%nirbm = scmpsw_allsky(iblck)%nirbm + flux_dir*0.5_kind_phys
637 scmpsw_allsky(iblck)%nirdf = scmpsw_allsky(iblck)%nirdf + flux_dif*0.5_kind_phys
638 scmpsw_allsky(iblck)%visbm = scmpsw_allsky(iblck)%visbm + flux_dir*0.5_kind_phys
639 scmpsw_allsky(iblck)%visdf = scmpsw_allsky(iblck)%visdf + flux_dif*0.5_kind_phys
642 if (iband > ibd)
then
643 scmpsw_allsky(iblck)%visbm = scmpsw_allsky(iblck)%visbm + flux_dir
644 scmpsw_allsky(iblck)%visdf = scmpsw_allsky(iblck)%visdf + flux_dif
647 scmpsw_allsky(iblck)%uvbfc = flux_allsky%bnd_flux_dn(iblck,isfc,ibd_uv)
650 if (zcf1(iblck) .gt. eps)
then
651 scmpsw(icols(iblck))%nirbm = scmpsw_allsky(iblck)%nirbm
652 scmpsw(icols(iblck))%nirdf = scmpsw_allsky(iblck)%nirdf
653 scmpsw(icols(iblck))%visbm = scmpsw_allsky(iblck)%visbm
654 scmpsw(icols(iblck))%visdf = scmpsw_allsky(iblck)%visdf
655 scmpsw(icols(iblck))%uvbfc = flux_allsky%bnd_flux_dn(iblck,isfc,ibd_uv)
657 scmpsw(icols(iblck))%nirbm = scmpsw_clrsky(iblck)%nirbm
658 scmpsw(icols(iblck))%nirdf = scmpsw_clrsky(iblck)%nirdf
659 scmpsw(icols(iblck))%visbm = scmpsw_clrsky(iblck)%visbm
660 scmpsw(icols(iblck))%visdf = scmpsw_clrsky(iblck)%visdf
661 scmpsw(icols(iblck))%uvbfc = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
663 scmpsw(icols(iblck))%uvbf0 = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
666 fluxswup_allsky(icols,:) = sum(flux_clrsky%bnd_flux_up, dim=3)
667 fluxswdown_allsky(icols,:) = sum(flux_clrsky%bnd_flux_dn, dim=3)
668 do iblck = 1, rrtmgp_phys_blksz
669 scmpsw(icols(iblck))%nirbm = scmpsw_clrsky(iblck)%nirbm
670 scmpsw(icols(iblck))%nirdf = scmpsw_clrsky(iblck)%nirdf
671 scmpsw(icols(iblck))%visbm = scmpsw_clrsky(iblck)%visbm
672 scmpsw(icols(iblck))%visdf = scmpsw_clrsky(iblck)%visdf
673 scmpsw(icols(iblck))%uvbfc = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
674 scmpsw(icols(iblck))%uvbf0 = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
680 fluxswup_allsky(:,:) = 0._kind_phys
681 fluxswdown_allsky(:,:) = 0._kind_phys
682 fluxswup_clrsky(:,:) = 0._kind_phys
683 fluxswdown_clrsky(:,:) = 0._kind_phys
684 scmpsw =
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )