78 subroutine rrtmgp_sw_main_run(doSWrad, doSWclrsky, top_at_1, &
79 nCol, nDay, nLay, nGases, rrtmgp_phys_blksz, idx, icseed_sw, iovr, iovr_convcld, &
80 iovr_max, iovr_maxrand, iovr_rand, iovr_dcorr, iovr_exp, iovr_exprand, isubc_sw, &
81 iSFC, sfc_alb_nir_dir, sfc_alb_nir_dif, sfc_alb_uvvis_dir, sfc_alb_uvvis_dif, coszen,&
82 p_lay, p_lev, t_lay, t_lev, vmr_o2, vmr_h2o, vmr_o3, vmr_ch4, vmr_n2o, vmr_co2, &
83 cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_swp, cld_resnow, cld_rwp, &
84 cld_rerain, precip_frac, cld_cnv_lwp, cld_cnv_reliq, cld_cnv_iwp, cld_cnv_reice, &
85 cld_pbl_lwp, cld_pbl_reliq, cld_pbl_iwp, cld_pbl_reice, cloud_overlap_param, &
86 active_gases_array, aersw_tau, aersw_ssa, aersw_g, solcon, scmpsw, &
87 fluxswUP_allsky, fluxswDOWN_allsky, fluxswUP_clrsky, fluxswDOWN_clrsky, cldtausw, &
91 logical,
intent(in) :: &
95 integer,
intent(in) :: &
111 integer,
intent(in),
dimension(:) :: &
113 integer,
intent(in),
dimension(:) :: &
115 real(kind_phys),
dimension(:),
intent(in) :: &
121 real(kind_phys),
dimension(:,:),
intent(in) :: &
132 real(kind_phys),
dimension(:,:),
intent(in) :: &
144 real(kind_phys),
dimension(:,:),
intent(in),
optional :: &
153 real(kind_phys),
dimension(:,:,:),
intent(in) :: &
157 character(len=*),
dimension(:),
intent(in) :: &
159 real(kind_phys),
intent(in) :: &
163 character(len=*),
intent(out) :: &
165 integer,
intent(out) :: &
167 real(kind_phys),
dimension(:,:),
intent(inout) :: &
169 real(kind_phys),
dimension(:,:),
intent(inout) :: &
174 type(
cmpfsw_type),
dimension(:),
intent(inout) :: &
184 type(
cmpfsw_type),
dimension(rrtmgp_phys_blksz) :: scmpsw_clrsky, scmpsw_allsky
185 type(ty_fluxes_byband) :: flux_allsky, flux_clrsky
186 real(kind_phys) :: tau_rain, tau_snow, ssa_rain, ssa_snow, asy_rain, asy_snow, &
187 tau_prec, asy_prec, ssa_prec, asyw, ssaw, za1, za2, flux_dir, flux_dif
188 real(kind_phys),
dimension(rrtmgp_phys_blksz) :: zcf0, zcf1
189 real(kind_dbl_prec),
dimension(sw_gas_props%get_ngpt()) :: rng1d
190 real(rte_wp),
dimension(sw_gas_props%get_ngpt(),nLay,rrtmgp_phys_blksz) :: rng3d,rng3d2
191 real(kind_dbl_prec),
dimension(sw_gas_props%get_ngpt()*nLay) :: rng2d
192 logical,
dimension(rrtmgp_phys_blksz,nLay,sw_gas_props%get_ngpt()) :: maskmcica
193 logical :: cloudy_column, clear_column, dogp_sgs_pbl, dogp_sgs_cnv
194 real(rte_wp),
dimension(sw_gas_props%get_nband(),rrtmgp_phys_blksz) :: &
195 sfc_alb_dir, sfc_alb_dif
196 real(rte_wp),
dimension(rrtmgp_phys_blksz,nLay+1,sw_gas_props%get_nband()),
target :: &
197 fluxsw_up_allsky, fluxsw_up_clrsky, fluxsw_dn_dir_clrsky, fluxsw_dn_allsky, &
198 fluxsw_dn_clrsky, fluxsw_dn_dir_allsky
199 integer :: iband, ibd, ibd_uv, icol, igas, ilay, ix, ix2, iblck
200 integer,
dimension(rrtmgp_phys_blksz) :: ipseed_sw, icols
202 real(kind_phys),
dimension(2,sw_gas_props%get_nband()) :: bandlimits
203 real(kind_phys),
dimension(2),
parameter :: &
204 nir_uvvis_bnd = (/12850,16000/), &
205 uvb_bnd = (/29000,38000/)
206 real(rte_wp),
dimension(rrtmgp_phys_blksz,sw_gas_props%get_ngpt()) :: toa_src_sw
208 type(ty_gas_concs) :: gas_concs
209 type(ty_optical_props_2str) :: sw_optical_props_accum, sw_optical_props_aerosol_local, &
210 sw_optical_props_cloudsbyband, sw_optical_props_cnvcloudsbyband, &
211 sw_optical_props_pblcloudsbyband, sw_optical_props_precipbyband, &
212 sw_optical_props_clouds
218 if (.not. doswrad)
return
221 dogp_sgs_cnv = .false.
222 if (
present(cld_cnv_lwp) .and.
present(cld_cnv_reliq) .and. &
223 present(cld_cnv_iwp) .and.
present(cld_cnv_reice))
then
224 dogp_sgs_cnv = .true.
227 dogp_sgs_pbl = .false.
228 if (
present(cld_pbl_lwp) .and.
present(cld_pbl_reliq) .and. &
229 present(cld_pbl_iwp) .and.
present(cld_pbl_reice))
then
230 dogp_sgs_pbl = .true.
234 call check_error_msg(
'rrtmgp_sw_main_gas_concs_init',gas_concs%init(active_gases_array))
237 call check_error_msg(
'rrtmgp_sw_main_accumulated_optics_init',&
238 sw_optical_props_accum%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props))
239 call check_error_msg(
'rrtmgp_sw_main_cloud_optics_init',&
240 sw_optical_props_cloudsbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
241 call check_error_msg(
'rrtmgp_sw_main_precip_optics_init',&
242 sw_optical_props_precipbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
243 call check_error_msg(
'rrtmgp_sw_mian_cloud_sampling_init', &
244 sw_optical_props_clouds%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props))
245 call check_error_msg(
'rrtmgp_sw_main_aerosol_optics_init',&
246 sw_optical_props_aerosol_local%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
247 if (dogp_sgs_cnv)
then
248 call check_error_msg(
'rrtmgp_sw_main_cnv_cloud_optics_init',&
249 sw_optical_props_cnvcloudsbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
251 if (dogp_sgs_pbl)
then
252 call check_error_msg(
'rrtmgp_sw_main_pbl_cloud_optics_init',&
253 sw_optical_props_pblcloudsbyband%alloc_2str(rrtmgp_phys_blksz, nlay, sw_gas_props%get_band_lims_wavenumber()))
256 if (nday .gt. 0)
then
258 bandlimits = sw_gas_props%get_band_lims_wavenumber()
264 do icol=1,nday,rrtmgp_phys_blksz
267 icols = idx(icol:icol + rrtmgp_phys_blksz - 1)
270 zcf0(:) = 1._kind_phys
271 zcf1(:) = 1._kind_phys
272 do iblck = 1, rrtmgp_phys_blksz
274 zcf0(iblck) = min(zcf0(iblck), 1._kind_phys - cld_frac(icols(iblck),ilay))
276 if (zcf0(iblck) <= ftiny) zcf0(iblck) = 0._kind_phys
277 if (zcf0(iblck) > oneminus) zcf0(iblck) = 1._kind_phys
278 zcf1(iblck) = 1._kind_phys - zcf0(iblck)
280 cloudy_column = any(zcf1 .gt. eps)
281 clear_column = .true.
282 if (cloudy_column) clear_column = .false.
289 sw_optical_props_clouds%tau = 0._kind_phys
290 sw_optical_props_clouds%ssa = 0._kind_phys
291 sw_optical_props_clouds%g = 0._kind_phys
292 sw_optical_props_accum%tau = 0._kind_phys
293 sw_optical_props_accum%ssa = 0._kind_phys
294 sw_optical_props_accum%g = 0._kind_phys
295 sw_optical_props_cloudsbyband%tau = 0._kind_phys
296 sw_optical_props_cloudsbyband%ssa = 0._kind_phys
297 sw_optical_props_cloudsbyband%g = 0._kind_phys
298 sw_optical_props_precipbyband%tau = 0._kind_phys
299 sw_optical_props_precipbyband%ssa = 0._kind_phys
300 sw_optical_props_precipbyband%g = 0._kind_phys
301 if (dogp_sgs_cnv)
then
302 sw_optical_props_cnvcloudsbyband%tau = 0._kind_phys
303 sw_optical_props_cnvcloudsbyband%ssa = 0._kind_phys
304 sw_optical_props_cnvcloudsbyband%g = 0._kind_phys
306 if (dogp_sgs_pbl)
then
307 sw_optical_props_pblcloudsbyband%tau = 0._kind_phys
308 sw_optical_props_pblcloudsbyband%ssa = 0._kind_phys
309 sw_optical_props_pblcloudsbyband%g = 0._kind_phys
311 scmpsw_clrsky=
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
312 scmpsw_allsky=
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
313 cldtausw = 0._kind_phys
316 fluxsw_up_allsky = 0._rte_wp
317 fluxsw_dn_allsky = 0._rte_wp
318 fluxsw_dn_dir_allsky = 0._rte_wp
319 fluxsw_up_clrsky = 0._rte_wp
320 fluxsw_dn_clrsky = 0._rte_wp
321 flux_allsky%bnd_flux_up => fluxsw_up_allsky
322 flux_allsky%bnd_flux_dn => fluxsw_dn_allsky
323 flux_allsky%bnd_flux_dn_dir => fluxsw_dn_dir_allsky
324 flux_clrsky%bnd_flux_up => fluxsw_up_clrsky
325 flux_clrsky%bnd_flux_dn => fluxsw_dn_clrsky
332 call check_error_msg(
'rrtmgp_sw_main_set_vmr_o2', &
333 gas_concs%set_vmr(trim(active_gases_array(istr_o2)), real(vmr_o2(icols,:), kind=rte_wp)))
334 call check_error_msg(
'rrtmgp_sw_main_set_vmr_co2', &
335 gas_concs%set_vmr(trim(active_gases_array(istr_co2)),real(vmr_co2(icols,:), kind=rte_wp)))
336 call check_error_msg(
'rrtmgp_sw_main_set_vmr_ch4', &
337 gas_concs%set_vmr(trim(active_gases_array(istr_ch4)),real(vmr_ch4(icols,:), kind=rte_wp)))
338 call check_error_msg(
'rrtmgp_sw_main_set_vmr_n2o', &
339 gas_concs%set_vmr(trim(active_gases_array(istr_n2o)),real(vmr_n2o(icols,:), kind=rte_wp)))
340 call check_error_msg(
'rrtmgp_sw_main_set_vmr_h2o', &
341 gas_concs%set_vmr(trim(active_gases_array(istr_h2o)),real(vmr_h2o(icols,:), kind=rte_wp)))
342 call check_error_msg(
'rrtmgp_sw_main_set_vmr_o3', &
343 gas_concs%set_vmr(trim(active_gases_array(istr_o3)), real(vmr_o3(icols,:), kind=rte_wp)))
351 call check_error_msg(
'rrtmgp_sw_main_gas_optics',sw_gas_props%gas_optics(&
352 real(p_lay(icols,:), kind=rte_wp), &
353 real(p_lev(icols,:), kind=rte_wp), &
354 real(t_lay(icols,:), kind=rte_wp), &
356 sw_optical_props_accum, &
360 do iblck = 1, rrtmgp_phys_blksz
361 toa_src_sw(iblck,:) = toa_src_sw(iblck,:)*solcon / sum(toa_src_sw(iblck,:))
373 do iblck = 1, rrtmgp_phys_blksz
374 do iband=1,sw_gas_props%get_nband()
375 if (bandlimits(1,iband) .lt. nir_uvvis_bnd(1))
then
376 sfc_alb_dir(iband,iblck) = sfc_alb_nir_dir(icols(iblck))
377 sfc_alb_dif(iband,iblck) = sfc_alb_nir_dif(icols(iblck))
379 if (bandlimits(1,iband) .eq. nir_uvvis_bnd(1))
then
380 sfc_alb_dir(iband,iblck) = 0.5_kind_phys*(sfc_alb_nir_dir(icols(iblck)) + &
381 sfc_alb_uvvis_dir(icols(iblck)))
382 sfc_alb_dif(iband,iblck) = 0.5_kind_phys*(sfc_alb_nir_dif(icols(iblck)) + &
383 sfc_alb_uvvis_dif(icols(iblck)))
386 if (bandlimits(1,iband) .ge. nir_uvvis_bnd(2))
then
387 sfc_alb_dir(iband,iblck) = sfc_alb_uvvis_dir(icols(iblck))
388 sfc_alb_dif(iband,iblck) = sfc_alb_uvvis_dif(icols(iblck))
390 if (bandlimits(1,iband) .eq. uvb_bnd(1)) ibd_uv = iband
399 if (cloudy_column)
then
401 call check_error_msg(
'rrtmgp_sw_main_cloud_optics',sw_cloud_props%cloud_optics(&
402 real(cld_lwp(icols,:), kind=rte_wp), &
403 real(cld_iwp(icols,:), kind=rte_wp), &
404 real(cld_reliq(icols,:),kind=rte_wp), &
405 real(cld_reice(icols,:),kind=rte_wp), &
406 sw_optical_props_cloudsbyband))
408 cldtausw(icols,:) = sw_optical_props_cloudsbyband%tau(:,:,11)
411 if (dogp_sgs_cnv)
then
413 call check_error_msg(
'rrtmgp_sw_main_cnv_cloud_optics',sw_cloud_props%cloud_optics(&
414 real(cld_cnv_lwp(icols,:), kind=rte_wp), &
415 real(cld_cnv_iwp(icols,:), kind=rte_wp), &
416 real(cld_cnv_reliq(icols,:),kind=rte_wp), &
417 real(cld_cnv_reice(icols,:),kind=rte_wp), &
418 sw_optical_props_cnvcloudsbyband))
421 call check_error_msg(
'rrtmgp_sw_main_increment_cnvclouds_to_clouds',&
422 sw_optical_props_cnvcloudsbyband%increment(sw_optical_props_cloudsbyband))
426 if (dogp_sgs_pbl)
then
428 call check_error_msg(
'rrtmgp_sw_main_pbl_cloud_optics',sw_cloud_props%cloud_optics(&
429 real(cld_pbl_lwp(icols,:), kind=rte_wp), &
430 real(cld_pbl_iwp(icols,:), kind=rte_wp), &
431 real(cld_pbl_reliq(icols,:), kind=rte_wp), &
432 real(cld_pbl_reice(icols,:), kind=rte_wp), &
433 sw_optical_props_pblcloudsbyband))
436 call check_error_msg(
'rrtmgp_sw_main_increment_pblclouds_to_clouds',&
437 sw_optical_props_pblcloudsbyband%increment(sw_optical_props_cloudsbyband))
441 do iblck = 1, rrtmgp_phys_blksz
443 if (cld_frac(icols(iblck),ilay) .gt. ftiny)
then
445 tau_rain = cld_rwp(icols(iblck),ilay)*a0r
446 if (cld_swp(icols(iblck),ilay) .gt. 0. .and. cld_resnow(icols(iblck),ilay) .gt. 10._kind_phys)
then
447 tau_snow = cld_swp(icols(iblck),ilay)*1.09087*(a0s + a1s/(1.0315*cld_resnow(icols(iblck),ilay)))
449 tau_snow = 0._kind_phys
453 do iband=1,sw_gas_props%get_nband()
455 ssa_rain = tau_rain*(1.-b0r(iband))
456 asy_rain = ssa_rain*c0r(iband)
457 ssa_snow = tau_snow*(1.-(b0s(iband)+b1s(iband)*1.0315*cld_resnow(icols(iblck),ilay)))
458 asy_snow = ssa_snow*c0s(iband)
460 tau_prec = max(1.e-12_kind_phys, tau_rain + tau_snow)
461 ssa_prec = max(1.e-12_kind_phys, ssa_rain + ssa_snow)
462 asy_prec = max(1.e-12_kind_phys, asy_rain + asy_snow)
463 asyw = asy_prec/max(1.e-12_kind_phys, ssa_prec)
464 ssaw = min(1._kind_phys-0.000001, ssa_prec/tau_prec)
467 sw_optical_props_precipbyband%tau(iblck,ilay,iband) = (1._kind_phys - za2) * tau_prec
468 sw_optical_props_precipbyband%ssa(iblck,ilay,iband) = (ssaw - za2) / (1._kind_phys - za2)
469 sw_optical_props_precipbyband%g(iblck,ilay,iband) = asyw/(1+asyw)
475 call check_error_msg(
'rrtmgp_sw_main_increment_precip_to_clouds',&
476 sw_optical_props_precipbyband%increment(sw_optical_props_cloudsbyband))
484 if(isubc_sw == 1)
then
485 do iblck = 1, rrtmgp_phys_blksz
486 ipseed_sw(iblck) = sw_gas_props%get_ngpt() + icols(iblck)
488 elseif (isubc_sw == 2)
then
489 do iblck = 1, rrtmgp_phys_blksz
490 ipseed_sw(iblck) = icseed_sw(icols(iblck))
495 do iblck = 1, rrtmgp_phys_blksz
498 if (iovr == iovr_max)
then
501 rng3d(:,ilay,iblck) = rng1d
506 rng3d(:,ilay,iblck) = rng1d
513 if (iovr == iovr_maxrand .or. iovr == iovr_rand .or. iovr == iovr_max)
then
514 call sampled_mask(rng3d, real(cld_frac(icols,:), kind=rte_wp), maskmcica)
517 if (iovr == iovr_dcorr)
then
518 do iblck = 1, rrtmgp_phys_blksz
522 rng3d2(:,:,iblck) = reshape(source = rng2d,shape=[sw_gas_props%get_ngpt(),nlay])
525 call sampled_mask(rng3d, real(cld_frac(icols,:), kind=rte_wp), &
526 maskmcica, overlap_param = real(cloud_overlap_param(icols,1:nlay-1), kind=rte_wp),&
530 if (iovr == iovr_exp .or. iovr == iovr_exprand)
then
531 call sampled_mask(rng3d, real(cld_frac(icols,:), kind=rte_wp), &
532 maskmcica, overlap_param = real(cloud_overlap_param(icols,1:nlay-1), kind=rte_wp))
535 call check_error_msg(
'rrtmgp_sw_main_cloud_sampling',&
536 draw_samples(maskmcica, .true., &
537 sw_optical_props_cloudsbyband, sw_optical_props_clouds))
546 sw_optical_props_aerosol_local%tau = aersw_tau(icols,:,:)
547 sw_optical_props_aerosol_local%ssa = aersw_ssa(icols,:,:)
548 sw_optical_props_aerosol_local%g = aersw_g(icols,:,:)
549 call check_error_msg(
'rrtmgp_sw_main_increment_aerosol_to_clrsky', &
550 sw_optical_props_aerosol_local%increment(sw_optical_props_accum))
553 if (clear_column .or. doswclrsky)
then
554 call check_error_msg(
'rrtmgp_sw_main_rte_sw_clrsky',rte_sw( &
555 sw_optical_props_accum, &
557 real(coszen(icols), kind=rte_wp), &
564 fluxswup_clrsky(icols,:) = sum(flux_clrsky%bnd_flux_up, dim=3)
565 fluxswdown_clrsky(icols,:) = sum(flux_clrsky%bnd_flux_dn, dim=3)
568 do iblck = 1, rrtmgp_phys_blksz
569 do iband=1,sw_gas_props%get_nband()
570 flux_dir = flux_clrsky%bnd_flux_dn(iblck,isfc,iband)
571 flux_dif = 0._kind_phys
573 if (iband < ibd)
then
574 scmpsw_clrsky(iblck)%nirbm = scmpsw_clrsky(iblck)%nirbm + flux_dir
575 scmpsw_clrsky(iblck)%nirdf = scmpsw_clrsky(iblck)%nirdf + flux_dif
578 if (iband == ibd)
then
579 scmpsw_clrsky(iblck)%nirbm = scmpsw_clrsky(iblck)%nirbm + flux_dir*0.5_kind_phys
580 scmpsw_clrsky(iblck)%nirdf = scmpsw_clrsky(iblck)%nirdf + flux_dif*0.5_kind_phys
581 scmpsw_clrsky(iblck)%visbm = scmpsw_clrsky(iblck)%visbm + flux_dir*0.5_kind_phys
582 scmpsw_clrsky(iblck)%visdf = scmpsw_clrsky(iblck)%visdf + flux_dif*0.5_kind_phys
585 if (iband > ibd)
then
586 scmpsw_clrsky(iblck)%visbm = scmpsw_clrsky(iblck)%visbm + flux_dir
587 scmpsw_clrsky(iblck)%visdf = scmpsw_clrsky(iblck)%visdf + flux_dif
590 scmpsw_clrsky(iblck)%uvbfc = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
594 fluxswup_clrsky(icols,:) = 0._kind_phys
595 fluxswdown_clrsky(icols,:) = 0._kind_phys
596 scmpsw =
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
604 if (cloudy_column)
then
609 call check_error_msg(
'rrtmgp_sw_main_increment_clouds_to_clrsky', &
610 sw_optical_props_clouds%increment(sw_optical_props_accum))
613 call check_error_msg(
'rrtmgp_sw_main_rte_sw_allsky',rte_sw( &
614 sw_optical_props_accum, &
616 real(coszen(icols), kind=rte_wp), &
623 fluxswup_allsky(icols,:) = sum(flux_allsky%bnd_flux_up, dim=3)
624 fluxswdown_allsky(icols,:) = sum(flux_allsky%bnd_flux_dn, dim=3)
627 do iblck = 1, rrtmgp_phys_blksz
629 do iband=1,sw_gas_props%get_nband()
630 flux_dir = flux_allsky%bnd_flux_dn_dir(iblck,isfc,iband)
631 flux_dif = flux_allsky%bnd_flux_dn(iblck,isfc,iband) - flux_allsky%bnd_flux_dn_dir(iblck,isfc,iband)
633 if (iband < ibd)
then
634 scmpsw_allsky(iblck)%nirbm = scmpsw_allsky(iblck)%nirbm + flux_dir
635 scmpsw_allsky(iblck)%nirdf = scmpsw_allsky(iblck)%nirdf + flux_dif
638 if (iband == ibd)
then
639 scmpsw_allsky(iblck)%nirbm = scmpsw_allsky(iblck)%nirbm + flux_dir*0.5_kind_phys
640 scmpsw_allsky(iblck)%nirdf = scmpsw_allsky(iblck)%nirdf + flux_dif*0.5_kind_phys
641 scmpsw_allsky(iblck)%visbm = scmpsw_allsky(iblck)%visbm + flux_dir*0.5_kind_phys
642 scmpsw_allsky(iblck)%visdf = scmpsw_allsky(iblck)%visdf + flux_dif*0.5_kind_phys
645 if (iband > ibd)
then
646 scmpsw_allsky(iblck)%visbm = scmpsw_allsky(iblck)%visbm + flux_dir
647 scmpsw_allsky(iblck)%visdf = scmpsw_allsky(iblck)%visdf + flux_dif
650 scmpsw_allsky(iblck)%uvbfc = flux_allsky%bnd_flux_dn(iblck,isfc,ibd_uv)
653 if (zcf1(iblck) .gt. eps)
then
654 scmpsw(icols(iblck))%nirbm = scmpsw_allsky(iblck)%nirbm
655 scmpsw(icols(iblck))%nirdf = scmpsw_allsky(iblck)%nirdf
656 scmpsw(icols(iblck))%visbm = scmpsw_allsky(iblck)%visbm
657 scmpsw(icols(iblck))%visdf = scmpsw_allsky(iblck)%visdf
658 scmpsw(icols(iblck))%uvbfc = flux_allsky%bnd_flux_dn(iblck,isfc,ibd_uv)
660 scmpsw(icols(iblck))%nirbm = scmpsw_clrsky(iblck)%nirbm
661 scmpsw(icols(iblck))%nirdf = scmpsw_clrsky(iblck)%nirdf
662 scmpsw(icols(iblck))%visbm = scmpsw_clrsky(iblck)%visbm
663 scmpsw(icols(iblck))%visdf = scmpsw_clrsky(iblck)%visdf
664 scmpsw(icols(iblck))%uvbfc = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
666 scmpsw(icols(iblck))%uvbf0 = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
669 fluxswup_allsky(icols,:) = sum(flux_clrsky%bnd_flux_up, dim=3)
670 fluxswdown_allsky(icols,:) = sum(flux_clrsky%bnd_flux_dn, dim=3)
671 do iblck = 1, rrtmgp_phys_blksz
672 scmpsw(icols(iblck))%nirbm = scmpsw_clrsky(iblck)%nirbm
673 scmpsw(icols(iblck))%nirdf = scmpsw_clrsky(iblck)%nirdf
674 scmpsw(icols(iblck))%visbm = scmpsw_clrsky(iblck)%visbm
675 scmpsw(icols(iblck))%visdf = scmpsw_clrsky(iblck)%visdf
676 scmpsw(icols(iblck))%uvbfc = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
677 scmpsw(icols(iblck))%uvbf0 = flux_clrsky%bnd_flux_dn(iblck,isfc,ibd_uv)
683 fluxswup_allsky(:,:) = 0._kind_phys
684 fluxswdown_allsky(:,:) = 0._kind_phys
685 fluxswup_clrsky(:,:) = 0._kind_phys
686 fluxswdown_clrsky(:,:) = 0._kind_phys
687 scmpsw =
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )