@@ -17,6 +17,7 @@ module GFS_radiation_post
1717 use module_radsw_parameters, only: topfsw_type, sfcfsw_type, cmpfsw_type
1818 use mo_heating_rates, only: compute_heating_rate
1919 use radiation_tools, only: check_error_msg
20+ use mo_rte_kind, only: rte_wp = > wp
2021 implicit none
2122
2223 public GFS_radiation_post_run
@@ -176,7 +177,8 @@ subroutine GFS_radiation_post_run(doLWrad, doSWrad, lssav, total_albedo, topfsw,
176177
177178 ! Local variables
178179 integer :: i
179- real (kind_phys), dimension (nDay, nLev) :: thetaTendClrSky, thetaTendAllSky
180+ real (rte_wp), dimension (nDay, nLev) :: thetaTendClrSkySW, thetaTendAllSkySW
181+ real (rte_wp), dimension (nCol, nLev) :: thetaTendClrSkyLW, thetaTendAllSkyLW
180182
181183 ! Initialize CCPP error handling variables
182184 errmsg = ' '
@@ -193,19 +195,21 @@ subroutine GFS_radiation_post_run(doLWrad, doSWrad, lssav, total_albedo, topfsw,
193195 ! Clear-sky heating-rate (optional)
194196 if (do_lw_clrsky_hr) then
195197 call check_error_msg(' GFS_radiation_post' ,compute_heating_rate( &
196- fluxlwUP_clrsky, & ! IN - RRTMGP upward longwave clear-sky flux profiles (W/m2)
197- fluxlwDOWN_clrsky, & ! IN - RRTMGP downward longwave clear-sky flux profiles (W/m2)
198- p_lev, & ! IN - Pressure @ layer-interfaces (Pa)
199- htrlwc)) ! OUT - Longwave clear-sky heating rate (K/sec)
198+ real (fluxlwUP_clrsky, kind= rte_wp), & ! IN - RRTMGP upward longwave clear-sky flux profiles (W/m2)
199+ real (fluxlwDOWN_clrsky, kind= rte_wp), & ! IN - RRTMGP downward longwave clear-sky flux profiles (W/m2)
200+ real (p_lev, kind= rte_wp), & ! IN - Pressure @ layer-interfaces (Pa)
201+ thetaTendClrSkyLW)) ! OUT - Longwave clear-sky heating rate (K/sec)
202+ htrlwc = thetaTendClrSkyLW
200203 endif
201204
202205 ! All-sky heating-rate (mandatory)
203206 call check_error_msg(' GFS_radiation_post' ,compute_heating_rate( &
204- fluxlwUP_allsky, & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2)
205- fluxlwDOWN_allsky, & ! IN - RRTMGP downward longwave all-sky flux profiles (W/m2)
206- p_lev, & ! IN - Pressure @ layer-interfaces (Pa)
207- htrlw)) ! OUT - Longwave all-sky heating rate (K/sec)
208-
207+ real (fluxlwUP_allsky, kind= rte_wp), & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2)
208+ real (fluxlwDOWN_allsky, kind= rte_wp), & ! IN - RRTMGP downward longwave all-sky flux profiles (W/m2)
209+ real (p_lev, kind= rte_wp), & ! IN - Pressure @ layer-interfaces (Pa)
210+ thetaTendAllSkyLW)) ! OUT - Longwave all-sky heating rate (K/sec)
211+ htrlw = thetaTendAllSkyLW
212+
209213 ! (Copy fluxes from RRTMGP types into model radiation types.)
210214 ! TOA fluxes
211215 topflw(:)% upfxc = fluxlwUP_allsky(:,iTOA)
@@ -239,21 +243,21 @@ subroutine GFS_radiation_post_run(doLWrad, doSWrad, lssav, total_albedo, topfsw,
239243 if (do_sw_clrsky_hr) then
240244 htrswc(:,:) = 0._kind_phys
241245 call check_error_msg(' GFS_radiation_post' ,compute_heating_rate( &
242- fluxswUP_clrsky(idxday(1 :nDay),:), & ! IN - Shortwave upward clear-sky flux profiles (W/m2)
243- fluxswDOWN_clrsky(idxday(1 :nDay),:), & ! IN - Shortwave downward clear-sky flux profiles (W/m2)
244- p_lev(idxday(1 :nDay),:), & ! IN - Pressure at model-interface (Pa)
245- thetaTendClrSky)) ! OUT - Clear-sky heating-rate (K/sec)
246- htrswc(idxday(1 :nDay),:)= thetaTendClrSky ! **NOTE** GP doesn't use radiation levels, it uses the model fields. Not sure if this is necessary
246+ real ( fluxswUP_clrsky(idxday(1 :nDay),:), kind = rte_wp ), & ! IN - Shortwave upward clear-sky flux profiles (W/m2)
247+ real ( fluxswDOWN_clrsky(idxday(1 :nDay),:), kind = rte_wp ), & ! IN - Shortwave downward clear-sky flux profiles (W/m2)
248+ real ( p_lev(idxday(1 :nDay),:), kind = rte_wp ), & ! IN - Pressure at model-interface (Pa)
249+ thetaTendClrSkySW)) ! OUT - Clear-sky heating-rate (K/sec)
250+ htrswc(idxday(1 :nDay),:)= thetaTendClrSkySW ! **NOTE** GP doesn't use radiation levels, it uses the model fields. Not sure if this is necessary
247251 endif
248252
249253 ! All-sky heating-rate (mandatory)
250254 htrsw(:,:) = 0._kind_phys
251255 call check_error_msg(' GFS_radiation_post' ,compute_heating_rate( &
252- fluxswUP_allsky(idxday(1 :nDay),:), & ! IN - Shortwave upward all-sky flux profiles (W/m2)
253- fluxswDOWN_allsky(idxday(1 :nDay),:), & ! IN - Shortwave downward all-sky flux profiles (W/m2)
254- p_lev(idxday(1 :nDay),:), & ! IN - Pressure at model-interface (Pa)
255- thetaTendAllSky)) ! OUT - All-sky heating-rate (K/sec)
256- htrsw(idxday(1 :nDay),:) = thetaTendAllSky
256+ real ( fluxswUP_allsky(idxday(1 :nDay),:), kind = rte_wp), & ! IN - Shortwave upward all-sky flux profiles (W/m2)
257+ real ( fluxswDOWN_allsky(idxday(1 :nDay),:), kind = rte_wp), & ! IN - Shortwave downward all-sky flux profiles (W/m2)
258+ real ( p_lev(idxday(1 :nDay),:), kind = rte_wp), & ! IN - Pressure at model-interface (Pa)
259+ thetaTendAllSkySW)) ! OUT - All-sky heating-rate (K/sec)
260+ htrsw(idxday(1 :nDay),:) = thetaTendAllSkySW
257261
258262 ! (Copy fluxes from RRTMGP types into model radiation types.)
259263
0 commit comments