13 #include "inc_openmp.h" 62 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[CONFIG] / Categ[ATMOS PHY_MP] / Origin[SCALE-RM]' 86 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[DRIVER] / Categ[ATMOS PHY_MP] / Origin[SCALE-RM]' 95 if(
io_l )
write(
io_fid_log,*)
'*** this component is never called.' 96 if(
io_l )
write(
io_fid_log,*)
'*** SFLX_rain and SFLX_snow is set to zero.' 97 sflx_rain(:,:) = 0.0_rp
98 sflx_snow(:,:) = 0.0_rp
175 logical,
intent(in) :: update_flag
177 real(RP) :: dens0(
ka,
ia,
ja)
178 real(RP) :: momz0(
ka,
ia,
ja)
179 real(RP) :: momx0(
ka,
ia,
ja)
180 real(RP) :: momy0(
ka,
ia,
ja)
181 real(RP) :: rhot0(
ka,
ia,
ja)
186 real(RP) :: precip(
ia,
ja)
189 integer :: k, i, j, iq
192 if ( update_flag )
then 201 dens0(k,i,j) =
dens(k,i,j)
202 momz0(k,i,j) =
momz(k,i,j)
203 momx0(k,i,j) =
momx(k,i,j)
204 momy0(k,i,j) =
momy(k,i,j)
205 rhot0(k,i,j) =
rhot(k,i,j)
215 qtrc0(k,i,j,iq) =
qtrc(k,i,j,iq)
221 ccn(:,:,:) = ccn_t(:,:,:) * dt_mp
241 dens_t_mp(k,i,j) = ( dens0(k,i,j) -
dens(k,i,j) ) / dt_mp
242 momz_t_mp(k,i,j) = ( momz0(k,i,j) -
momz(k,i,j) ) / dt_mp
243 momx_t_mp(k,i,j) = ( momx0(k,i,j) -
momx(k,i,j) ) / dt_mp
244 momy_t_mp(k,i,j) = ( momy0(k,i,j) -
momy(k,i,j) ) / dt_mp
245 rhot_t_mp(k,i,j) = ( rhot0(k,i,j) -
rhot(k,i,j) ) / dt_mp
258 rhoq_t_mp(k,i,j,iq) = ( qtrc0(k,i,j,iq) * dens0(k,i,j) &
259 -
qtrc(k,i,j,iq) *
dens(k,i,j) ) / dt_mp
268 precip(i,j) = sflx_rain(i,j) + sflx_snow(i,j)
272 call hist_in( sflx_rain(:,:),
'RAIN_MP',
'surface rain rate by MP',
'kg/m2/s', nohalo=.true. )
273 call hist_in( sflx_snow(:,:),
'SNOW_MP',
'surface snow rate by MP',
'kg/m2/s', nohalo=.true. )
274 call hist_in( precip(:,:),
'PREC_MP',
'surface precipitation rate by MP',
'kg/m2/s', nohalo=.true. )
275 call hist_in( evaporate(:,:,:),
'EVAPORATE',
'evaporated cloud number',
'num/m3/s', nohalo=.true. )
277 call hist_in( dens_t_mp(:,:,:),
'DENS_t_MP',
'tendency DENS in MP',
'kg/m3/s' , nohalo=.true. )
278 call hist_in( momz_t_mp(:,:,:),
'MOMZ_t_MP',
'tendency MOMZ in MP',
'kg/m2/s2' , nohalo=.true. )
279 call hist_in( momx_t_mp(:,:,:),
'MOMX_t_MP',
'tendency MOMX in MP',
'kg/m2/s2' , nohalo=.true. )
280 call hist_in( momy_t_mp(:,:,:),
'MOMY_t_MP',
'tendency MOMY in MP',
'kg/m2/s2' , nohalo=.true. )
281 call hist_in( rhot_t_mp(:,:,:),
'RHOT_t_MP',
'tendency RHOT in MP',
'K*kg/m3/s', nohalo=.true. )
284 call hist_in( rhoq_t_mp(:,:,:,iq), trim(
tracer_name(iq))//
'_t_MP', &
285 'tendency rho*'//trim(
tracer_name(iq))//
'in MP',
'kg/m3/s', nohalo=.true. )
293 call hist_in( re(:,:,:,
i_hc),
'Re_QC',
'effective radius cloud water',
'cm', nohalo=.true. )
294 call hist_in( re(:,:,:,
i_hr),
'Re_QR',
'effective radius rain',
'cm', nohalo=.true. )
295 call hist_in( re(:,:,:,
i_hi),
'Re_QI',
'effective radius ice water',
'cm', nohalo=.true. )
296 call hist_in( re(:,:,:,
i_hs),
'Re_QS',
'effective radius snow',
'cm', nohalo=.true. )
297 call hist_in( re(:,:,:,
i_hg),
'Re_QG',
'effective radius graupel',
'cm', nohalo=.true. )
298 call hist_in( re(:,:,:,
i_hh),
'Re_QH',
'effective radius hail',
'cm', nohalo=.true. )
307 dens_t(k,i,j) = dens_t(k,i,j) + dens_t_mp(k,i,j)
308 momz_t(k,i,j) = momz_t(k,i,j) + momz_t_mp(k,i,j)
309 momx_t(k,i,j) = momx_t(k,i,j) + momx_t_mp(k,i,j)
310 momy_t(k,i,j) = momy_t(k,i,j) + momy_t_mp(k,i,j)
311 rhot_t(k,i,j) = rhot_t(k,i,j) + rhot_t_mp(k,i,j)
322 rhoq_t(k,i,j,iq) = rhoq_t(k,i,j,iq) + rhoq_t_mp(k,i,j,iq)
329 call stat_total( total, dens_t_mp(:,:,:),
'DENS_t_MP' )
330 call stat_total( total, momz_t_mp(:,:,:),
'MOMZ_t_MP' )
331 call stat_total( total, momx_t_mp(:,:,:),
'MOMX_t_MP' )
332 call stat_total( total, momy_t_mp(:,:,:),
'MOMY_t_MP' )
333 call stat_total( total, rhot_t_mp(:,:,:),
'RHOT_t_MP' )
336 call stat_total( total, rhoq_t_mp(:,:,:,iq), trim(
tracer_name(iq))//
'_t_MP' )
real(rp), dimension(:,:,:), allocatable, public dens_tp
integer, public is
start point of inner domain: x, local
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_mp_rhoq_t
logical, public statistics_checktotal
calc&report variable totals to logfile?
real(rp), dimension(:,:,:), allocatable, target, public momz
procedure(mp), pointer, public atmos_phy_mp
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_momy_t
integer, public je
end point of inner domain: y, local
real(rp), dimension(:,:,:), allocatable, target, public rhot
real(rp), dimension(:,:,:), allocatable, public momy_tp
real(dp), public time_dtsec_atmos_phy_mp
time interval of physics(microphysics) [sec]
module Atmosphere / Physics Cloud Microphysics
integer, parameter, public i_hs
snow
logical, public io_l
output log or not? (this process)
module ATMOSPHERE / Physics Cloud Microphysics
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
integer, parameter, public i_hr
liquid water rain
real(rp), dimension(:,:,:), allocatable, target, public momx
subroutine, public atmos_phy_mp_driver(update_flag)
Driver.
integer, parameter, public i_hi
ice water cloud
integer, public ke
end point of inner domain: z, local
real(rp), dimension(:,:,:), allocatable, public rhot_tp
real(rp), dimension(:,:,:), allocatable, target, public dens
integer, parameter, public i_hh
hail
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_momz_t
character(len=h_short), dimension(qa_max), public tracer_name
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
real(rp), dimension(:,:,:), pointer, public momx_av
integer, public ia
of whole cells: x, local, with HALO
subroutine, public atmos_phy_mp_config(MP_TYPE)
Setup Cloud Microphysics.
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_rhot_t
real(rp), dimension(:,:,:), allocatable, public temp
integer, public ka
of whole cells: z, local, with HALO
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_dens_t
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
integer, public js
start point of inner domain: y, local
procedure(er), pointer, public atmos_phy_mp_effectiveradius
procedure(su), pointer, public atmos_phy_mp_setup
subroutine, public atmos_phy_mp_driver_setup
Setup.
real(rp), dimension(:,:,:), pointer, public dens_av
logical, public atmos_sw_phy_mp
integer, parameter, public i_hc
liquid water cloud
character(len=h_short), public atmos_phy_mp_type
integer, public ks
start point of inner domain: z, local
real(rp), dimension(:,:,:), allocatable, public momx_tp
real(rp), dimension(:,:,:), allocatable, target, public momy
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_evaporate
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
real(rp), dimension(:,:,:), allocatable, public momz_tp
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:,:), pointer, public momz_av
real(rp), dimension(:,:,:), pointer, public rhot_av
integer, public io_fid_log
Log file ID.
integer, parameter, public n_hyd
subroutine, public atmos_phy_mp_driver_resume
resume
real(rp), dimension(:,:,:), pointer, public momy_av
module ATMOSPHERE / Physics Cloud Microphysics
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
module ATMOSPHERE / Physics Aerosol Microphysics
integer, parameter, public i_hg
graupel
subroutine, public atmos_phy_mp_driver_config
Config.
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_momx_t
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
real(rp), dimension(:,:,:), allocatable, public atmos_phy_ae_ccn_t
integer, public ja
of whole cells: y, local, with HALO