78 log_info(
"ATMOS_PHY_RD_driver_setup",*)
'Setup' 88 log_error(
"ATMOS_PHY_RD_driver_setup",*)
'invalid Radiation type(', trim(
atmos_phy_rd_type),
'). CHECK!' 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
143 solarins_insolation => atmos_solarins_insolation
179 atmos_vars_get_diagnostic
186 logical,
intent(in) :: update_flag
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)
192 real(RP) :: dtau_s (
ka,
ia,
ja)
193 real(RP) :: dem_s (
ka,
ia,
ja)
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)
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)
210 real(RP) :: CLDFRAC(
ka,
ia,
ja)
221 if ( update_flag )
then 224 real_lon(:,:), real_lat(:,:), &
226 solins(:,:), cossza(:,:) )
229 dens(:,:,:), temp(:,:,:), qtrc(:,:,:,:), &
230 cldfrac=cldfrac, re=mp_re, qe=mp_qe )
232 call atmos_vars_get_diagnostic(
"RH", rh )
234 qtrc(:,:,:,:), rh(:,:,:), &
244 dens(:,:,:), temp(:,:,:), pres(:,:,:), qv(:,:,:), &
245 real_cz(:,:,:), real_fz(:,:,:), &
246 fact_ocean(:,:), fact_land(:,:), fact_urban(:,:), &
247 sfc_temp(:,:), sfc_albedo(:,:,:,:), &
248 solins(:,:), cossza(:,:), &
249 cldfrac(:,:,:), mp_re(:,:,:,:), mp_qe(:,:,:,:), &
252 flux_rad(:,:,:,:,:,:), &
253 flux_rad_top(:,:,:,:,:), sflx_rad_dn(:,:,:,:), &
254 dtau_s = dtau_s(:,:,:), dem_s = dem_s(:,:,:) )
261 flux_rad(:,:,:,:,:,2), &
262 sflx_rad_dn(:,:,:,:) )
263 flux_rad(:,:,:,:,:,1) = 0.0_rp
264 flux_rad_top(:,:,:,:,:) = 0.0_rp
265 dtau_s(:,:,:) = 0.0_rp
266 dem_s(:,:,:) = 0.0_rp
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)
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)
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)
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)
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)
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)
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) )
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)
327 flux_rad(:,:,:,:,:,2), &
328 dens(:,:,:), temp(:,:,:), &
332 temp_t = temp_t(:,:,:,:) )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
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. )
403 rhoh(k,i,j) = rhoh(k,i,j) + rhoh_rd(k,i,j)
410 rhoh_rd(:,:,:),
'RHOH_RD', &
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
module coupler / surface-atmospehre
subroutine, public atmos_phy_ae_vars_get_diagnostic(QTRC, RH, Re, Qe)
logical, public atmos_sw_phy_rd
subroutine, public atmos_phy_mp_vars_get_diagnostic(DENS, TEMP, QTRC, CLDFRAC, Re, Qe, Ne)
integer, parameter, public n_ae
integer, public ia
of whole cells: x, local, with HALO
module Atmosphere / Physics Cloud Microphysics
integer, parameter, public i_r_vis
module ATMOSPHERE / Physics Radiation
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]
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)
integer, public ja
of whole cells: y, local, with HALO
real(rp), dimension(:,:,:), allocatable, target, public dens
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fz
face coordinate [m]: z, local
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
subroutine, public atmos_phy_rd_mstrnx_setup(KA, KS, KE, CZ, FZ)
Setup.
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
subroutine, public atmos_phy_rd_driver_setup
Setup.
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
integer, public is
start point of inner domain: x, local
module ATMOSPHERIC Surface Variables
integer, parameter, public i_sw
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_up
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_sf_sfc_albedo
module atmosphere / hydrometeor
integer, parameter, public i_dn
subroutine, public atmos_phy_rd_driver_calc_tendency(update_flag)
Driver.
module atmosphere / grid / cartesC index
integer, public ke
end point of inner domain: z, local
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
integer, public time_offset_year
time offset [year]
integer, public je
end point of inner domain: y, local
real(rp), dimension(:,:,:), allocatable, target, public temp
real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
ocean factor
module atmosphere / physics / radiation / offline
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_dn
module atmosphere / grid / cartesC
integer, public ks
start point of inner domain: z, local
real(rp), dimension(:,:,:), pointer, public dens_av
subroutine, public prc_abort
Abort Process.
real(rp), dimension(:,:,:), allocatable, pointer, target, public qv
integer, public js
start point of inner domain: y, local
integer, parameter, public i_r_direct
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)
integer, parameter, public i_r_nir
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_dn
integer, public ka
of whole cells: z, local, with HALO
module atmosphere / SOLARINS
module atmosphere / physics / radiation / common
integer, dimension(6), public time_nowdate
current time [YYYY MM DD HH MM SS]
integer, parameter, public i_r_ir
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 i_r_diffuse
integer, parameter, public n_hyd
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_solins
module ATMOSPHERE / Physics Aerosol Microphysics
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cz
center coordinate [m]: z, local
integer, parameter, public i_up
real(rp), dimension(:,:,:), allocatable, target, public pres
subroutine, public atmos_phy_rd_offline_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_up
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc