45 logical,
private :: RD_use_PBL_cloud = .false.
78 namelist / param_atmos_phy_rd / &
85 log_info(
"ATMOS_PHY_RD_driver_setup",*)
'Setup'
91 read(
io_fid_conf,nml=param_atmos_phy_rd,iostat=ierr)
93 log_info(
"ATMOS_PHY_RD_driver_setup",*)
'Not found namelist. Default used.'
94 elseif( ierr > 0 )
then
95 log_error(
"ATMOS_PHY_RD_driver_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_PHY_RD. Check!'
98 log_nml(param_atmos_phy_rd)
106 log_error(
"ATMOS_PHY_RD_driver_setup",*)
'invalid Radiation type(', trim(
atmos_phy_rd_type),
'). CHECK!'
112 log_info(
"ATMOS_PHY_RD_driver_setup",*)
'this component is never called.'
113 log_info(
"ATMOS_PHY_RD_driver_setup",*)
'radiation fluxes are set to zero.'
114 sfcflx_lw_up(:,:) = 0.0_rp
115 sfcflx_lw_dn(:,:) = 0.0_rp
116 sfcflx_sw_up(:,:) = 0.0_rp
117 sfcflx_sw_dn(:,:) = 0.0_rp
118 tomflx_lw_up(:,:) = 0.0_rp
119 tomflx_lw_dn(:,:) = 0.0_rp
120 tomflx_sw_up(:,:) = 0.0_rp
121 tomflx_sw_dn(:,:) = 0.0_rp
122 sflx_rad_dn(:,:,:,:) = 0.0_rp
165 solarins_insolation => atmos_solarins_insolation
205 atmos_vars_get_diagnostic
212 logical,
intent(in) :: update_flag
215 real(
rp) :: flux_rad (
ka,
ia,
ja,2,2,2)
216 real(
rp) :: flux_rad_top(
ia,
ja,2,2,2)
224 real(
rp) :: flux_net_sfc(
ia,
ja,2)
225 real(
rp) :: flux_net_toa(
ia,
ja,2)
226 real(
rp) :: flux_net_tom(
ia,
ja,2)
228 real(
rp) :: toaflx_lw_up(
ia,
ja)
229 real(
rp) :: toaflx_lw_dn(
ia,
ja)
230 real(
rp) :: toaflx_sw_up(
ia,
ja)
231 real(
rp) :: toaflx_sw_dn(
ia,
ja)
233 real(
rp) :: sfcflx_lw_up_c(
ia,
ja)
234 real(
rp) :: sfcflx_lw_dn_c(
ia,
ja)
235 real(
rp) :: sfcflx_sw_up_c(
ia,
ja)
236 real(
rp) :: sfcflx_sw_dn_c(
ia,
ja)
237 real(
rp) :: toaflx_lw_up_c(
ia,
ja)
238 real(
rp) :: toaflx_lw_dn_c(
ia,
ja)
239 real(
rp) :: toaflx_sw_up_c(
ia,
ja)
240 real(
rp) :: toaflx_sw_dn_c(
ia,
ja)
241 real(
rp) :: tomflx_lw_up_c(
ia,
ja)
242 real(
rp) :: tomflx_lw_dn_c(
ia,
ja)
243 real(
rp) :: tomflx_sw_up_c(
ia,
ja)
244 real(
rp) :: tomflx_sw_dn_c(
ia,
ja)
257 if ( update_flag )
then
260 real_lon(:,:), real_lat(:,:), &
262 solins(:,:), cossza(:,:) )
265 dens(:,:,:), temp(:,:,:), qtrc(:,:,:,:), &
266 cldfrac=cldfrac, re=mp_re, qe=mp_qe )
268 if ( rd_use_pbl_cloud )
then
278 mp_qe(
k,i,j,
i_hc) = 0.0_rp
280 mp_qe(
k,i,j,
i_hi) = 0.0_rp
281 mp_re(
k,i,j,
i_hc) = 8.0e-4
289 call atmos_vars_get_diagnostic(
"RH", rh )
291 qtrc(:,:,:,:), rh(:,:,:), &
300 dens(:,:,:), temp(:,:,:), pres(:,:,:), qv(:,:,:), &
301 real_cz(:,:,:), real_fz(:,:,:), &
302 fact_ocean(:,:), fact_land(:,:), fact_urban(:,:), &
303 sfc_temp(:,:), sfc_albedo(:,:,:,:), &
304 solins(:,:), cossza(:,:), &
305 cldfrac(:,:,:), mp_re(:,:,:,:), mp_qe(:,:,:,:), &
306 ae_re(:,:,:,:), ae_qe(:,:,:,:), &
307 flux_rad(:,:,:,:,:,:), &
308 flux_rad_top(:,:,:,:,:), sflx_rad_dn(:,:,:,:), &
309 dtau_s = dtau_s(:,:,:), dem_s = dem_s(:,:,:) )
316 flux_rad(:,:,:,:,:,2), &
317 sflx_rad_dn(:,:,:,:) )
318 flux_rad(:,:,:,:,:,1) = 0.0_rp
319 flux_rad_top(:,:,:,:,:) = 0.0_rp
320 dtau_s(:,:,:) = 0.0_rp
321 dem_s(:,:,:) = 0.0_rp
331 sfcflx_lw_up_c(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_up,1)
332 sfcflx_lw_dn_c(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_dn,1)
333 sfcflx_sw_up_c(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_up,1)
334 sfcflx_sw_dn_c(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,1)
336 sfcflx_lw_up(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_up,2)
337 sfcflx_lw_dn(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_dn,2)
338 sfcflx_sw_up(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_up,2)
339 sfcflx_sw_dn(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)
341 flux_net_sfc(i,j,
i_lw) = sfcflx_lw_up(i,j) - sfcflx_lw_dn(i,j)
342 flux_net_sfc(i,j,
i_sw) = sfcflx_sw_up(i,j) - sfcflx_sw_dn(i,j)
351 toaflx_lw_up_c(i,j) = flux_rad_top(i,j,
i_lw,
i_up,1)
352 toaflx_lw_dn_c(i,j) = flux_rad_top(i,j,
i_lw,
i_dn,1)
353 toaflx_sw_up_c(i,j) = flux_rad_top(i,j,
i_sw,
i_up,1)
354 toaflx_sw_dn_c(i,j) = flux_rad_top(i,j,
i_sw,
i_dn,1)
356 toaflx_lw_up(i,j) = flux_rad_top(i,j,
i_lw,
i_up,2)
357 toaflx_lw_dn(i,j) = flux_rad_top(i,j,
i_lw,
i_dn,2)
358 toaflx_sw_up(i,j) = flux_rad_top(i,j,
i_sw,
i_up,2)
359 toaflx_sw_dn(i,j) = flux_rad_top(i,j,
i_sw,
i_dn,2)
361 flux_net_toa(i,j,
i_lw) = toaflx_lw_up(i,j) - toaflx_lw_dn(i,j)
362 flux_net_toa(i,j,
i_sw) = toaflx_sw_up(i,j) - toaflx_sw_dn(i,j)
371 tomflx_lw_up_c(i,j) = flux_rad(
ke,i,j,
i_lw,
i_up,1)
372 tomflx_lw_dn_c(i,j) = flux_rad(
ke,i,j,
i_lw,
i_dn,1)
373 tomflx_sw_up_c(i,j) = flux_rad(
ke,i,j,
i_sw,
i_up,1)
374 tomflx_sw_dn_c(i,j) = flux_rad(
ke,i,j,
i_sw,
i_dn,1)
376 tomflx_lw_up(i,j) = flux_rad(
ke,i,j,
i_lw,
i_up,2)
377 tomflx_lw_dn(i,j) = flux_rad(
ke,i,j,
i_lw,
i_dn,2)
378 tomflx_sw_up(i,j) = flux_rad(
ke,i,j,
i_sw,
i_up,2)
379 tomflx_sw_dn(i,j) = flux_rad(
ke,i,j,
i_sw,
i_dn,2)
381 flux_net_tom(i,j,
i_lw) = tomflx_lw_up(i,j) - tomflx_lw_dn(i,j)
382 flux_net_tom(i,j,
i_sw) = tomflx_sw_up(i,j) - tomflx_sw_dn(i,j)
390 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) )
391 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) )
392 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) )
393 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) )
404 flux_rad(:,:,:,:,:,2), &
405 dens(:,:,:), temp(:,:,:), &
409 temp_t = temp_t(:,:,:,:) )
413 call file_history_in( solins(:,:),
'SOLINS',
'solar insolation',
'W/m2', fill_halo=.true. )
414 call file_history_in( cossza(:,:),
'COSZ',
'cos(solar zenith angle)',
'1', fill_halo=.true. )
416 call file_history_in( sfcflx_lw_up_c(:,:),
'SFLX_LW_up_c',
'SFC upward longwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
417 call file_history_in( sfcflx_lw_dn_c(:,:),
'SFLX_LW_dn_c',
'SFC downward longwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
418 call file_history_in( sfcflx_sw_up_c(:,:),
'SFLX_SW_up_c',
'SFC upward shortwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
419 call file_history_in( sfcflx_sw_dn_c(:,:),
'SFLX_SW_dn_c',
'SFC downward shortwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
421 call file_history_in( sfcflx_lw_up(:,:),
'SFLX_LW_up',
'SFC upward longwave radiation flux',
'W/m2', fill_halo=.true. )
422 call file_history_in( sfcflx_lw_dn(:,:),
'SFLX_LW_dn',
'SFC downward longwave radiation flux',
'W/m2', fill_halo=.true. )
423 call file_history_in( sfcflx_sw_up(:,:),
'SFLX_SW_up',
'SFC upward shortwave radiation flux',
'W/m2', fill_halo=.true. )
424 call file_history_in( sfcflx_sw_dn(:,:),
'SFLX_SW_dn',
'SFC downward shortwave radiation flux',
'W/m2', fill_halo=.true. )
426 call file_history_in( flux_net_sfc(:,:,
i_lw),
'SFLX_LW_net',
'SFC net longwave radiation flux',
'W/m2', fill_halo=.true. )
427 call file_history_in( flux_net_sfc(:,:,
i_sw),
'SFLX_SW_net',
'SFC net shortwave radiation flux',
'W/m2', fill_halo=.true. )
429 call file_history_in( toaflx_lw_up_c(:,:),
'TOAFLX_LW_up_c',
'TOA upward longwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
430 call file_history_in( toaflx_lw_dn_c(:,:),
'TOAFLX_LW_dn_c',
'TOA downward longwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
431 call file_history_in( toaflx_sw_up_c(:,:),
'TOAFLX_SW_up_c',
'TOA upward shortwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
432 call file_history_in( toaflx_sw_dn_c(:,:),
'TOAFLX_SW_dn_c',
'TOA downward shortwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
434 call file_history_in( toaflx_lw_up(:,:),
'TOAFLX_LW_up',
'TOA upward longwave radiation flux',
'W/m2', fill_halo=.true. )
435 call file_history_in( toaflx_lw_dn(:,:),
'TOAFLX_LW_dn',
'TOA downward longwave radiation flux',
'W/m2', fill_halo=.true. )
436 call file_history_in( toaflx_sw_up(:,:),
'TOAFLX_SW_up',
'TOA upward shortwave radiation flux',
'W/m2', fill_halo=.true. )
437 call file_history_in( toaflx_sw_dn(:,:),
'TOAFLX_SW_dn',
'TOA downward shortwave radiation flux',
'W/m2', fill_halo=.true. )
439 call file_history_in( flux_net_toa(:,:,
i_lw),
'TOAFLX_LW_net',
'TOA net longwave radiation flux',
'W/m2', fill_halo=.true. )
440 call file_history_in( flux_net_toa(:,:,
i_sw),
'TOAFLX_SW_net',
'TOA net shortwave radiation flux',
'W/m2', fill_halo=.true. )
442 call file_history_in( tomflx_lw_up_c(:,:),
'TOMFLX_LW_up_c',
'TOM upward longwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
443 call file_history_in( tomflx_lw_dn_c(:,:),
'TOMFLX_LW_dn_c',
'TOM downward longwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
444 call file_history_in( tomflx_sw_up_c(:,:),
'TOMFLX_SW_up_c',
'TOM upward shortwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
445 call file_history_in( tomflx_sw_dn_c(:,:),
'TOMFLX_SW_dn_c',
'TOM downward shortwave radiation flux (clr)',
'W/m2', fill_halo=.true. )
447 call file_history_in( tomflx_lw_up(:,:),
'TOMFLX_LW_up',
'TOM upward longwave radiation flux',
'W/m2', fill_halo=.true. )
448 call file_history_in( tomflx_lw_dn(:,:),
'TOMFLX_LW_dn',
'TOM downward longwave radiation flux',
'W/m2', fill_halo=.true. )
449 call file_history_in( tomflx_sw_up(:,:),
'TOMFLX_SW_up',
'TOM upward shortwave radiation flux',
'W/m2', fill_halo=.true. )
450 call file_history_in( tomflx_sw_dn(:,:),
'TOMFLX_SW_dn',
'TOM downward shortwave radiation flux',
'W/m2', fill_halo=.true. )
452 call file_history_in( flux_net_tom(:,:,
i_lw),
'TOMFLX_LW_net',
'TOM net longwave radiation flux',
'W/m2', fill_halo=.true. )
453 call file_history_in( flux_net_tom(:,:,
i_sw),
'TOMFLX_SW_net',
'TOM net shortwave radiation flux',
'W/m2', fill_halo=.true. )
455 call file_history_in( flux_net_sfc(:,:,
i_lw),
'SLR',
'SFC net longwave radiation flux',
'W/m2', fill_halo=.true. )
456 call file_history_in( flux_net_sfc(:,:,
i_sw),
'SSR',
'SFC net shortwave radiation flux',
'W/m2', fill_halo=.true. )
457 call file_history_in( toaflx_lw_up(:,:),
'OLR',
'outgoing longwave radiation flux',
'W/m2', fill_halo=.true. )
458 call file_history_in( toaflx_sw_up(:,:),
'OSR',
'outgoing shortwave radiation flux',
'W/m2', fill_halo=.true. )
460 call file_history_in( flux_up(:,:,:,
i_lw),
'RADFLUX_LWUP',
'upward longwave radiation flux',
'W/m2', fill_halo=.true. )
461 call file_history_in( flux_dn(:,:,:,
i_lw),
'RADFLUX_LWDN',
'downward longwave radiation flux',
'W/m2', fill_halo=.true. )
462 call file_history_in( flux_net(:,:,:,
i_lw),
'RADFLUX_LW',
'net longwave radiation flux',
'W/m2', fill_halo=.true. )
463 call file_history_in( flux_up(:,:,:,
i_sw),
'RADFLUX_SWUP',
'upward shortwave radiation flux',
'W/m2', fill_halo=.true. )
464 call file_history_in( flux_dn(:,:,:,
i_sw),
'RADFLUX_SWDN',
'downward shortwave radiation flux',
'W/m2', fill_halo=.true. )
465 call file_history_in( flux_net(:,:,:,
i_sw),
'RADFLUX_SW',
'net shortwave radiation flux',
'W/m2', fill_halo=.true. )
467 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. )
468 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. )
469 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. )
470 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. )
471 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. )
472 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. )
474 call file_history_in( temp_t(:,:,:,
i_lw),
'TEMP_t_rd_LW',
'tendency of temp in rd(LW)',
'K/day', fill_halo=.true. )
475 call file_history_in( temp_t(:,:,:,
i_sw),
'TEMP_t_rd_SW',
'tendency of temp in rd(SW)',
'K/day', fill_halo=.true. )
476 call file_history_in( temp_t(:,:,:,3 ),
'TEMP_t_rd',
'tendency of temp in rd',
'K/day', fill_halo=.true. )
477 call file_history_in( rhoh_rd(:,:,:),
'RHOH_RD',
'diabatic heating rate in rd',
'J/m3/s', fill_halo=.true. )
480 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. )
481 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. )
482 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. )
483 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. )
485 call file_history_in( dtau_s(:,:,:),
'dtau_s',
'0.67 micron cloud optical depth',
'1', fill_halo=.true. )
486 call file_history_in( dem_s(:,:,:),
'dem_s',
'10.5 micron cloud emissivity',
'1', fill_halo=.true. )
493 rhoh(
k,i,j) = rhoh(
k,i,j) + rhoh_rd(
k,i,j)
500 rhoh_rd(:,:,:),
'RHOH_RD', &