Driver.
148 solarins_insolation => atmos_solarins_insolation
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) :: flux_up (
ka,
ia,
ja,2)
193 real(RP) :: flux_dn (
ka,
ia,
ja,2)
194 real(RP) :: flux_net (
ka,
ia,
ja,2)
195 real(RP) :: flux_net_toa(
ia,
ja,2)
196 real(RP) :: flux_net_sfc(
ia,
ja,2)
198 real(RP) :: sfcflx_lw_up_c(
ia,
ja)
199 real(RP) :: sfcflx_lw_dn_c(
ia,
ja)
200 real(RP) :: sfcflx_sw_up_c(
ia,
ja)
201 real(RP) :: sfcflx_sw_dn_c(
ia,
ja)
202 real(RP) :: toaflx_lw_up_c(
ia,
ja)
203 real(RP) :: toaflx_lw_dn_c(
ia,
ja)
204 real(RP) :: toaflx_sw_up_c(
ia,
ja)
205 real(RP) :: toaflx_sw_dn_c(
ia,
ja)
208 real(RP) :: rthratensw(
ia,
ka,
ja)
209 real(RP) :: sdown3d (
ia,
ka,
ja)
210 real(RP) :: gsw (
ia,
ja)
211 real(RP) :: rho3d (
ia,
ka,
ja)
212 real(RP) :: t3d (
ia,
ka,
ja)
213 real(RP) :: p3d (
ia,
ka,
ja)
214 real(RP) :: pi3d (
ia,
ka,
ja)
215 real(RP) :: dz8w (
ia,
ka,
ja)
216 real(RP) :: qv3d (
ia,
ka,
ja)
217 real(RP) :: qc3d (
ia,
ka,
ja)
218 real(RP) :: qr3d (
ia,
ka,
ja)
219 real(RP) :: qi3d (
ia,
ka,
ja)
220 real(RP) :: qs3d (
ia,
ka,
ja)
221 real(RP) :: qg3d (
ia,
ka,
ja)
222 real(RP) :: flux_rad_org(
ka,
ia,
ja,2,2,2)
229 if ( update_flag )
then 231 call solarins_insolation( solins(:,:), &
251 call rd_heating( flux_rad(:,:,:,:,:,2), &
265 sfcflx_lw_up_c(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_up,1)
266 sfcflx_lw_dn_c(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_dn,1)
267 sfcflx_sw_up_c(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_up,1)
268 sfcflx_sw_dn_c(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,1)
270 sfcflx_lw_up(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_up,2)
271 sfcflx_lw_dn(i,j) = flux_rad(
ks-1,i,j,
i_lw,
i_dn,2)
272 sfcflx_sw_up(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_up,2)
273 sfcflx_sw_dn(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)
275 flux_net_sfc(i,j,
i_lw) = flux_rad(
ks-1,i,j,
i_lw,
i_up,2) - flux_rad(
ks-1,i,j,
i_lw,
i_dn,2)
276 flux_net_sfc(i,j,
i_sw) = flux_rad(
ks-1,i,j,
i_sw,
i_up,2) - flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)
284 toaflx_lw_up_c(i,j) = flux_rad_top(i,j,
i_lw,
i_up,1)
285 toaflx_lw_dn_c(i,j) = flux_rad_top(i,j,
i_lw,
i_dn,1)
286 toaflx_sw_up_c(i,j) = flux_rad_top(i,j,
i_sw,
i_up,1)
287 toaflx_sw_dn_c(i,j) = flux_rad_top(i,j,
i_sw,
i_dn,1)
289 toaflx_lw_up(i,j) = flux_rad_top(i,j,
i_lw,
i_up,2)
290 toaflx_lw_dn(i,j) = flux_rad_top(i,j,
i_lw,
i_dn,2)
291 toaflx_sw_up(i,j) = flux_rad_top(i,j,
i_sw,
i_up,2)
292 toaflx_sw_dn(i,j) = flux_rad_top(i,j,
i_sw,
i_dn,2)
294 flux_net_toa(i,j,
i_lw) = flux_rad_top(i,j,
i_lw,
i_up,2) - flux_rad_top(i,j,
i_lw,
i_dn,2)
295 flux_net_toa(i,j,
i_sw) = flux_rad_top(i,j,
i_sw,
i_up,2) - flux_rad_top(i,j,
i_sw,
i_dn,2)
303 flux_net(k,i,j,
i_lw) = 0.5_rp * ( ( flux_rad(k-1,i,j,
i_lw,
i_up,2) - flux_rad(k-1,i,j,
i_lw,
i_dn,2) ) &
304 + ( flux_rad(k ,i,j,
i_lw,
i_up,2) - flux_rad(k ,i,j,
i_lw,
i_dn,2) ) )
305 flux_net(k,i,j,
i_sw) = 0.5_rp * ( ( flux_rad(k-1,i,j,
i_sw,
i_up,2) - flux_rad(k-1,i,j,
i_sw,
i_dn,2) ) &
306 + ( flux_rad(k ,i,j,
i_sw,
i_up,2) - flux_rad(k ,i,j,
i_sw,
i_dn,2) ) )
308 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) )
309 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) )
310 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) )
311 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_rad_org(:,:,:,:,:,:) = flux_rad(:,:,:,:,:,:)
332 t3d(i,k,j) =
temp(k,i,j)
333 rho3d(i,k,j) =
dens(k,i,j)
334 p3d(i,k,j) =
pres(k,i,j)
335 pi3d(i,k,j) = (
pres(k,i,j)/pre00)**(rdry/cpdry)
347 sfc_albedo(:,:,
i_sw), &
372 flux_net_sfc(i,j,
i_sw) = gsw(i,j)
374 flux_rad(k,i,j,
i_sw,
i_up,2) = 0.0_rp
375 flux_rad(k,i,j,
i_sw,
i_dn,2) = sdown3d(i,k,j)
379 flux_rad(k,i,j,
i_sw,
i_dn,2) = sdown3d(i,
ks-1,j)
390 sfcflx_sw_up(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,2) * sfc_albedo(i,j,
i_sw)
391 sfcflx_sw_dn(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)
393 toaflx_sw_up(i,j) = 0.0_rp
394 toaflx_sw_dn(i,j) = flux_rad(
ke,i,j,
i_sw,
i_dn,2)
400 flux_net_toa(i,j,
i_sw) = 0.0_rp
402 flux_net(k,i,j,
i_sw) = 0.0_rp
403 flux_up(k,i,j,
i_sw) = 0.0_rp
404 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) )
411 flux_net_sfc(i,j,
i_sw) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)*sfc_albedo(i,j,
i_sw)-flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)
417 call hist_in( solins(:,:),
'SOLINS',
'solar insolation',
'W/m2', nohalo=.true. )
418 call hist_in( cossza(:,:),
'COSZ',
'cos(solar zenith angle)',
'0-1', nohalo=.true. )
420 call hist_in( sfcflx_lw_up_c(:,:),
'SFLX_LW_up_c',
'SFC upward longwave radiation flux (clr)',
'W/m2', nohalo=.true. )
421 call hist_in( sfcflx_lw_dn_c(:,:),
'SFLX_LW_dn_c',
'SFC downward longwave radiation flux (clr)',
'W/m2', nohalo=.true. )
422 call hist_in( sfcflx_sw_up_c(:,:),
'SFLX_SW_up_c',
'SFC upward shortwave radiation flux (clr)',
'W/m2', nohalo=.true. )
423 call hist_in( sfcflx_sw_dn_c(:,:),
'SFLX_SW_dn_c',
'SFC downward shortwave radiation flux (clr)',
'W/m2', nohalo=.true. )
425 call hist_in( toaflx_lw_up_c(:,:),
'TOAFLX_LW_up_c',
'TOA upward longwave radiation flux (clr)',
'W/m2', nohalo=.true. )
426 call hist_in( toaflx_lw_dn_c(:,:),
'TOAFLX_LW_dn_c',
'TOA downward longwave radiation flux (clr)',
'W/m2', nohalo=.true. )
427 call hist_in( toaflx_sw_up_c(:,:),
'TOAFLX_SW_up_c',
'TOA upward shortwave radiation flux (clr)',
'W/m2', nohalo=.true. )
428 call hist_in( toaflx_sw_dn_c(:,:),
'TOAFLX_SW_dn_c',
'TOA downward shortwave radiation flux (clr)',
'W/m2', nohalo=.true. )
430 call hist_in( sfcflx_lw_up(:,:),
'SFLX_LW_up',
'SFC upward longwave radiation flux',
'W/m2', nohalo=.true. )
431 call hist_in( sfcflx_lw_dn(:,:),
'SFLX_LW_dn',
'SFC downward longwave radiation flux',
'W/m2', nohalo=.true. )
432 call hist_in( sfcflx_sw_up(:,:),
'SFLX_SW_up',
'SFC upward shortwave radiation flux',
'W/m2', nohalo=.true. )
433 call hist_in( sfcflx_sw_dn(:,:),
'SFLX_SW_dn',
'SFC downward shortwave radiation flux',
'W/m2', nohalo=.true. )
435 call hist_in( sflx_rad_dn(:,:,
i_sw,
i_direct),
'SFLX_SW_dn_direct',
'SFC down. shortwave ratio direct',
'W/m2', nohalo=.true. )
436 call hist_in( sflx_rad_dn(:,:,
i_sw,
i_diffuse),
'SFLX_SW_dn_diffuse',
'SFC down. shortwave ratio diffuse',
'W/m2', nohalo=.true. )
438 call hist_in( toaflx_lw_up(:,:),
'TOAFLX_LW_up',
'TOA upward longwave radiation flux',
'W/m2', nohalo=.true. )
439 call hist_in( toaflx_lw_dn(:,:),
'TOAFLX_LW_dn',
'TOA downward longwave radiation flux',
'W/m2', nohalo=.true. )
440 call hist_in( toaflx_sw_up(:,:),
'TOAFLX_SW_up',
'TOA upward shortwave radiation flux',
'W/m2', nohalo=.true. )
441 call hist_in( toaflx_sw_dn(:,:),
'TOAFLX_SW_dn',
'TOA downward shortwave radiation flux',
'W/m2', nohalo=.true. )
443 call hist_in( flux_net_sfc(:,:,
i_lw),
'SLR',
'SFC net longwave radiation flux',
'W/m2', nohalo=.true. )
444 call hist_in( flux_net_sfc(:,:,
i_sw),
'SSR',
'SFC net shortwave radiation flux',
'W/m2', nohalo=.true. )
445 call hist_in( flux_net_toa(:,:,
i_lw),
'OLR',
'TOA net longwave radiation flux',
'W/m2', nohalo=.true. )
446 call hist_in( flux_net_toa(:,:,
i_sw),
'OSR',
'TOA net shortwave radiation flux',
'W/m2', nohalo=.true. )
448 call hist_in( flux_up(:,:,:,
i_lw),
'RADFLUX_LWUP',
'upward longwave radiation flux',
'W/m2', nohalo=.true. )
449 call hist_in( flux_dn(:,:,:,
i_lw),
'RADFLUX_LWDN',
'downward longwave radiation flux',
'W/m2', nohalo=.true. )
450 call hist_in( flux_net(:,:,:,
i_lw),
'RADFLUX_LW',
'net longwave radiation flux',
'W/m2', nohalo=.true. )
451 call hist_in( flux_up(:,:,:,
i_sw),
'RADFLUX_SWUP',
'upward shortwave radiation flux',
'W/m2', nohalo=.true. )
452 call hist_in( flux_dn(:,:,:,
i_sw),
'RADFLUX_SWDN',
'downward shortwave radiation flux',
'W/m2', nohalo=.true. )
453 call hist_in( flux_net(:,:,:,
i_sw),
'RADFLUX_SW',
'net shortwave radiation flux',
'W/m2', nohalo=.true. )
455 call hist_in( temp_t(:,:,:,
i_lw),
'TEMP_t_rd_LW',
'tendency of temp in rd(LW)',
'K/day', nohalo=.true. )
456 call hist_in( temp_t(:,:,:,
i_sw),
'TEMP_t_rd_SW',
'tendency of temp in rd(SW)',
'K/day', nohalo=.true. )
457 call hist_in( temp_t(:,:,:,3 ),
'TEMP_t_rd',
'tendency of temp in rd',
'K/day', nohalo=.true. )
458 call hist_in( rhot_t_rd(:,:,:),
'RHOT_t_RD',
'tendency of RHOT in rd',
'K.kg/m3/s', nohalo=.true. )
462 flux_rad(:,:,:,:,:,:) = flux_rad_org(:,:,:,:,:,:)
466 sfcflx_sw_up(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_up,2)
467 sfcflx_sw_dn(i,j) = flux_rad(
ks-1,i,j,
i_sw,
i_dn,2)
469 toaflx_sw_up(i,j) = flux_rad_top(i,j,
i_sw,
i_up,2)
470 toaflx_sw_dn(i,j) = flux_rad_top(i,j,
i_sw,
i_dn,2)
481 rhot_t(k,i,j) = rhot_t(k,i,j) + rhot_t_rd(k,i,j)
487 call stat_total( total, rhot_t_rd(:,:,:),
'RHOT_t_RD' )
integer, public is
start point of inner domain: x, local
logical, public statistics_checktotal
calc&report variable totals to logfile?
subroutine, public atmos_phy_rd_heating(flux_rad, DENS, RHOT, QTRC, FZ, dt, TEMP_t, RHOT_t)
Calc heating rate.
integer, public je
end point of inner domain: y, local
real(rp), public const_cpdry
specific heat (dry air,constant pressure) [J/kg/K]
integer, parameter, public i_direct
real(rp), dimension(:,:), allocatable, public landuse_fact_urban
urban factor
real(dp), public time_dtsec_atmos_phy_rd
time interval of physics(radiation ) [sec]
real(rp), dimension(:,:,:), allocatable, target, public rhot
procedure(rd), pointer, public atmos_phy_rd
real(rp), dimension(:,:,:), allocatable, public pres
module ATMOSPHERIC Variables
integer, public ke
end point of inner domain: z, local
real(rp), dimension(:,:,:), allocatable, public rhot_tp
real(rp), dimension(:,:,:), allocatable, public atmos_phy_rd_rhot_t
real(rp), dimension(:,:,:), allocatable, public real_fz
geopotential height [m] (cell face )
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_temp
real(rp), dimension(:,:,:), allocatable, public real_cz
geopotential height [m] (cell center)
real(rp), dimension(:,:,:), allocatable, target, public dens
integer, parameter, public i_diffuse
character(len=h_short), public atmos_phy_rd_type
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_up
integer, parameter, public i_lw
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
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
integer, public ia
of x whole cells (local, with HALO)
real(rp), dimension(:,:,:), allocatable, public temp
integer, parameter, public i_dn
integer, public ka
of z whole cells (local, with HALO)
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
real(rp), public const_pre00
pressure reference [Pa]
integer, public time_offset_year
time offset [year]
real(rp), dimension(:,:,:), allocatable, public atmos_phy_sf_sfc_albedo
real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
ocean factor
integer, public js
start point of inner domain: y, local
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_dn
module ATMOSPHERE / Physics Radiation
integer, public ks
start point of inner domain: z, local
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_rd_sflx_downall
subroutine, public swrad(dt, RTHRATEN, SDOWN3D, GSW, XLAT, XLONG, ALBEDO, rho_phy, T3D, P3D, pi3D, dz8w, solins, cosSZA, QV3D, QC3D, QR3D, QI3D, QS3D, QG3D, F_QV, F_QC, F_QR, F_QI, F_QS, F_QG, icloud, warm_rain)
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_sw_dn
real(rp), dimension(:,:), allocatable, public real_lon
longitude [rad,0-2pi]
module ATMOSPHERE / Physics Radiation
integer, dimension(6), public time_nowdate
current time [YYYY MM DD HH MM SS]
real(rp), dimension(:,:), allocatable, public real_lat
latitude [rad,-pi,pi]
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
module ATMOSPHERE / Physics Radiation
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_solins
integer, parameter, public i_up
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_toaflx_lw_up
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
integer, public ja
of y whole cells (local, with HALO)