36 subroutine qhyd2qtrc( &
37 KA, KS, KE, IA, IS, IE, JA, JS, JE, &
44 integer,
intent(in) ::
ka,
ks,
ke 45 integer,
intent(in) ::
ia,
is,
ie 46 integer,
intent(in) ::
ja,
js,
je 47 real(RP),
intent(in) :: qv(
ka,
ia,
ja)
50 real(RP),
intent(in),
optional :: qnum(
ka,
ia,
ja,
n_hyd)
51 end subroutine qhyd2qtrc
52 end interface abstract
68 logical,
private :: mp_do_precipitation = .true.
69 logical,
private :: mp_do_negative_fixer = .true.
70 real(RP),
private :: mp_limit_negative = 0.1_rp
71 integer,
private :: mp_ntmax_sedimentation = 1
72 real(RP),
private :: mp_max_term_vel = 10.0_rp
73 real(RP),
private :: mp_cldfrac_thleshold
74 integer,
private :: mp_nstep_sedimentation
75 real(RP),
private :: mp_rnstep_sedimentation
76 real(DP),
private :: mp_dtsec_sedimentation
78 integer,
private,
allocatable :: hist_vterm_id(:)
79 integer,
private :: hist_nf_rhoh_id
80 integer,
private :: hist_nf_dens_id
81 integer,
private :: hist_nf_engi_id
82 integer,
private :: monit_nf_mass_id
83 integer,
private :: monit_nf_engi_id
138 log_info(
"ATMOS_PHY_MP_driver_tracer_setup",*)
'Setup' 198 log_error(
"ATMOS_PHY_MP_driver_tracer_setup",*)
'ATMOS_PHY_MP_TYPE is invalud: ', trim(
atmos_phy_mp_type)
249 namelist / param_atmos_phy_mp / &
250 mp_do_precipitation, &
251 mp_do_negative_fixer, &
253 mp_ntmax_sedimentation, &
257 real(RP) :: ZERO(
ka,
ia,
ja)
266 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'Setup' 270 mp_cldfrac_thleshold = eps
274 read(
io_fid_conf,nml=param_atmos_phy_mp,iostat=ierr)
276 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'Not found namelist. Default used.' 277 elseif( ierr > 0 )
then 278 log_error(
"ATMOS_PHY_MP_driver_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_PHY_MP. Check!' 281 log_nml(param_atmos_phy_mp)
284 mp_ntmax_sedimentation = max( mp_ntmax_sedimentation, nstep_max )
286 mp_nstep_sedimentation = mp_ntmax_sedimentation
287 mp_rnstep_sedimentation = 1.0_rp /
real(mp_ntmax_sedimentation,kind=
rp)
290 atmos_phy_mp_cldfrac_thleshold = mp_cldfrac_thleshold
293 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'Enable negative fixer? : ', mp_do_negative_fixer
294 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'Value limit of negative fixer (abs) : ', abs(mp_limit_negative)
295 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'Enable sedimentation (precipitation)? : ', mp_do_precipitation
296 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'Timestep of sedimentation is divided into : ', mp_ntmax_sedimentation,
'step' 297 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'DT of sedimentation : ', mp_dtsec_sedimentation,
'[s]' 314 if ( mp_do_precipitation )
then 322 if ( mp_do_negative_fixer )
then 323 call file_history_reg(
"RHOH_MP_NF",
"sensible heat by the negative fixer",
"J/m3/s", &
325 call file_history_reg(
"DENS_t_MP_NF",
"vapor supply by the negative fixer",
"kg/m3/s", &
327 call file_history_reg(
"ENGI_t_MP_NF",
"internal energy supply by the negative fixer",
"J/m3/s", &
329 call monitor_reg(
"QTOTTND_NF",
"vapor supply by the negative fixer",
"kg", &
332 call monitor_reg(
"ENGITND_NF",
"internal energy supply by the negative fixer",
"J", &
336 call monitor_put( monit_nf_mass_id, zero(:,:,:) )
337 call monitor_put( monit_nf_engi_id, zero(:,:,:) )
342 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'this component is never called.' 343 log_info(
"ATMOS_PHY_MP_driver_setup",*)
'SFLX_rain and SFLX_snow is set to zero.' 344 sflx_rain(:,:) = 0.0_rp
345 sflx_snow(:,:) = 0.0_rp
379 file_history_query, &
384 real(RP) :: rhoh (
ka,
ia,
ja)
385 real(RP) :: DENS_d(
ka,
ia,
ja)
386 real(RP) :: ENGI_d(
ka,
ia,
ja)
389 logical :: do_put_rhoh
390 logical :: do_put_dens
391 logical :: do_put_engi
393 integer :: k, i, j, iq
397 call file_history_query( hist_nf_rhoh_id, do_put_rhoh )
398 call file_history_query( hist_nf_dens_id, do_put_dens )
399 call file_history_query( hist_nf_engi_id, do_put_engi )
401 if ( monit_nf_mass_id > 0 .or. monit_nf_engi_id > 0 .or. &
402 do_put_rhoh .or. do_put_dens .or. do_put_engi )
then 404 ka,
ks,
ke,
ia, 1,
ia,
ja, 1,
ja,
qla,
qia, &
410 dens_diff = dens_d, engi_diff = engi_d )
413 ka,
ks,
ke,
ia, 1,
ia,
ja, 1,
ja,
qla,
qia, &
427 rhot(k,i,j) = pre00 / rtot * (
dens(k,i,j) *
temp(k,i,j) * rtot / pre00 )**(
cvtot(k,i,j) /
cptot(k,i,j) )
439 qtrc(k,i,j,iq) = max(
qtrc(k,i,j,iq), 0.0_rp )
447 if ( do_put_rhoh )
then 452 rhoh(k,i,j) = rhoh(k,i,j) / dt
456 call file_history_put( hist_nf_rhoh_id, rhoh(:,:,:) )
458 if ( monit_nf_mass_id > 0 .or. do_put_dens )
then 463 dens_d(k,i,j) = dens_d(k,i,j) / dt
467 call file_history_put( hist_nf_dens_id, dens_d(:,:,:) )
468 call monitor_put( monit_nf_mass_id, dens_d(:,:,:) )
470 if ( monit_nf_engi_id > 0 .or. do_put_engi )
then 475 engi_d(k,i,j) = engi_d(k,i,j) / dt
479 call file_history_put( hist_nf_engi_id, engi_d(:,:,:) )
480 call monitor_put( monit_nf_engi_id, engi_d(:,:,:) )
538 file_history_query, &
572 rhou_t_mp => atmos_phy_mp_rhou_t, &
573 rhov_t_mp => atmos_phy_mp_rhov_t, &
574 rhoq_t_mp => atmos_phy_mp_rhoq_t, &
575 rhoh_mp => atmos_phy_mp_rhoh, &
576 evaporate => atmos_phy_mp_evaporate, &
577 sflx_rain => atmos_phy_mp_sflx_rain, &
578 sflx_snow => atmos_phy_mp_sflx_snow
583 logical,
intent(in) :: update_flag
585 real(RP) :: RHOE_t(
ka,
ia,
ja)
586 real(RP) :: TEMP1 (
ka,
ia,
ja)
587 real(RP) :: CPtot1(
ka,
ia,
ja)
588 real(RP) :: CVtot1(
ka,
ia,
ja)
589 real(RP) :: CCN (
ka,
ia,
ja)
593 real(RP) :: FLX_hydro(
ka)
594 real(RP) :: DENS2 (
ka)
595 real(RP) :: TEMP2 (
ka)
596 real(RP) :: PRES2 (
ka)
597 real(RP) :: CPtot2 (
ka)
598 real(RP) :: CVtot2 (
ka)
599 real(RP) :: RHOE (
ka)
600 real(RP) :: RHOE2 (
ka)
602 real(RP) :: mflux (
ka)
603 real(RP) :: sflux (2)
611 real(RP) :: CP_t, CV_t
613 real(RP) :: precip (
ia,
ja)
616 real(RP),
allocatable :: vterm_hist(:,:,:,:)
621 integer :: k, i, j, iq
625 if ( update_flag )
then 627 ccn(:,:,:) = ccn_t(:,:,:) * dt_mp
632 temp1(:,:,:) = temp(:,:,:)
636 cvtot1(:,:,:) = cvtot(:,:,:)
638 cptot1(:,:,:) = cptot(:,:,:)
642 dens(:,:,:), pres(:,:,:), dt_mp, &
643 temp1(:,:,:), qtrc1(:,:,:,
qs_mp:
qe_mp), cptot1(:,:,:), cvtot1(:,:,:), &
644 rhoe_t(:,:,:), evaporate(:,:,:) )
650 rhoq_t_mp(k,i,j,iq) = ( qtrc1(k,i,j,iq) -
qtrc(k,i,j,iq) ) *
dens(k,i,j) / dt_mp
659 cptot_t(k,i,j) = ( cptot1(k,i,j) - cptot(k,i,j) ) / dt_mp
660 cvtot_t(k,i,j) = ( cvtot1(k,i,j) - cvtot(k,i,j) ) / dt_mp
670 temp1(k,i,j) = temp(k,i,j)
679 qtrc1(k,i,j,iq) =
qtrc(k,i,j,iq)
688 cvtot1(k,i,j) = cvtot(k,i,j)
696 cptot1(k,i,j) = cptot(k,i,j)
703 dens(:,:,:), pres(:,:,:), ccn(:,:,:), dt_mp, &
704 temp1(:,:,:), qtrc1(:,:,:,
qs_mp:
qe_mp), cptot1(:,:,:), cvtot1(:,:,:), &
705 rhoe_t(:,:,:), evaporate(:,:,:) )
711 rhoq_t_mp(k,i,j,iq) = ( qtrc1(k,i,j,iq) -
qtrc(k,i,j,iq) ) *
dens(k,i,j) / dt_mp
720 cptot_t(k,i,j) = ( cptot1(k,i,j) - cptot(k,i,j) ) / dt_mp
721 cvtot_t(k,i,j) = ( cvtot1(k,i,j) - cvtot(k,i,j) ) / dt_mp
730 dens(:,:,:),
w(:,:,:),
qtrc(:,:,:,
qs_mp:
qe_mp), pres(:,:,:), temp(:,:,:), &
731 qdry(:,:,:), cptot(:,:,:), cvtot(:,:,:), ccn(:,:,:), dt_mp, real_cz(:,:,:), real_fz(:,:,:), &
732 rhoq_t_mp(:,:,:,
qs_mp:
qe_mp), rhoe_t(:,:,:), cptot_t(:,:,:), cvtot_t(:,:,:), evaporate(:,:,:) )
736 call atmos_phy_mp_suzuki10_tendency(
ka,
ks,
ke,
ia,
is,
ie,
ja,
js,
je,
kijmax, &
738 dens(:,:,:), pres(:,:,:), temp(:,:,:), &
740 cptot(:,:,:), cvtot(:,:,:), &
744 cptot_t(:,:,:), cvtot_t(:,:,:), &
753 rhoh_mp(k,i,j) = rhoe_t(k,i,j) &
754 - ( cptot_t(k,i,j) + log( pres(k,i,j) / pre00 ) * ( cvtot(k,i,j) / cptot(k,i,j) * cptot_t(k,i,j) - cvtot_t(k,i,j) ) ) &
755 *
dens(k,i,j) * temp(k,i,j)
764 if ( mp_do_precipitation )
then 769 hist_vterm_idx(:) = -1
772 call file_history_query( hist_vterm_id(iq), flag )
775 hist_vterm_idx(iq) = ih
779 allocate( vterm_hist(
ka,
ia,
ja,ih) )
780 vterm_hist(:,:,:,:) = 0.0_rp
801 fz(1:
ka) = real_fz(1:
ka,i,j)
803 fdz(
ks-1) = real_cz(
ks,i,j) - real_fz(
ks-1,i,j)
804 rfdz(
ks-1) = 1.0_rp / fdz(
ks-1)
806 fdz(k) = real_cz(k+1,i,j) - real_cz(k ,i,j)
807 rfdz(k) = 1.0_rp / fdz(k)
808 rcdz(k) = 1.0_rp / ( real_fz(k ,i,j) - real_fz(k-1,i,j) )
812 dens2(k) =
dens(k,i,j)
813 temp2(k) = temp(k,i,j)
814 pres2(k) = pres(k,i,j)
815 cptot2(k) = cptot(k,i,j)
816 cvtot2(k) = cvtot(k,i,j)
817 rhoe(k) = temp(k,i,j) * cvtot(k,i,j) * dens2(k)
822 rhoq2(k,iq) = dens2(k) *
qtrc(k,i,j,iq)
826 sflx_rain(i,j) = 0.0_rp
827 sflx_snow(i,j) = 0.0_rp
828 flx_hydro(:) = 0.0_rp
829 do step = 1, mp_nstep_sedimentation
835 dens2(:), rhoq2(:,:), &
836 refstate_dens(:,i,j), &
841 dens2(:), temp2(:), rhoq2(:,:), &
846 dens2(:), temp2(:), rhoq2(:,:), pres2(:), &
858 if ( hist_vterm_idx(iq) > 0 )
then 860 vterm_hist(k,i,j,hist_vterm_idx(iq)) = vterm_hist(k,i,j,hist_vterm_idx(iq)) &
861 + vterm(k,iq) * mp_rnstep_sedimentation
867 case (
'Upwind-Euler' )
870 temp2(:), vterm(:,:), &
872 mp_dtsec_sedimentation, &
874 dens2(:), rhoq2(:,:), &
875 cptot2(:), cvtot2(:), &
881 temp2(:), vterm(:,:), &
882 fz(:), fdz(:), rcdz(:), &
883 mp_dtsec_sedimentation, &
885 dens2(:), rhoq2(:,:), &
886 cptot2(:), cvtot2(:), &
895 temp2(k) = rhoe2(k) / ( dens2(k) * cvtot2(k) )
899 flx_hydro(k) = flx_hydro(k) + mflux(k) * mp_rnstep_sedimentation
902 sflx_rain(i,j) = sflx_rain(i,j) - sflux(1) * mp_rnstep_sedimentation
903 sflx_snow(i,j) = sflx_snow(i,j) - sflux(2) * mp_rnstep_sedimentation
909 dens_t_mp(k,i,j) = ( dens2(k) -
dens(k,i,j) ) / dt_mp
913 cp_t = ( cptot2(k) - cptot(k,i,j) ) / dt_mp
914 cv_t = ( cvtot2(k) - cvtot(k,i,j) ) / dt_mp
915 rhoh_mp(k,i,j) = rhoh_mp(k,i,j) &
916 + ( rhoe2(k) - rhoe(k) ) / dt_mp &
917 - ( cp_t + log( pres(k,i,j) / pre00 ) * ( cvtot(k,i,j) / cptot(k,i,j) * cp_t - cv_t ) ) &
918 *
dens(k,i,j) * temp(k,i,j)
928 rhoq_t_mp(k,i,j,iq) = rhoq_t_mp(k,i,j,iq) &
929 + ( rhoq2(k,iq) -
dens(k,i,j) *
qtrc(k,i,j,iq) ) / dt_mp
935 dens(:,i,j),
momz(:,i,j),
u(:,i,j),
v(:,i,j), &
938 momz_t_mp(:,i,j), rhou_t_mp(:,i,j), rhov_t_mp(:,i,j) )
945 if ( hist_vterm_idx(iq) > 0 ) &
946 call file_history_put( hist_vterm_id(iq), vterm_hist(:,:,:,hist_vterm_idx(iq)) )
948 if (
allocated( vterm_hist ) )
deallocate( vterm_hist )
957 precip(i,j) = sflx_rain(i,j) + sflx_snow(i,j)
961 call file_history_in( sflx_rain(:,:),
'RAIN_MP',
'surface rain rate by MP',
'kg/m2/s', fill_halo=.true. )
962 call file_history_in( sflx_snow(:,:),
'SNOW_MP',
'surface snow rate by MP',
'kg/m2/s', fill_halo=.true. )
963 call file_history_in( precip(:,:),
'PREC_MP',
'surface precipitation rate by MP',
'kg/m2/s', fill_halo=.true. )
964 call file_history_in( evaporate(:,:,:),
'EVAPORATE',
'evaporated cloud number',
'num/m3/s', fill_halo=.true. )
966 call file_history_in( dens_t_mp(:,:,:),
'DENS_t_MP',
'tendency DENS in MP',
'kg/m3/s' , fill_halo=.true. )
967 call file_history_in( momz_t_mp(:,:,:),
'MOMZ_t_MP',
'tendency MOMZ in MP',
'kg/m2/s2' , fill_halo=.true. )
968 call file_history_in( rhou_t_mp(:,:,:),
'RHOU_t_MP',
'tendency RHOU in MP',
'kg/m2/s2' , fill_halo=.true. )
969 call file_history_in( rhov_t_mp(:,:,:),
'RHOV_t_MP',
'tendency RHOV in MP',
'kg/m2/s2' , fill_halo=.true. )
971 call file_history_in( rhoh_mp(:,:,:),
'RHOH_MP',
'diabatic heating rate in MP',
'J/m3/s', fill_halo=.true. )
973 call file_history_in( rhoq_t_mp(:,:,:,iq), trim(
tracer_name(iq))//
'_t_MP', &
974 'tendency rho*'//trim(
tracer_name(iq))//
' in MP',
'kg/m3/s', fill_halo=.true. )
986 dens_t(k,i,j) = dens_t(k,i,j) + dens_t_mp(k,i,j)
987 momz_t(k,i,j) = momz_t(k,i,j) + momz_t_mp(k,i,j)
988 rhou_t(k,i,j) = rhou_t(k,i,j) + rhou_t_mp(k,i,j)
989 rhov_t(k,i,j) = rhov_t(k,i,j) + rhov_t_mp(k,i,j)
991 rhoh(k,i,j) = rhoh(k,i,j) + rhoh_mp(k,i,j)
1002 rhoq_t(k,i,j,iq) = rhoq_t(k,i,j,iq) + rhoq_t_mp(k,i,j,iq)
1010 dens_t_mp(:,:,:),
'DENS_t_MP', &
1014 momz_t_mp(:,:,:),
'MOMZ_t_MP', &
1018 rhoh_mp(:,:,:),
'RHOH_MP', &
1028 rhoq_t_mp(:,:,:,iq), trim(
tracer_name(iq))//
'_t_MP', &
1038 KA, KS, KE, IA, IS, IE, JA, JS, JE, &
1058 integer,
intent(in) :: KA, KS, KE
1059 integer,
intent(in) :: IA, IS, IE
1060 integer,
intent(in) :: JA, JS, JE
1062 real(RP),
intent(in) :: QV (ka,ia,ja)
1063 real(RP),
intent(in) :: QHYD(ka,ia,ja,
n_hyd)
1065 real(RP),
intent(out) :: QTRC(ka,ia,ja,
qa_mp)
1067 real(RP),
intent(in),
optional :: QNUM(ka,ia,ja,
n_hyd)
1075 qv(:,:,:), qhyd(:,:,:,:), &
1084 qtrc(k,i,j,1) = qv(k,i,j)
1096 qtrc(k,i,j,1) = qv(k,i,j)
1108 qtrc(k,i,j,1) = qv(k,i,j)
1121 qtrc(k,i,j,1) = qv(k,i,j)
1130 log_error(
"ATMOS_PHY_MP_driver_qhyd2qtrc",*)
'ATMOS_PHY_MP_TYPE (', trim(
atmos_phy_mp_type),
') is not supported'
real(rp), dimension(:,:,:), allocatable, public dens_tp
character(len=h_short), dimension(qa_mp), parameter, public atmos_phy_mp_sn14_tracer_names
integer, parameter, public atmos_phy_mp_tomita08_nices
subroutine, public atmos_phy_mp_sn14_terminal_velocity(KA, KS, KE, DENS, TEMP, RHOQ, PRES, vterm)
ATMOS_PHY_MP_sn14_terminal_velocity Calculate terminal velocity.
real(rp), dimension(:,:,:), allocatable, target, public momz
module ATMOSPHERE / Physics Cloud Microphysics
integer, parameter, public atmos_phy_mp_tomita08_nwaters
character(len=h_mid), dimension(qa_mp), parameter, public atmos_phy_mp_tomita08_tracer_descriptions
real(rp), dimension(:,:,:), allocatable, target, public rhot
subroutine, public atmos_phy_mp_suzuki10_setup(KA, IA, JA)
Setup.
real(dp), public time_dtsec_atmos_phy_mp
time interval of physics(microphysics) [sec]
integer, public ia
of whole cells: x, local, with HALO
module Atmosphere / Physics Cloud Microphysics
subroutine, public atmos_phy_mp_suzuki10_terminal_velocity(KA, vterm_o)
get terminal velocity
character(len=h_mid), dimension(qa_mp), parameter, public atmos_phy_mp_kessler_tracer_descriptions
module atmosphere / reference state
subroutine, public atmos_phy_mp_tomita08_terminal_velocity(KA, KS, KE, DENS0, TEMP0, RHOQ0, vterm)
Lin-type cold rain microphysics (terminal velocity)
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
integer, parameter, public atmos_phy_mp_kessler_nices
subroutine, public atmos_phy_mp_tomita08_qhyd2qtrc(KA, KS, KE, IA, IS, IE, JA, JS, JE, Qe, QTRC)
get mass ratio of each category
subroutine, public atmos_phy_mp_kessler_qhyd2qtrc(KA, KS, KE, IA, IS, IE, JA, JS, JE, Qe, QTRC)
Calculate mass ratio of each category.
subroutine, public atmos_phy_mp_driver_calc_tendency(update_flag)
calculate tendency
subroutine, public atmos_phy_mp_sn14_setup(KA, IA, JA)
ATMOS_PHY_MP_sn14_setup setup.
real(rp), public atmos_grid_cartesc_real_totvolzxv
total volume (zxv, local) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_vol
control volume (zxy) [m3]
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
integer, public io_fid_conf
Config file ID.
subroutine, public file_history_reg(name, desc, unit, itemid, standard_name, ndims, dim_type, cell_measures, fill_halo)
Register/Append variable to history file.
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzxv
control volume (zxv) [m3]
real(rp), dimension(:,:,:), allocatable, target, public dens
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_momz_t
integer, public atmos_phy_mp_suzuki10_nwaters
real(rp), dimension(:,:,:), allocatable, public rhov_tp
character(len=h_short), dimension(qa_max), public tracer_name
logical, public statistics_checktotal
calc&report variable totals to logfile?
subroutine, public atmos_phy_mp_driver_adjustment
adjustment
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
subroutine, public atmos_phy_mp_sn14_tendency(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, W, QTRC, PRES, TEMP, Qdry, CPtot, CVtot, CCN, dt, cz, fz, RHOQ_t, RHOE_t, CPtot_t, CVtot_t, EVAPORATE)
ATMOS_PHY_MP_sn14_tendency calculate tendency.
character(len=h_short), dimension(qa_mp), parameter, public atmos_phy_mp_tomita08_tracer_units
character(len=h_short), dimension(qa_mp), parameter, public atmos_phy_mp_sn14_tracer_units
real(rp), public atmos_grid_cartesc_real_totvolzuy
total volume (zuy, local) [m3]
module ATMOSPHERE / Physics Cloud Microphysics - Common
integer, public is
start point of inner domain: x, local
integer, public ie
end point of inner domain: x, local
logical, public atmos_hydrometeor_dry
module atmosphere / hydrometeor
procedure(qhyd2qtrc), pointer, public atmos_phy_mp_user_qhyd2qtrc
module atmosphere / physics / microphysics / Kessler
subroutine, public atmos_phy_mp_driver_qhyd2qtrc(KA, KS, KE, IA, IS, IE, JA, JS, JE, QV, QHYD, QTRC, QNUM)
real(dp), public time_dtsec
time interval of model [sec]
module atmosphere / grid / cartesC index
integer, public ke
end point of inner domain: z, local
integer, parameter, public atmos_phy_mp_sn14_ntracers
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volwxy
control volume (wxy) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_refstate_dens
refernce density [kg/m3]
character(len=h_mid), dimension(qa_mp), parameter, public atmos_phy_mp_sn14_tracer_descriptions
subroutine, public atmos_phy_mp_kessler_terminal_velocity(KA, KS, KE, DENS0, RHOQ0, REFSTATE_dens_profile, vterm)
Kessler-type warm rain microphysics (terminal velocity)
real(rp), public const_pre00
pressure reference [Pa]
integer, parameter, public atmos_phy_mp_sn14_nwaters
subroutine, public atmos_phy_mp_kessler_setup
ATMOS_PHY_MP_kessler_setup Setup.
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_dens_t
integer, public je
end point of inner domain: y, local
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cdz
z-length of control volume [m]
real(rp), dimension(:,:,:), allocatable, target, public temp
character(len=h_short), dimension(qa_mp), parameter, public atmos_phy_mp_kessler_tracer_units
real(rp), dimension(:,:,:), allocatable, target, public w
character(len=h_short), dimension(qa_mp), parameter, public atmos_phy_mp_tomita08_tracer_names
subroutine, public atmos_phy_mp_precipitation_semilag(KA, KS, KE, QHA, QLA, QIA, TEMP, vterm, FZ, FDZ, RCDZ, dt, i, j, DENS, RHOQ, CPtot, CVtot, RHOE, mflx, sflx)
module atmosphere / grid / cartesC
integer, public ks
start point of inner domain: z, local
subroutine, public atmos_phy_mp_driver_tracer_setup
Config.
integer, public atmos_phy_mp_suzuki10_ntracers
real(rp), dimension(:,:,:), allocatable, target, public pott
subroutine, public atmos_phy_mp_driver_setup
Setup.
subroutine, public atmos_phy_mp_precipitation_momentum(KA, KS, KE, DENS, MOMZ, U, V, mflx, RCDZ, RFDZ, MOMZ_t, RHOU_t, RHOV_t)
real(rp), dimension(:,:,:), pointer, public dens_av
subroutine, public prc_abort
Abort Process.
logical, public atmos_sw_phy_mp
integer, public js
start point of inner domain: y, local
subroutine, public atmos_phy_mp_tomita08_setup(KA, KS, KE, IA, IS, IE, JA, JS, JE)
ATMOS_PHY_MP_tomita08_setup Setup.
integer, parameter, public atmos_phy_mp_sn14_nices
character(len=h_short), public atmos_phy_mp_type
character(len=h_mid), dimension(:), allocatable, public atmos_phy_mp_suzuki10_tracer_descriptions
subroutine, public atmos_phy_mp_sn14_qhyd2qtrc(KA, KS, KE, IA, IS, IE, JA, JS, JE, Qe, QTRC, QNUM)
real(rp), public atmos_grid_cartesc_real_totvolwxy
total volume (wxy, local) [m3]
real(rp), dimension(:,:,:), allocatable, target, public cvtot
subroutine, public atmos_phy_mp_kessler_adjustment(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, PRES, dt, TEMP, QTRC, CPtot, CVtot, RHOE_t, EVAPORATE)
ATMOS_PHY_MP_kessler_adjustment calculate state after saturation process.
character(len=h_short), public atmos_phy_precip_type
real(rp), public atmos_phy_mp_cldfrac_thleshold
real(rp), dimension(:,:,:), allocatable, target, public v
subroutine, public atmos_phy_mp_suzuki10_qhyd2qtrc(KA, KS, KE, IA, IS, IE, JA, JS, JE, Qe, QTRC, QNUM)
get mass ratio of each category
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
character(len=h_short), dimension(:), allocatable, public atmos_phy_mp_suzuki10_tracer_units
real(rp), dimension(:,:,:), allocatable, target, public u
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
real(rp), dimension(:,:,:), allocatable, public momz_tp
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
subroutine, public atmos_hydrometeor_regist(NL, NI, NAME, DESC, UNIT, Q0, ADVC)
ATMOS_HYDROMETEOR_regist Regist tracer.
real(rp), public const_eps
small number
subroutine, public atmos_phy_mp_precipitation_upwind(KA, KS, KE, QHA, QLA, QIA, TEMP, vterm, FDZ, RCDZ, dt, i, j, DENS, RHOQ, CPtot, CVtot, RHOE, mflx, sflx)
integer, public atmos_phy_mp_suzuki10_nices
module Atmosphere GRID CartesC Real(real space)
character(len=h_short), dimension(:), allocatable, public atmos_phy_mp_suzuki10_tracer_names
character(len=h_short), dimension(qa_mp), parameter, public atmos_phy_mp_kessler_tracer_names
real(rp), dimension(:,:,:), allocatable, public rhou_tp
integer, public ka
of whole cells: z, local, with HALO
real(rp), dimension(:,:,:), pointer, public momz_av
subroutine, public atmos_phy_mp_tomita08_adjustment(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, PRES, CCN, dt, TEMP, QTRC, CPtot, CVtot, RHOE_t, EVAPORATE)
ATMOS_PHY_MP_tomita08_adjustment calculate state after saturation process.
real(rp), dimension(:,:,:), allocatable, target, public cptot
subroutine, public tracer_regist(QS, NQ, NAME, DESC, UNIT, CV, CP, R, ADVC, MASS)
Regist tracer.
subroutine, public atmos_phy_mp_suzuki10_tracer_setup
Config.
integer, parameter, public n_hyd
subroutine, public monitor_reg(name, desc, unit, itemid, ndims, dim_type, isflux)
Search existing item, or matching check between requested and registered item.
module atmosphere / physics / microphysics / Tomita08
module Spectran Bin Microphysics
module atmosphere / physics / cloud microphysics
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
integer, public atmos_phy_mp_suzuki10_nccn
integer, parameter, public rp
integer, parameter, public atmos_phy_mp_tomita08_ntracers
module ATMOSPHERE / Physics Aerosol Microphysics
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzuy
control volume (zuy) [m3]
integer, public kijmax
of computational cells: z*x*y
subroutine, public atmos_phy_mp_suzuki10_tendency(KA, KS, KE, IA, IS, IE, JA, JS, JE, KIJMAX, dt, DENS, PRES, TEMP, QTRC, QDRY, CPtot, CVtot, CCN, RHOQ_t, RHOE_t, CPtot_t, CVtot_t, EVAPORATE)
Cloud Microphysics.
integer, parameter, public atmos_phy_mp_kessler_nwaters
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
subroutine, public atmos_phy_mp_negative_fixer(KA, KS, KE, IA, IS, IE, JA, JS, JE, QLA, QIA, limit_negative, DENS, TEMP, CVtot, CPtot, QV, QTRC, RHOH, DENS_diff, ENGI_diff)
ATMOS_PHY_MP_negative_fixer negative fixer.
integer, parameter, public atmos_phy_mp_kessler_ntracers
real(rp), dimension(:,:,:), allocatable, public atmos_phy_ae_ccn_t