From 71b6a374f9ee1133576aa3f89a37f0e4248f5b70 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 4 Dec 2019 12:43:32 -0700 Subject: [PATCH] Change to diagnostic outputs for RRTMGP. --- physics/GFS_rrtmgp_sw_post.F90 | 60 +++++++++++++++++++--------------- physics/rrtmgp_sw_rte.F90 | 2 +- physics/rrtmgp_sw_rte.meta | 8 ++--- 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/physics/GFS_rrtmgp_sw_post.F90 b/physics/GFS_rrtmgp_sw_post.F90 index ab08087a6..e3f9d1810 100644 --- a/physics/GFS_rrtmgp_sw_post.F90 +++ b/physics/GFS_rrtmgp_sw_post.F90 @@ -143,18 +143,18 @@ subroutine GFS_rrtmgp_sw_post_run (Model, Interstitial, Grid, Diag, Radtend, Cou ! Compute SW heating-rates ! ####################################################################################### ! Initialize - hswc = 0 - Diag%topfsw = topfsw_type ( 0., 0., 0. ) - Radtend%sfcfsw = sfcfsw_type ( 0., 0., 0., 0. ) - if (l_clrskysw_hr) then - hsw0(:,:) = 0. - endif - if (l_fluxessw2D) then - flxprf_sw = profsw_type ( 0., 0., 0., 0. ) - endif - if (l_sfcfluxessw1D) then - scmpsw = cmpfsw_type (0.,0.,0.,0.,0.,0.) - endif +! hswc = 0 +! Diag%topfsw = topfsw_type ( 0., 0., 0. ) +! Radtend%sfcfsw = sfcfsw_type ( 0., 0., 0., 0. ) +! if (l_clrskysw_hr) then +! hsw0(:,:) = 0. +! endif +! if (l_fluxessw2D) then +! flxprf_sw = profsw_type ( 0., 0., 0., 0. ) +! endif +! if (l_sfcfluxessw1D) then +! scmpsw = cmpfsw_type (0.,0.,0.,0.,0.,0.) +! endif if (Model%lsswr .and. nDay .gt. 0) then ! Clear-sky heating-rate (optional) @@ -173,29 +173,35 @@ subroutine GFS_rrtmgp_sw_post_run (Model, Interstitial, Grid, Diag, Radtend, Cou p_lev(idxday,:), & thetaTendAllSky)) hswc(idxday,:) = thetaTendAllSky - + ! Copy fluxes from RRTGMP types into model radiation types. ! Mandatory outputs write(*,"(a11,2i8)") "iTOA/iSFC: ",iTOA,iSFC write(*,*) "fluxswDOWN_allsky: ",fluxswDOWN_allsky(idxday,:) - write(*,*) "fluxswDOWN_clrsky: ",fluxswDOWN_clrsky(idxday,:) - Diag%topfsw(idxday)%upfxc = fluxswUP_allsky(idxday,iTOA) - Diag%topfsw(idxday)%upfx0 = fluxswUP_clrsky(idxday,iTOA) - Diag%topfsw(idxday)%dnfxc = fluxswDOWN_allsky(idxday,iTOA) - Radtend%sfcfsw(idxday)%upfxc = fluxswUP_allsky(idxday,iSFC) - Radtend%sfcfsw(idxday)%upfx0 = fluxswUP_clrsky(idxday,iSFC) - Radtend%sfcfsw(idxday)%dnfxc = fluxswDOWN_allsky(idxday,iSFC) - Radtend%sfcfsw(idxday)%dnfx0 = fluxswDOWN_clrsky(idxday,iSFC) - + write(*,*) "fluxswDOWN_clrsky: ",fluxswDOWN_clrsky(:,:) + Diag%topfsw(:)%upfxc = fluxswUP_allsky(:,iTOA) + Diag%topfsw(:)%upfx0 = fluxswUP_clrsky(:,iTOA) + Diag%topfsw(:)%dnfxc = fluxswDOWN_allsky(:,iTOA) + Radtend%sfcfsw(:)%upfxc = fluxswUP_allsky(:,iSFC) + Radtend%sfcfsw(:)%upfx0 = fluxswUP_clrsky(:,iSFC) + Radtend%sfcfsw(:)%dnfxc = fluxswDOWN_allsky(:,iSFC) + Radtend%sfcfsw(:)%dnfx0 = fluxswDOWN_clrsky(:,iSFC) + !Diag%topfsw(idxday)%upfxc = fluxswUP_allsky(idxday,iTOA) + !Diag%topfsw(idxday)%upfx0 = fluxswUP_clrsky(idxday,iTOA) + !Diag%topfsw(idxday)%dnfxc = fluxswDOWN_allsky(idxday,iTOA) + !Radtend%sfcfsw(idxday)%upfxc = fluxswUP_allsky(idxday,iSFC) + !Radtend%sfcfsw(idxday)%upfx0 = fluxswUP_clrsky(idxday,iSFC) + !Radtend%sfcfsw(idxday)%dnfxc = fluxswDOWN_allsky(idxday,iSFC) + !Radtend%sfcfsw(idxday)%dnfx0 = fluxswDOWN_clrsky(idxday,iSFC) + ! Optional output if(l_fluxessw2D) then - flxprf_sw(idxday,:)%upfxc = fluxswUP_allsky(idxday,:) - flxprf_sw(idxday,:)%dnfxc = fluxswDOWN_allsky(idxday,:) - flxprf_sw(idxday,:)%upfx0 = fluxswUP_clrsky(idxday,:) - flxprf_sw(idxday,:)%dnfx0 = fluxswDOWN_clrsky(idxday,:) + flxprf_sw(:,:)%upfxc = fluxswUP_allsky(:,:) + flxprf_sw(:,:)%dnfxc = fluxswDOWN_allsky(:,:) + flxprf_sw(:,:)%upfx0 = fluxswUP_clrsky(:,:) + flxprf_sw(:,:)%dnfx0 = fluxswDOWN_clrsky(:,:) endif endif - ! ####################################################################################### ! Save SW outputs ! ####################################################################################### diff --git a/physics/rrtmgp_sw_rte.F90 b/physics/rrtmgp_sw_rte.F90 index e0950950f..bfa94a062 100644 --- a/physics/rrtmgp_sw_rte.F90 +++ b/physics/rrtmgp_sw_rte.F90 @@ -68,7 +68,7 @@ subroutine rrtmgp_sw_rte_run(Model, Interstitial, Radtend, Statein, ncol, sw_gas ! Outputs character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - real(kind_phys), dimension(ncol,Model%levs+1), intent(out) :: & + real(kind_phys), dimension(ncol,Model%levs+1), intent(inout) :: & fluxswUP_allsky, & ! All-sky flux (W/m2) fluxswDOWN_allsky, & ! All-sky flux (W/m2) fluxswUP_clrsky, & ! Clear-sky flux (W/m2) diff --git a/physics/rrtmgp_sw_rte.meta b/physics/rrtmgp_sw_rte.meta index c1c098400..197824495 100644 --- a/physics/rrtmgp_sw_rte.meta +++ b/physics/rrtmgp_sw_rte.meta @@ -165,7 +165,7 @@ dimensions = (horizontal_dimension,vertical_dimension_plus_one) type = real kind = kind_phys - intent = out + intent = inout optional = F [fluxswDOWN_allsky] standard_name = RRTMGP_sw_flux_profile_downward_allsky @@ -174,7 +174,7 @@ dimensions = (horizontal_dimension,vertical_dimension_plus_one) type = real kind = kind_phys - intent = out + intent = inout optional = F [fluxswUP_clrsky] standard_name = RRTMGP_sw_flux_profile_upward_clrsky @@ -183,7 +183,7 @@ dimensions = (horizontal_dimension,vertical_dimension_plus_one) type = real kind = kind_phys - intent = out + intent = inout optional = F [fluxswDOWN_clrsky] standard_name = RRTMGP_sw_flux_profile_downward_clrsky @@ -192,7 +192,7 @@ dimensions = (horizontal_dimension,vertical_dimension_plus_one) type = real kind = kind_phys - intent = out + intent = inout optional = F [errmsg] standard_name = ccpp_error_message