@@ -82,7 +82,9 @@ module mpas_atmphys_driver_radiation_sw
8282! Laura D. Fowler (laura@ucar.edu) / 2017-02-10 .
8383! * since we removed the local variable radt_sw_scheme from mpas_atmphys_vars.F, now defines radt_sw_scheme
8484! as a pointer to config_radt_sw_scheme.
85- ! Laura D. Fowler (laura@ucar.edu) / 2917-02-16 .
85+ ! Laura D. Fowler (laura@ucar.edu) / 2017-02-16 .
86+ ! * added the variables swddir,swddni,swddif for use in the updated version of the Noah LSM.
87+ ! Laura D. Fowler (laura@ucar.edu) / 2023-04-21 .
8688
8789
8890 contains
@@ -145,6 +147,10 @@ subroutine allocate_radiation_sw(configs,xtime_s)
145147 if (.not. allocated(swnirdir_p) ) allocate(swnirdir_p(ims:ime,jms:jme) )
146148 if (.not. allocated(swnirdif_p) ) allocate(swnirdif_p(ims:ime,jms:jme) )
147149
150+ if (.not. allocated(swddir_p) ) allocate(swddir_p(ims:ime,jms:jme) )
151+ if (.not. allocated(swddni_p) ) allocate(swddni_p(ims:ime,jms:jme) )
152+ if (.not. allocated(swddif_p) ) allocate(swddif_p(ims:ime,jms:jme) )
153+
148154 if (.not. allocated(swdnflx_p) ) allocate(swdnflx_p(ims:ime,kms:kme+1 ,jms:jme) )
149155 if (.not. allocated(swdnflxc_p) ) allocate(swdnflxc_p(ims:ime,kms:kme+1 ,jms:jme) )
150156 if (.not. allocated(swupflx_p) ) allocate(swupflx_p(ims:ime,kms:kme+1 ,jms:jme) )
@@ -249,6 +255,14 @@ subroutine deallocate_radiation_sw(configs)
249255 if (allocated(alswvisdif_p) ) deallocate(alswvisdif_p )
250256 if (allocated(alswnirdir_p) ) deallocate(alswnirdir_p )
251257 if (allocated(alswnirdif_p) ) deallocate(alswnirdif_p )
258+ if (allocated(swvisdir_p) ) deallocate(swvisdir_p )
259+ if (allocated(swvisdif_p) ) deallocate(swvisdif_p )
260+ if (allocated(swnirdir_p) ) deallocate(swnirdir_p )
261+ if (allocated(swnirdif_p) ) deallocate(swnirdif_p )
262+
263+ if (allocated(swddir_p) ) deallocate(swddir_p )
264+ if (allocated(swddni_p) ) deallocate(swddni_p )
265+ if (allocated(swddif_p) ) deallocate(swddif_p )
252266
253267 if (allocated(swdnflx_p) ) deallocate(swdnflx_p )
254268 if (allocated(swdnflxc_p) ) deallocate(swdnflxc_p )
@@ -400,6 +414,9 @@ subroutine radiation_sw_from_MPAS(configs,mesh,state,time_lev,diag_physics,atm_i
400414 swupbc_p(i,j) = 0.0_RKIND
401415 swupt_p(i,j) = 0.0_RKIND
402416 swuptc_p(i,j) = 0.0_RKIND
417+ swddir_p(i,j) = 0.0_RKIND
418+ swddni_p(i,j) = 0.0_RKIND
419+ swddif_p(i,j) = 0.0_RKIND
403420 enddo
404421
405422 do k = kts,kte
@@ -589,10 +606,13 @@ subroutine radiation_sw_to_MPAS(diag_physics,tend_physics,its,ite)
589606
590607!local pointers:
591608 real (kind= RKIND),dimension (:),pointer :: coszr,gsw,swcf,swdnb,swdnbc,swdnt,swdntc, &
592- swupb,swupbc,swupt,swuptc
609+ swupb,swupbc,swupt,swuptc,swddir,swddni, &
610+ swddif
593611 real (kind= RKIND),dimension (:,:),pointer:: rthratensw
594612
595613!-----------------------------------------------------------------------------------------------------------------
614+ !call mpas_log_write(' ' )
615+ !call mpas_log_write(' --- enter subroutine radiation_sw_to_MPAS:' )
596616
597617 call mpas_pool_get_array(diag_physics,' coszr' ,coszr )
598618 call mpas_pool_get_array(diag_physics,' gsw' ,gsw )
@@ -602,9 +622,12 @@ subroutine radiation_sw_to_MPAS(diag_physics,tend_physics,its,ite)
602622 call mpas_pool_get_array(diag_physics,' swdnt' ,swdnt )
603623 call mpas_pool_get_array(diag_physics,' swdntc' ,swdntc )
604624 call mpas_pool_get_array(diag_physics,' swupb' ,swupb )
605- call mpas_pool_get_array(diag_physics,' swupbc' , swupbc )
625+ call mpas_pool_get_array(diag_physics,' swupbc' ,swupbc )
606626 call mpas_pool_get_array(diag_physics,' swupt' ,swupt )
607627 call mpas_pool_get_array(diag_physics,' swuptc' ,swuptc )
628+ call mpas_pool_get_array(diag_physics,' swddir' ,swddir )
629+ call mpas_pool_get_array(diag_physics,' swddni' ,swddni )
630+ call mpas_pool_get_array(diag_physics,' swddif' ,swddif )
608631 call mpas_pool_get_array(tend_physics,' rthratensw' ,rthratensw)
609632
610633 do j = jts,jte
@@ -621,6 +644,9 @@ subroutine radiation_sw_to_MPAS(diag_physics,tend_physics,its,ite)
621644 swupbc(i) = swupbc_p(i,j)
622645 swupt(i) = swupt_p(i,j)
623646 swuptc(i) = swuptc_p(i,j)
647+ swddir(i) = swddir_p(i,j)
648+ swddni(i) = swddni_p(i,j)
649+ swddif(i) = swddif_p(i,j)
624650 enddo
625651
626652 do k = kts,kte
@@ -631,6 +657,9 @@ subroutine radiation_sw_to_MPAS(diag_physics,tend_physics,its,ite)
631657
632658 enddo
633659
660+ !call mpas_log_write(' --- enter subroutine radiation_sw_to_MPAS:' )
661+ !call mpas_log_write(' ' )
662+
634663 end subroutine radiation_sw_to_MPAS
635664
636665!=================================================================================================================
@@ -760,6 +789,7 @@ subroutine driver_radiation_sw(itimestep,configs,mesh,state,time_lev,diag_physic
760789 re_snow = resnow_p , swupt = swupt_p , swuptc = swuptc_p , &
761790 swdnt = swdnt_p , swdntc = swdntc_p , swupb = swupb_p , &
762791 swupbc = swupbc_p , swdnb = swdnb_p , swdnbc = swdnbc_p , &
792+ swddir = swddir_p , swddni = swddni_p , swddif = swddif_p , &
763793 ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , &
764794 ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , &
765795 its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte &
0 commit comments