SCALE-RM
Functions/Subroutines
mod_atmos_phy_rd_driver Module Reference

module ATMOSPHERE / Physics Radiation More...

Functions/Subroutines

subroutine, public atmos_phy_rd_driver_setup
 Setup. More...
 
subroutine, public atmos_phy_rd_driver_calc_tendency (update_flag)
 Driver. More...
 

Detailed Description

module ATMOSPHERE / Physics Radiation

Description
Atmospheric radiation transfer process driver
Author
Team SCALE
NAMELIST
  • No namelist group
History Output
namedescriptionunitvariable
COSZ cos(solar zenith angle) 1 cosSZA
OLR outgoing longwave radiation flux W/m2 TOAFLX_LW_up
OSR outgoing shortwave radiation flux W/m2 TOAFLX_SW_up
RADFLUX_LW net longwave radiation flux W/m2 flux_net
RADFLUX_LWDN downward longwave radiation flux W/m2 flux_dn
RADFLUX_LWUP upward longwave radiation flux W/m2 flux_up
RADFLUX_SW net shortwave radiation flux W/m2 flux_net
RADFLUX_SWDN downward shortwave radiation flux W/m2 flux_dn
RADFLUX_SWUP upward shortwave radiation flux W/m2 flux_up
RFLX_LW_dn downward longwave radiation flux (cell face) W/m2 flux_rad
RFLX_LW_up upward longwave radiation flux (cell face) W/m2 flux_rad
RFLX_SW_dn downward shortwave radiation flux (cell face) W/m2 flux_rad
RFLX_SW_up upward shortwave radiation flux (cell face) W/m2 flux_rad
RHOH_RD diabatic heating rate in rd J/m3/s RHOH_RD
SFLX_IR_dn_dif SFC downward radiation flux (diffuse; IR) W/m2 SFLX_rad_dn
SFLX_IR_dn_dir SFC downward radiation flux (direct; IR) W/m2 SFLX_rad_dn
SFLX_LW_dn SFC downward longwave radiation flux W/m2 SFCFLX_LW_dn
SFLX_LW_dn_c SFC downward longwave radiation flux (clr) W/m2 SFCFLX_LW_dn_c
SFLX_LW_net SFC net longwave radiation flux W/m2 flux_net_sfc
SFLX_LW_up SFC upward longwave radiation flux W/m2 SFCFLX_LW_up
SFLX_LW_up_c SFC upward longwave radiation flux (clr) W/m2 SFCFLX_LW_up_c
SFLX_NIR_dn_dif SFC downward radiation flux (diffuse; NIR) W/m2 SFLX_rad_dn
SFLX_NIR_dn_dir SFC downward radiation flux (direct; NIR) W/m2 SFLX_rad_dn
SFLX_SW_dn SFC downward shortwave radiation flux W/m2 SFCFLX_SW_dn
SFLX_SW_dn_c SFC downward shortwave radiation flux (clr) W/m2 SFCFLX_SW_dn_c
SFLX_SW_net SFC net shortwave radiation flux W/m2 flux_net_sfc
SFLX_SW_up SFC upward shortwave radiation flux W/m2 SFCFLX_SW_up
SFLX_SW_up_c SFC upward shortwave radiation flux (clr) W/m2 SFCFLX_SW_up_c
SFLX_VIS_dn_dif SFC downward radiation flux (diffuse; VIS) W/m2 SFLX_rad_dn
SFLX_VIS_dn_dir SFC downward radiation flux (direct; VIS) W/m2 SFLX_rad_dn
SLR SFC net longwave radiation flux W/m2 flux_net_sfc
SOLINS solar insolation W/m2 solins
SSR SFC net shortwave radiation flux W/m2 flux_net_sfc
TEMP_t_rd tendency of temp in rd K/day TEMP_t
TEMP_t_rd_LW tendency of temp in rd(LW) K/day TEMP_t
TEMP_t_rd_SW tendency of temp in rd(SW) K/day TEMP_t
TOAFLX_LW_dn TOA downward longwave radiation flux W/m2 TOAFLX_LW_dn
TOAFLX_LW_dn_c TOA downward longwave radiation flux (clr) W/m2 TOAFLX_LW_dn_c
TOAFLX_LW_net TOA net longwave radiation flux W/m2 flux_net_toa
TOAFLX_LW_up TOA upward longwave radiation flux W/m2 TOAFLX_LW_up
TOAFLX_LW_up_c TOA upward longwave radiation flux (clr) W/m2 TOAFLX_LW_up_c
TOAFLX_SW_dn TOA downward shortwave radiation flux W/m2 TOAFLX_SW_dn
TOAFLX_SW_dn_c TOA downward shortwave radiation flux (clr) W/m2 TOAFLX_SW_dn_c
TOAFLX_SW_net TOA net shortwave radiation flux W/m2 flux_net_toa
TOAFLX_SW_up TOA upward shortwave radiation flux W/m2 TOAFLX_SW_up
TOAFLX_SW_up_c TOA upward shortwave radiation flux (clr) W/m2 TOAFLX_SW_up_c
dem_s 10.5 micron cloud emissivity 1 dem_s
dtau_s 0.67 micron cloud optical depth 1 dtau_s

Function/Subroutine Documentation

◆ atmos_phy_rd_driver_setup()

subroutine, public mod_atmos_phy_rd_driver::atmos_phy_rd_driver_setup ( )

Setup.

Definition at line 50 of file mod_atmos_phy_rd_driver.F90.

References scale_atmos_grid_cartesc::atmos_grid_cartesc_cz, scale_atmos_grid_cartesc::atmos_grid_cartesc_fz, mod_atmos_phy_rd_vars::atmos_phy_rd_cossza, scale_atmos_phy_rd_mstrnx::atmos_phy_rd_mstrnx_setup(), scale_atmos_phy_rd_offline::atmos_phy_rd_offline_setup(), mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_down, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_lw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_lw_up, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_sw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_sw_up, mod_atmos_phy_rd_vars::atmos_phy_rd_solins, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_lw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_lw_up, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_sw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_sw_up, mod_atmos_admin::atmos_phy_rd_type, mod_atmos_admin::atmos_sw_phy_rd, scale_atmos_grid_cartesc_index::ka, scale_atmos_grid_cartesc_index::ke, scale_atmos_grid_cartesc_index::ks, and scale_prc::prc_abort().

Referenced by mod_atmos_driver::atmos_driver_setup().

50  use scale_prc, only: &
51  prc_abort
52  use scale_atmos_phy_rd_mstrnx, only: &
54  use scale_atmos_phy_rd_offline, only: &
56  use scale_atmos_grid_cartesc, only: &
57  cz => atmos_grid_cartesc_cz, &
59  use mod_atmos_admin, only: &
62  use mod_atmos_phy_rd_vars, only: &
63  sfcflx_lw_up => atmos_phy_rd_sflx_lw_up, &
64  sfcflx_lw_dn => atmos_phy_rd_sflx_lw_dn, &
65  sfcflx_sw_up => atmos_phy_rd_sflx_sw_up, &
66  sfcflx_sw_dn => atmos_phy_rd_sflx_sw_dn, &
67  toaflx_lw_up => atmos_phy_rd_toaflx_lw_up, &
68  toaflx_lw_dn => atmos_phy_rd_toaflx_lw_dn, &
69  toaflx_sw_up => atmos_phy_rd_toaflx_sw_up, &
70  toaflx_sw_dn => atmos_phy_rd_toaflx_sw_dn, &
71  sflx_rad_dn => atmos_phy_rd_sflx_down, &
72  solins => atmos_phy_rd_solins, &
73  cossza => atmos_phy_rd_cossza
74  implicit none
75  !---------------------------------------------------------------------------
76 
77  log_newline
78  log_info("ATMOS_PHY_RD_driver_setup",*) 'Setup'
79 
80  if ( atmos_sw_phy_rd ) then
81 
82  select case ( atmos_phy_rd_type )
83  case ( "MSTRNX" )
84  call atmos_phy_rd_mstrnx_setup( ka, ks, ke, cz(:), fz(:) )
85  case ( "OFFLINE" )
87  case default
88  log_error("ATMOS_PHY_RD_driver_setup",*) 'invalid Radiation type(', trim(atmos_phy_rd_type), '). CHECK!'
89  call prc_abort
90  end select
91 
92  else
93 
94  log_info("ATMOS_PHY_RD_driver_setup",*) 'this component is never called.'
95  log_info("ATMOS_PHY_RD_driver_setup",*) 'radiation fluxes are set to zero.'
96  sfcflx_lw_up(:,:) = 0.0_rp
97  sfcflx_lw_dn(:,:) = 0.0_rp
98  sfcflx_sw_up(:,:) = 0.0_rp
99  sfcflx_sw_dn(:,:) = 0.0_rp
100  toaflx_lw_up(:,:) = 0.0_rp
101  toaflx_lw_dn(:,:) = 0.0_rp
102  toaflx_sw_up(:,:) = 0.0_rp
103  toaflx_sw_dn(:,:) = 0.0_rp
104  sflx_rad_dn(:,:,:,:) = 0.0_rp
105  solins(:,:) = 0.0_rp
106  cossza(:,:) = 0.0_rp
107 
108  endif
109 
110  return
module ATMOS admin
module atmosphere / physics / radiation / mstrnX
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_rd_sflx_down
logical, public atmos_sw_phy_rd
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fz
face coordinate [m]: z, local
character(len=h_short), public atmos_phy_rd_type
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_up
subroutine, public atmos_phy_rd_mstrnx_setup(KA, KS, KE, CZ, FZ)
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_up
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_dn
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_cossza
module Atmosphere / Physics Radiation
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_up
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
module PROCESS
Definition: scale_prc.F90:11
module atmosphere / physics / radiation / offline
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_dn
module atmosphere / grid / cartesC
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:338
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_dn
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_solins
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cz
center coordinate [m]: z, local
subroutine, public atmos_phy_rd_offline_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_up
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_rd_driver_calc_tendency()

subroutine, public mod_atmos_phy_rd_driver::atmos_phy_rd_driver_calc_tendency ( logical, intent(in)  update_flag)

Driver.

Definition at line 116 of file mod_atmos_phy_rd_driver.F90.

References scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_cz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_fz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_lat, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_lon, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_totvol, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_vol, mod_atmos_phy_ae_vars::atmos_phy_ae_vars_get_diagnostic(), mod_atmos_phy_mp_vars::atmos_phy_mp_vars_get_diagnostic(), scale_atmos_phy_rd_common::atmos_phy_rd_calc_heating(), mod_atmos_phy_rd_vars::atmos_phy_rd_cossza, scale_atmos_phy_rd_mstrnx::atmos_phy_rd_mstrnx_flux(), scale_atmos_phy_rd_offline::atmos_phy_rd_offline_flux(), mod_atmos_phy_rd_vars::atmos_phy_rd_rhoh, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_down, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_lw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_lw_up, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_sw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_sw_up, mod_atmos_phy_rd_vars::atmos_phy_rd_solins, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_lw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_lw_up, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_sw_dn, mod_atmos_phy_rd_vars::atmos_phy_rd_toaflx_sw_up, mod_atmos_admin::atmos_phy_rd_type, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_albedo, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_temp, mod_atmos_vars::cvtot, mod_atmos_vars::dens, mod_atmos_vars::dens_av, scale_atmos_phy_rd_common::i_dn, scale_atmos_phy_rd_common::i_lw, scale_cpl_sfc_index::i_r_diffuse, scale_cpl_sfc_index::i_r_direct, scale_cpl_sfc_index::i_r_ir, scale_cpl_sfc_index::i_r_nir, scale_cpl_sfc_index::i_r_vis, scale_atmos_phy_rd_common::i_sw, scale_atmos_phy_rd_common::i_up, scale_atmos_grid_cartesc_index::ia, scale_atmos_grid_cartesc_index::ie, scale_atmos_grid_cartesc_index::is, scale_atmos_grid_cartesc_index::ja, scale_atmos_grid_cartesc_index::je, scale_atmos_grid_cartesc_index::js, scale_atmos_grid_cartesc_index::ka, scale_atmos_grid_cartesc_index::ke, scale_atmos_grid_cartesc_index::ks, scale_landuse::landuse_fact_land, scale_landuse::landuse_fact_ocean, scale_landuse::landuse_fact_urban, scale_atmos_aerosol::n_ae, scale_atmos_hydrometeor::n_hyd, mod_atmos_vars::pres, mod_atmos_vars::qtrc, mod_atmos_vars::qtrc_av, mod_atmos_vars::qv, mod_atmos_vars::rhoh_p, scale_statistics::statistics_checktotal, mod_atmos_vars::temp, scale_time::time_nowdate, scale_time::time_nowdaysec, and scale_time::time_offset_year.

Referenced by mod_atmos_driver::atmos_driver_calc_tendency().

116  use scale_atmos_grid_cartesc_real, only: &
117  real_cz => atmos_grid_cartesc_real_cz, &
118  real_fz => atmos_grid_cartesc_real_fz, &
119  real_lon => atmos_grid_cartesc_real_lon, &
120  real_lat => atmos_grid_cartesc_real_lat, &
123  use scale_landuse, only: &
124  fact_ocean => landuse_fact_ocean, &
125  fact_land => landuse_fact_land, &
126  fact_urban => landuse_fact_urban
127  use scale_time, only: &
128  time_nowdate, &
129  time_nowdaysec, &
131  use scale_statistics, only: &
133  statistics_total
134  use scale_file_history, only: &
135  file_history_in
136  use scale_atmos_hydrometeor, only: &
137  n_hyd
138  use scale_atmos_aerosol, only: &
139  n_ae
140  use mod_atmos_admin, only: &
142  use scale_atmos_solarins, only: &
143  solarins_insolation => atmos_solarins_insolation
144  use scale_atmos_phy_rd_mstrnx, only: &
146  use scale_atmos_phy_rd_offline, only: &
148  use scale_atmos_phy_rd_common, only: &
150  i_sw, &
151  i_lw, &
152  i_dn, &
153  i_up
154  use mod_atmos_vars, only: &
155  temp, &
156  pres, &
157  qv, &
158  cvtot, &
159  dens => dens_av, &
160  qtrc => qtrc_av, &
161  rhoh => rhoh_p
162  use mod_atmos_phy_sf_vars, only: &
163  sfc_temp => atmos_phy_sf_sfc_temp, &
164  sfc_albedo => atmos_phy_sf_sfc_albedo
165  use mod_atmos_phy_rd_vars, only: &
166  rhoh_rd => atmos_phy_rd_rhoh, &
167  sfcflx_lw_up => atmos_phy_rd_sflx_lw_up, &
168  sfcflx_lw_dn => atmos_phy_rd_sflx_lw_dn, &
169  sfcflx_sw_up => atmos_phy_rd_sflx_sw_up, &
170  sfcflx_sw_dn => atmos_phy_rd_sflx_sw_dn, &
171  toaflx_lw_up => atmos_phy_rd_toaflx_lw_up, &
172  toaflx_lw_dn => atmos_phy_rd_toaflx_lw_dn, &
173  toaflx_sw_up => atmos_phy_rd_toaflx_sw_up, &
174  toaflx_sw_dn => atmos_phy_rd_toaflx_sw_dn, &
175  sflx_rad_dn => atmos_phy_rd_sflx_down, &
176  solins => atmos_phy_rd_solins, &
177  cossza => atmos_phy_rd_cossza
178  use mod_atmos_vars, only: &
179  atmos_vars_get_diagnostic
180  use mod_atmos_phy_mp_vars, only: &
182  use mod_atmos_phy_ae_vars, only: &
184  implicit none
185 
186  logical, intent(in) :: update_flag
187 
188  real(RP) :: temp_t (ka,ia,ja,3)
189  real(RP) :: flux_rad (ka,ia,ja,2,2,2)
190  real(RP) :: flux_rad_top( ia,ja,2,2,2)
191 
192  real(RP) :: dtau_s (ka,ia,ja) ! 0.67 micron cloud optical depth
193  real(RP) :: dem_s (ka,ia,ja) ! 10.5 micron cloud emissivity
194 
195  real(RP) :: flux_up (ka,ia,ja,2)
196  real(RP) :: flux_dn (ka,ia,ja,2)
197  real(RP) :: flux_net (ka,ia,ja,2)
198  real(RP) :: flux_net_toa( ia,ja,2)
199  real(RP) :: flux_net_sfc( ia,ja,2)
200 
201  real(RP) :: sfcflx_lw_up_c(ia,ja)
202  real(RP) :: sfcflx_lw_dn_c(ia,ja)
203  real(RP) :: sfcflx_sw_up_c(ia,ja)
204  real(RP) :: sfcflx_sw_dn_c(ia,ja)
205  real(RP) :: toaflx_lw_up_c(ia,ja)
206  real(RP) :: toaflx_lw_dn_c(ia,ja)
207  real(RP) :: toaflx_sw_up_c(ia,ja)
208  real(RP) :: toaflx_sw_dn_c(ia,ja)
209 
210  real(RP) :: cldfrac(ka,ia,ja)
211  real(RP) :: mp_re (ka,ia,ja,n_hyd)
212  real(RP) :: mp_qe (ka,ia,ja,n_hyd)
213  real(RP) :: ae_re (ka,ia,ja,n_ae)
214  real(RP) :: ae_qe (ka,ia,ja,n_ae)
215 
216  real(RP) :: rh(ka,ia,ja)
217 
218  integer :: k, i, j
219  !---------------------------------------------------------------------------
220 
221  if ( update_flag ) then
222 
223  call solarins_insolation( ia, is, ie, ja, js, je, &
224  real_lon(:,:), real_lat(:,:), & ! [IN]
225  time_nowdate(:), time_offset_year, & ! [IN]
226  solins(:,:), cossza(:,:) ) ! [OUT]
227 
229  dens(:,:,:), temp(:,:,:), qtrc(:,:,:,:), & ! [IN]
230  cldfrac=cldfrac, re=mp_re, qe=mp_qe ) ! [IN]
231 
232  call atmos_vars_get_diagnostic( "RH", rh )
234  qtrc(:,:,:,:), rh(:,:,:), & ! [IN]
235  re=ae_re ) ! [IN]
236 ! Re=AE_Re, Qe=AE_Qe ) ! [IN]
237 
238 
239  select case ( atmos_phy_rd_type )
240  case ( "MSTRNX" )
241 
243  ka, ks, ke, ia, is, ie, ja, js, je, &
244  dens(:,:,:), temp(:,:,:), pres(:,:,:), qv(:,:,:), & ! [IN]
245  real_cz(:,:,:), real_fz(:,:,:), & ! [IN]
246  fact_ocean(:,:), fact_land(:,:), fact_urban(:,:), & ! [IN]
247  sfc_temp(:,:), sfc_albedo(:,:,:,:), & ! [IN]
248  solins(:,:), cossza(:,:), & ! [IN]
249  cldfrac(:,:,:), mp_re(:,:,:,:), mp_qe(:,:,:,:), & ! [IN]
250  ae_re(:,:,:,:), & ! [IN]
251 ! AE_Re(:,:,:,:), AE_Qe(:,:,:,:), & ! [IN]
252  flux_rad(:,:,:,:,:,:), & ! [OUT]
253  flux_rad_top(:,:,:,:,:), sflx_rad_dn(:,:,:,:), & ! [OUT]
254  dtau_s = dtau_s(:,:,:), dem_s = dem_s(:,:,:) ) ! [OUT]
255 
256  case ( "OFFLINE" )
257 
259  ka, ks, ke, ia, is, ie, ja, js, je, &
260  time_nowdaysec, & ! [IN]
261  flux_rad(:,:,:,:,:,2), & ! [OUT]
262  sflx_rad_dn(:,:,:,:) ) ! [OUT]
263  flux_rad(:,:,:,:,:,1) = 0.0_rp ! clear sky
264  flux_rad_top(:,:,:,:,:) = 0.0_rp
265  dtau_s(:,:,:) = 0.0_rp
266  dem_s(:,:,:) = 0.0_rp
267 
268  end select
269 
270 
271 !OCL XFILL
272  do j = js, je
273  do i = is, ie
274  ! for clear-sky
275  sfcflx_lw_up_c(i,j) = flux_rad(ks-1,i,j,i_lw,i_up,1)
276  sfcflx_lw_dn_c(i,j) = flux_rad(ks-1,i,j,i_lw,i_dn,1)
277  sfcflx_sw_up_c(i,j) = flux_rad(ks-1,i,j,i_sw,i_up,1)
278  sfcflx_sw_dn_c(i,j) = flux_rad(ks-1,i,j,i_sw,i_dn,1)
279  ! for all-sky
280  sfcflx_lw_up(i,j) = flux_rad(ks-1,i,j,i_lw,i_up,2)
281  sfcflx_lw_dn(i,j) = flux_rad(ks-1,i,j,i_lw,i_dn,2)
282  sfcflx_sw_up(i,j) = flux_rad(ks-1,i,j,i_sw,i_up,2)
283  sfcflx_sw_dn(i,j) = flux_rad(ks-1,i,j,i_sw,i_dn,2)
284 
285  flux_net_sfc(i,j,i_lw) = sfcflx_lw_up(i,j) - sfcflx_lw_dn(i,j)
286  flux_net_sfc(i,j,i_sw) = sfcflx_sw_up(i,j) - sfcflx_sw_dn(i,j)
287  enddo
288  enddo
289 
290 !OCL XFILL
291  do j = js, je
292  do i = is, ie
293  ! for clear-sky
294  toaflx_lw_up_c(i,j) = flux_rad_top(i,j,i_lw,i_up,1)
295  toaflx_lw_dn_c(i,j) = flux_rad_top(i,j,i_lw,i_dn,1)
296  toaflx_sw_up_c(i,j) = flux_rad_top(i,j,i_sw,i_up,1)
297  toaflx_sw_dn_c(i,j) = flux_rad_top(i,j,i_sw,i_dn,1)
298  ! for all-sky
299  toaflx_lw_up(i,j) = flux_rad_top(i,j,i_lw,i_up,2)
300  toaflx_lw_dn(i,j) = flux_rad_top(i,j,i_lw,i_dn,2)
301  toaflx_sw_up(i,j) = flux_rad_top(i,j,i_sw,i_up,2)
302  toaflx_sw_dn(i,j) = flux_rad_top(i,j,i_sw,i_dn,2)
303 
304  flux_net_toa(i,j,i_lw) = toaflx_lw_up(i,j) - toaflx_lw_dn(i,j)
305  flux_net_toa(i,j,i_sw) = toaflx_sw_up(i,j) - toaflx_sw_dn(i,j)
306  enddo
307  enddo
308 
309 !OCL XFILL
310  do j = js, je
311  do i = is, ie
312  do k = ks, ke
313  flux_up(k,i,j,i_lw) = 0.5_rp * ( flux_rad(k-1,i,j,i_lw,i_up,2) + flux_rad(k,i,j,i_lw,i_up,2) )
314  flux_dn(k,i,j,i_lw) = 0.5_rp * ( flux_rad(k-1,i,j,i_lw,i_dn,2) + flux_rad(k,i,j,i_lw,i_dn,2) )
315  flux_up(k,i,j,i_sw) = 0.5_rp * ( flux_rad(k-1,i,j,i_sw,i_up,2) + flux_rad(k,i,j,i_sw,i_up,2) )
316  flux_dn(k,i,j,i_sw) = 0.5_rp * ( flux_rad(k-1,i,j,i_sw,i_dn,2) + flux_rad(k,i,j,i_sw,i_dn,2) )
317 
318  flux_net(k,i,j,i_lw) = flux_up(k,i,j,i_lw) - flux_dn(k,i,j,i_lw)
319  flux_net(k,i,j,i_sw) = flux_up(k,i,j,i_sw) - flux_dn(k,i,j,i_sw)
320  enddo
321  enddo
322  enddo
323 
324  ! apply radiative flux convergence -> heating rate
326  ka, ks, ke, ia, is, ie, ja, js, je, &
327  flux_rad(:,:,:,:,:,2), & ! [IN]
328  dens(:,:,:), temp(:,:,:), & ! [IN]
329  cvtot(:,:,:), & ! [IN]
330  real_fz(:,:,:), & ! [IN]
331  rhoh_rd(:,:,:), & ! [OUT]
332  temp_t = temp_t(:,:,:,:) ) ! [OUT]
333 
334 
335 
336  call file_history_in( solins(:,:), 'SOLINS', 'solar insolation', 'W/m2', fill_halo=.true. )
337  call file_history_in( cossza(:,:), 'COSZ', 'cos(solar zenith angle)', '1', fill_halo=.true. )
338 
339  call file_history_in( sfcflx_lw_up_c(:,:), 'SFLX_LW_up_c', 'SFC upward longwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
340  call file_history_in( sfcflx_lw_dn_c(:,:), 'SFLX_LW_dn_c', 'SFC downward longwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
341  call file_history_in( sfcflx_sw_up_c(:,:), 'SFLX_SW_up_c', 'SFC upward shortwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
342  call file_history_in( sfcflx_sw_dn_c(:,:), 'SFLX_SW_dn_c', 'SFC downward shortwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
343 
344  call file_history_in( sfcflx_lw_up(:,:), 'SFLX_LW_up', 'SFC upward longwave radiation flux', 'W/m2', fill_halo=.true. )
345  call file_history_in( sfcflx_lw_dn(:,:), 'SFLX_LW_dn', 'SFC downward longwave radiation flux', 'W/m2', fill_halo=.true. )
346  call file_history_in( sfcflx_sw_up(:,:), 'SFLX_SW_up', 'SFC upward shortwave radiation flux', 'W/m2', fill_halo=.true. )
347  call file_history_in( sfcflx_sw_dn(:,:), 'SFLX_SW_dn', 'SFC downward shortwave radiation flux', 'W/m2', fill_halo=.true. )
348 
349  call file_history_in( flux_net_sfc(:,:,i_lw), 'SFLX_LW_net', 'SFC net longwave radiation flux', 'W/m2', fill_halo=.true. )
350  call file_history_in( flux_net_sfc(:,:,i_sw), 'SFLX_SW_net', 'SFC net shortwave radiation flux', 'W/m2', fill_halo=.true. )
351 
352  call file_history_in( toaflx_lw_up_c(:,:), 'TOAFLX_LW_up_c', 'TOA upward longwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
353  call file_history_in( toaflx_lw_dn_c(:,:), 'TOAFLX_LW_dn_c', 'TOA downward longwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
354  call file_history_in( toaflx_sw_up_c(:,:), 'TOAFLX_SW_up_c', 'TOA upward shortwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
355  call file_history_in( toaflx_sw_dn_c(:,:), 'TOAFLX_SW_dn_c', 'TOA downward shortwave radiation flux (clr)', 'W/m2', fill_halo=.true. )
356 
357  call file_history_in( toaflx_lw_up(:,:), 'TOAFLX_LW_up', 'TOA upward longwave radiation flux', 'W/m2', fill_halo=.true. )
358  call file_history_in( toaflx_lw_dn(:,:), 'TOAFLX_LW_dn', 'TOA downward longwave radiation flux', 'W/m2', fill_halo=.true. )
359  call file_history_in( toaflx_sw_up(:,:), 'TOAFLX_SW_up', 'TOA upward shortwave radiation flux', 'W/m2', fill_halo=.true. )
360  call file_history_in( toaflx_sw_dn(:,:), 'TOAFLX_SW_dn', 'TOA downward shortwave radiation flux', 'W/m2', fill_halo=.true. )
361 
362  call file_history_in( flux_net_toa(:,:,i_lw), 'TOAFLX_LW_net', 'TOA net longwave radiation flux', 'W/m2', fill_halo=.true. )
363  call file_history_in( flux_net_toa(:,:,i_sw), 'TOAFLX_SW_net', 'TOA net shortwave radiation flux', 'W/m2', fill_halo=.true. )
364 
365  call file_history_in( flux_net_sfc(:,:,i_lw), 'SLR', 'SFC net longwave radiation flux', 'W/m2', fill_halo=.true. )
366  call file_history_in( flux_net_sfc(:,:,i_sw), 'SSR', 'SFC net shortwave radiation flux', 'W/m2', fill_halo=.true. )
367  call file_history_in( toaflx_lw_up(:,:), 'OLR', 'outgoing longwave radiation flux', 'W/m2', fill_halo=.true. )
368  call file_history_in( toaflx_sw_up(:,:), 'OSR', 'outgoing shortwave radiation flux', 'W/m2', fill_halo=.true. )
369 
370  call file_history_in( flux_up(:,:,:,i_lw), 'RADFLUX_LWUP', 'upward longwave radiation flux', 'W/m2', fill_halo=.true. )
371  call file_history_in( flux_dn(:,:,:,i_lw), 'RADFLUX_LWDN', 'downward longwave radiation flux', 'W/m2', fill_halo=.true. )
372  call file_history_in( flux_net(:,:,:,i_lw), 'RADFLUX_LW', 'net longwave radiation flux', 'W/m2', fill_halo=.true. )
373  call file_history_in( flux_up(:,:,:,i_sw), 'RADFLUX_SWUP', 'upward shortwave radiation flux', 'W/m2', fill_halo=.true. )
374  call file_history_in( flux_dn(:,:,:,i_sw), 'RADFLUX_SWDN', 'downward shortwave radiation flux', 'W/m2', fill_halo=.true. )
375  call file_history_in( flux_net(:,:,:,i_sw), 'RADFLUX_SW', 'net shortwave radiation flux', 'W/m2', fill_halo=.true. )
376 
377  call file_history_in( sflx_rad_dn(:,:,i_r_direct ,i_r_ir ), 'SFLX_IR_dn_dir', 'SFC downward radiation flux (direct; IR)', 'W/m2', fill_halo=.true. )
378  call file_history_in( sflx_rad_dn(:,:,i_r_diffuse,i_r_ir ), 'SFLX_IR_dn_dif', 'SFC downward radiation flux (diffuse; IR)', 'W/m2', fill_halo=.true. )
379  call file_history_in( sflx_rad_dn(:,:,i_r_direct ,i_r_nir), 'SFLX_NIR_dn_dir', 'SFC downward radiation flux (direct; NIR)', 'W/m2', fill_halo=.true. )
380  call file_history_in( sflx_rad_dn(:,:,i_r_diffuse,i_r_nir), 'SFLX_NIR_dn_dif', 'SFC downward radiation flux (diffuse; NIR)', 'W/m2', fill_halo=.true. )
381  call file_history_in( sflx_rad_dn(:,:,i_r_direct ,i_r_vis), 'SFLX_VIS_dn_dir', 'SFC downward radiation flux (direct; VIS)', 'W/m2', fill_halo=.true. )
382  call file_history_in( sflx_rad_dn(:,:,i_r_diffuse,i_r_vis), 'SFLX_VIS_dn_dif', 'SFC downward radiation flux (diffuse; VIS)', 'W/m2', fill_halo=.true. )
383 
384  call file_history_in( temp_t(:,:,:,i_lw), 'TEMP_t_rd_LW', 'tendency of temp in rd(LW)', 'K/day', fill_halo=.true. )
385  call file_history_in( temp_t(:,:,:,i_sw), 'TEMP_t_rd_SW', 'tendency of temp in rd(SW)', 'K/day', fill_halo=.true. )
386  call file_history_in( temp_t(:,:,:,3 ), 'TEMP_t_rd', 'tendency of temp in rd', 'K/day', fill_halo=.true. )
387  call file_history_in( rhoh_rd(:,:,:), 'RHOH_RD', 'diabatic heating rate in rd', 'J/m3/s', fill_halo=.true. )
388 
389  ! output of raw data, for offline output
390  call file_history_in( flux_rad(:,:,:,i_lw,i_up,2), 'RFLX_LW_up', 'upward longwave radiation flux (cell face)', 'W/m2', fill_halo=.true. )
391  call file_history_in( flux_rad(:,:,:,i_lw,i_dn,2), 'RFLX_LW_dn', 'downward longwave radiation flux (cell face)', 'W/m2', fill_halo=.true. )
392  call file_history_in( flux_rad(:,:,:,i_sw,i_up,2), 'RFLX_SW_up', 'upward shortwave radiation flux (cell face)', 'W/m2', fill_halo=.true. )
393  call file_history_in( flux_rad(:,:,:,i_sw,i_dn,2), 'RFLX_SW_dn', 'downward shortwave radiation flux (cell face)', 'W/m2', fill_halo=.true. )
394 
395  call file_history_in( dtau_s(:,:,:), 'dtau_s', '0.67 micron cloud optical depth', '1', fill_halo=.true. )
396  call file_history_in( dem_s(:,:,:), 'dem_s', '10.5 micron cloud emissivity', '1', fill_halo=.true. )
397 
398  endif
399 
400  do j = js, je
401  do i = is, ie
402  do k = ks, ke
403  rhoh(k,i,j) = rhoh(k,i,j) + rhoh_rd(k,i,j)
404  enddo
405  enddo
406  enddo
407 
408  if ( statistics_checktotal ) then
409  call statistics_total( ka, ks, ke, ia, is, ie, ja, js, je, &
410  rhoh_rd(:,:,:), 'RHOH_RD', &
413  endif
414 
415  return
module ATMOS admin
module atmosphere / physics / radiation / mstrnX
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_rd_sflx_down
real(rp), dimension(:,:), allocatable, public landuse_fact_urban
urban factor
subroutine, public atmos_phy_ae_vars_get_diagnostic(QTRC, RH, Re, Qe)
subroutine, public atmos_phy_mp_vars_get_diagnostic(DENS, TEMP, QTRC, CLDFRAC, Re, Qe, Ne)
integer, parameter, public n_ae
module Atmosphere / Physics Cloud Microphysics
module ATMOSPHERIC Variables
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_lat
latitude [rad,-pi,pi]
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
real(rp), dimension(:,:,:), allocatable, public atmos_phy_rd_rhoh
real(dp), public time_nowdaysec
second of current time [sec]
Definition: scale_time.F90:73
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_vol
control volume (zxy) [m3]
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_temp
real(rp), public atmos_grid_cartesc_real_totvol
total volume (zxy, local) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
real(rp), dimension(:,:,:), allocatable, target, public dens
subroutine, public atmos_phy_rd_offline_flux(KA, KS, KE, IA, IS, IE, JA, JS, JE, time_now, flux_rad, SFLX_rad_dn)
Radiation main.
character(len=h_short), public atmos_phy_rd_type
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_up
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_lon
longitude [rad,0-2pi]
logical, public statistics_checktotal
calc&report variable totals to logfile?
module atmosphere / aerosol
real(rp), dimension(:,:,:), allocatable, public rhoh_p
integer, parameter, public i_lw
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_up
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_dn
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_cossza
module Atmosphere / Physics Radiation
module ATMOSPHERIC Surface Variables
integer, parameter, public i_sw
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_up
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_sf_sfc_albedo
module atmosphere / hydrometeor
module LANDUSE
integer, parameter, public i_dn
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
integer, public time_offset_year
time offset [year]
Definition: scale_time.F90:77
real(rp), dimension(:,:,:), allocatable, target, public temp
real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
ocean factor
module atmosphere / physics / radiation / offline
module TIME
Definition: scale_time.F90:16
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_dn
real(rp), dimension(:,:,:), pointer, public dens_av
real(rp), dimension(:,:,:), allocatable, pointer, target, public qv
real(rp), dimension(:,:,:), allocatable, target, public cvtot
subroutine, public atmos_phy_rd_mstrnx_flux(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, TEMP, PRES, QV, CZ, FZ, fact_ocean, fact_land, fact_urban, temp_sfc, albedo_sfc, solins, cosSZA, CLDFRAC, MP_Re, MP_Qe, AE_Re, flux_rad, flux_rad_top, flux_rad_sfc_dn, dtau_s, dem_s)
Radiation main.
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_dn
module atmosphere / SOLARINS
module atmosphere / physics / radiation / common
module Statistics
integer, dimension(6), public time_nowdate
current time [YYYY MM DD HH MM SS]
Definition: scale_time.F90:69
subroutine, public atmos_phy_rd_calc_heating(KA, KS, KE, IA, IS, IE, JA, JS, JE, flux_rad, DENS, TEMP, CVtot, FZ, RHOH, TEMP_t)
Calc heating rate.
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
integer, parameter, public n_hyd
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_solins
module ATMOSPHERE / Physics Aerosol Microphysics
integer, parameter, public i_up
real(rp), dimension(:,:,:), allocatable, target, public pres
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_up
module file_history
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
Here is the call graph for this function:
Here is the caller graph for this function: