SCALE-RM
Functions/Subroutines | Variables
scale_atmos_phy_mp_kessler Module Reference

module ATMOSPHERE / Physics Cloud Microphysics More...

Functions/Subroutines

subroutine, public atmos_phy_mp_kessler_config (MP_TYPE, QA, QS)
 Setup. More...
 
subroutine, public atmos_phy_mp_kessler_setup
 Setup. More...
 
subroutine, public atmos_phy_mp_kessler (DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
 Cloud Microphysics. More...
 
subroutine, public atmos_phy_mp_kessler_cloudfraction (cldfrac, QTRC, mask_criterion)
 Calculate Cloud Fraction. More...
 
subroutine, public atmos_phy_mp_kessler_effectiveradius (Re, QTRC0, DENS0, TEMP0)
 Calculate Effective Radius. More...
 
subroutine, public atmos_phy_mp_kessler_mixingratio (Qe, QTRC0)
 Calculate mixing ratio of each category. More...
 

Variables

integer, parameter, public qa_mp = 3
 
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_kessler_name
 
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_kessler_desc
 
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_kessler_unit
 
real(rp), dimension(n_hyd), target, public atmos_phy_mp_kessler_dens
 

Detailed Description

module ATMOSPHERE / Physics Cloud Microphysics

Description
Cloud Microphysics by Kessler-type parametarization Reference: Kessler(1969) Klemp and Wilhelmson(1978)
Author
Team SCALE
History
  • 2012-01-14 (Y.Miyamoto) [new]
  • 2012-03-23 (H.Yashiro) [mod] Explicit index parameter inclusion
  • 2012-12-23 (H.Yashiro) [mod] Reconstruction
  • 2015-09-08 (Y.Sato) [add] Add evaporated cloud number concentration
NAMELIST
  • PARAM_ATMOS_PHY_MP
    nametypedefault valuecomment
    MP_DOPRECIPITATION logical .true. apply sedimentation (precipitation)?
    MP_DONEGATIVE_FIXER logical .true. apply negative fixer?
    MP_LIMIT_NEGATIVE real(RP) 1.0_RP Abort if abs(fixed negative vaue) > abs(MP_limit_negative)
    MP_NTMAX_SEDIMENTATION integer 1 number of time step for sedimentation
    MP_COUPLE_AEROSOL logical .false. Consider CCN effect ?

History Output
namedescriptionunitvariable
Pcsat QC production term by satadjust kg/kg/s QC_t_sat
Vterm_QR terminal velocity of QR m/s vterm
pflux_QR precipitation flux of QR kg/m2/s FLX_hydro

Function/Subroutine Documentation

◆ atmos_phy_mp_kessler_config()

subroutine, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_config ( character(len=*), intent(in)  MP_TYPE,
integer, intent(out)  QA,
integer, intent(out)  QS 
)

Setup.

Definition at line 117 of file scale_atmos_phy_mp_kessler.F90.

References scale_atmos_hydrometeor::atmos_hydrometeor_regist(), atmos_phy_mp_kessler_desc, atmos_phy_mp_kessler_name, atmos_phy_mp_kessler_unit, scale_stdio::io_fid_log, scale_stdio::io_l, scale_process::prc_mpistop(), and qa_mp.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config().

117  use scale_process, only: &
119  use scale_atmos_hydrometeor, only: &
121  implicit none
122 
123  character(len=*), intent(in) :: MP_TYPE
124  integer, intent(out) :: QA
125  integer, intent(out) :: QS
126  !---------------------------------------------------------------------------
127 
128  if( io_l ) write(io_fid_log,*)
129  if( io_l ) write(io_fid_log,*) '++++++ Module[Cloud Microphysics Tracer] / Categ[ATMOS PHYSICS] / Origin[SCALElib]'
130  if( io_l ) write(io_fid_log,*) '*** Tracers for KESSLER-type 1-moment bulk 3 category'
131 
132  if ( mp_type /= 'KESSLER' ) then
133  write(*,*) 'xxx ATMOS_PHY_MP_TYPE is not KESSLER. Check!'
134  call prc_mpistop
135  endif
136 
137  call atmos_hydrometeor_regist( qs_mp, & ! [OUT]
138  1, 2, 0, & ! [IN]
139  atmos_phy_mp_kessler_name, & ! [IN]
140  atmos_phy_mp_kessler_desc, & ! [IN]
142 
143  qa = qa_mp
144  qs = qs_mp
145  qe_mp = qs_mp + qa_mp - 1
146 
147  i_qv = qs
148  i_qc = qs + i_mp_qc
149  i_qr = qs + i_mp_qr
150 
151  return
subroutine, public prc_mpistop
Abort MPI.
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_kessler_name
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_kessler_unit
module PROCESS
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_kessler_desc
subroutine, public atmos_hydrometeor_regist(Q0, NV, NL, NI, NAME, DESC, UNIT, ADVC)
Regist tracer.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_mp_kessler_setup()

subroutine, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_setup ( )

Setup.

Definition at line 157 of file scale_atmos_phy_mp_kessler.F90.

References atmos_phy_mp_kessler_dens, scale_const::const_dwatr, scale_const::const_undef, scale_grid::grid_cdz, scale_atmos_hydrometeor::i_hc, scale_atmos_hydrometeor::i_hr, scale_stdio::io_fid_conf, scale_stdio::io_fid_log, scale_stdio::io_fid_nml, scale_stdio::io_l, scale_stdio::io_nml, scale_grid_index::ka, scale_process::prc_mpistop(), and scale_time::time_dtsec_atmos_phy_mp.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config().

157  use scale_process, only: &
159  use scale_const, only: &
160  const_undef, &
162  use scale_time, only: &
164  use scale_grid, only: &
165  cdz => grid_cdz
166  implicit none
167 
168  real(RP), parameter :: max_term_vel = 10.0_rp !-- terminal velocity for calculate dt of sedimentation
169  integer :: nstep_max
170 
171  namelist / param_atmos_phy_mp / &
172  mp_doprecipitation, &
173  mp_donegative_fixer, &
174  mp_limit_negative, &
175  mp_ntmax_sedimentation, &
176  mp_couple_aerosol
177 
178  integer :: ierr
179 
180  !---------------------------------------------------------------------------
181 
182  if( io_l ) write(io_fid_log,*)
183  if( io_l ) write(io_fid_log,*) '++++++ Module[Cloud Microphysics] / Categ[ATMOS PHYSICS] / Origin[SCALElib]'
184  if( io_l ) write(io_fid_log,*) '*** KESSLER-type 1-moment bulk 3 category'
185 
186  !--- read namelist
187  rewind(io_fid_conf)
188  read(io_fid_conf,nml=param_atmos_phy_mp,iostat=ierr)
189  if( ierr < 0 ) then !--- missing
190  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
191  elseif( ierr > 0 ) then !--- fatal error
192  write(*,*) 'xxx Not appropriate names in namelist PARAM_ATMOS_PHY_MP. Check!'
193  call prc_mpistop
194  endif
195  if( io_nml ) write(io_fid_nml,nml=param_atmos_phy_mp)
196 
197  if( mp_couple_aerosol ) then
198  write(*,*) 'xxx MP_aerosol_couple should be .false. for KESSLER type MP!'
199  call prc_mpistop
200  endif
201 
202  if( io_l ) write(io_fid_log,*)
203  if( io_l ) write(io_fid_log,*) '*** Enable negative fixer? : ', mp_donegative_fixer
204  if( io_l ) write(io_fid_log,*) '*** Value limit of negative fixer (abs) : ', abs(mp_limit_negative)
205  if( io_l ) write(io_fid_log,*) '*** Enable sedimentation (precipitation)? : ', mp_doprecipitation
206 
207  nstep_max = int( ( time_dtsec_atmos_phy_mp * max_term_vel ) / minval( cdz ) )
208  mp_ntmax_sedimentation = max( mp_ntmax_sedimentation, nstep_max )
209 
210  mp_nstep_sedimentation = mp_ntmax_sedimentation
211  mp_rnstep_sedimentation = 1.0_rp / real(MP_ntmax_sedimentation,kind=rp)
212  mp_dtsec_sedimentation = time_dtsec_atmos_phy_mp * mp_rnstep_sedimentation
213 
214  if( io_l ) write(io_fid_log,*) '*** Timestep of sedimentation is divided into : ', mp_ntmax_sedimentation, 'step'
215  if( io_l ) write(io_fid_log,*) '*** DT of sedimentation : ', mp_dtsec_sedimentation, '[s]'
216 
220 
221  allocate( factor_vterm(ka) )
222 
223  return
subroutine, public prc_mpistop
Abort MPI.
real(rp), parameter, public const_dwatr
density of water [kg/m3]
Definition: scale_const.F90:84
real(dp), public time_dtsec_atmos_phy_mp
time interval of physics(microphysics) [sec]
Definition: scale_time.F90:41
real(rp), public const_undef
Definition: scale_const.F90:43
real(rp), dimension(n_hyd), target, public atmos_phy_mp_kessler_dens
module TIME
Definition: scale_time.F90:15
module PROCESS
module CONSTANT
Definition: scale_const.F90:14
module GRID (cartesian)
real(rp), dimension(:), allocatable, public grid_cdz
z-length of control volume [m]
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_mp_kessler()

subroutine, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler ( real(rp), dimension (ka,ia,ja), intent(inout)  DENS,
real(rp), dimension (ka,ia,ja), intent(inout)  MOMZ,
real(rp), dimension (ka,ia,ja), intent(inout)  MOMX,
real(rp), dimension (ka,ia,ja), intent(inout)  MOMY,
real(rp), dimension (ka,ia,ja), intent(inout)  RHOT,
real(rp), dimension (ka,ia,ja,qa), intent(inout)  QTRC,
real(rp), dimension (ka,ia,ja), intent(in)  CCN,
real(rp), dimension(ka,ia,ja), intent(out)  EVAPORATE,
real(rp), dimension(ia,ja), intent(out)  SFLX_rain,
real(rp), dimension(ia,ja), intent(out)  SFLX_snow 
)

Cloud Microphysics.

Definition at line 239 of file scale_atmos_phy_mp_kessler.F90.

References scale_atmos_phy_mp_common::atmos_phy_mp_negative_fixer(), scale_atmos_phy_mp_common::atmos_phy_mp_precipitation(), scale_atmos_phy_mp_common::atmos_phy_mp_saturation_adjustment(), scale_atmos_refstate::atmos_refstate_dens, scale_comm::comm_horizontal_mean(), scale_const::const_dwatr, scale_const::const_pi, scale_atmos_hydrometeor::i_qc, scale_atmos_hydrometeor::i_qr, scale_atmos_hydrometeor::i_qv, scale_grid_index::ie, scale_stdio::io_fid_log, scale_stdio::io_l, scale_grid_index::is, scale_grid_index::je, scale_grid_index::js, scale_grid_index::ke, scale_grid_index::ks, scale_atmos_hydrometeor::lhv, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), scale_tracer::qa, qa_mp, scale_time::time_dtsec_atmos_phy_mp, scale_tracer::tracer_cv, scale_tracer::tracer_mass, and scale_tracer::tracer_r.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config().

239  use scale_grid_index
240  use scale_const, only: &
241  dwatr => const_dwatr, &
242  pi => const_pi
243  use scale_comm, only: &
245  use scale_time, only: &
246  dt_mp => time_dtsec_atmos_phy_mp
247  use scale_history, only: &
248  hist_in
249  use scale_tracer, only: &
250  qa, &
251  tracer_r, &
252  tracer_cv, &
254  use scale_atmos_thermodyn, only: &
255  thermodyn_rhoe => atmos_thermodyn_rhoe, &
256  thermodyn_rhot => atmos_thermodyn_rhot, &
257  thermodyn_temp_pres_e => atmos_thermodyn_temp_pres_e
258  use scale_atmos_phy_mp_common, only: &
259  mp_negative_fixer => atmos_phy_mp_negative_fixer, &
260  mp_precipitation => atmos_phy_mp_precipitation, &
261  mp_saturation_adjustment => atmos_phy_mp_saturation_adjustment
262  implicit none
263 
264  real(RP), intent(inout) :: DENS (KA,IA,JA)
265  real(RP), intent(inout) :: MOMZ (KA,IA,JA)
266  real(RP), intent(inout) :: MOMX (KA,IA,JA)
267  real(RP), intent(inout) :: MOMY (KA,IA,JA)
268  real(RP), intent(inout) :: RHOT (KA,IA,JA)
269  real(RP), intent(inout) :: QTRC (KA,IA,JA,QA)
270  real(RP), intent(in) :: CCN (KA,IA,JA)
271  real(RP), intent(out) :: EVAPORATE(KA,IA,JA) !--- number of evaporated cloud [/m3]
272  real(RP), intent(out) :: SFLX_rain(IA,JA)
273  real(RP), intent(out) :: SFLX_snow(IA,JA)
274 
275  real(RP) :: RHOE_t (KA,IA,JA)
276  real(RP) :: QTRC_t (KA,IA,JA,QA)
277  real(RP) :: RHOE (KA,IA,JA)
278  real(RP) :: temp (KA,IA,JA)
279  real(RP) :: pres (KA,IA,JA)
280 
281  real(RP) :: vterm (KA,IA,JA,QA_MP-1) ! terminal velocity of each tracer [m/s]
282  real(RP) :: pflux (KA,IA,JA,QA_MP-1) ! precipitation flux of each tracer [kg/m2/s]
283  real(RP) :: FLX_hydro(KA,IA,JA,QA_MP-1)
284  real(RP) :: QC_t_sat (KA,IA,JA)
285  real(RP) :: rho_prof (KA) ! averaged profile of rho
286 
287  integer :: step
288  integer :: k, i, j
289  !---------------------------------------------------------------------------
290 
291  if( io_l ) write(io_fid_log,*) '*** Atmos physics step: Cloud microphysics(kessler)'
292 
293  if ( first ) then
294  ! Calculate collection factor for terminal velocity of QR
295  call comm_horizontal_mean( rho_prof(:), dens(:,:,:) )
296  rho_prof(:) = rho_prof(:) * 1.e-3_rp ! [kg/m3]->[g/cc]
297 
298  do k = ks, ke
299  factor_vterm(k) = sqrt( rho_prof(ks)/rho_prof(k) )
300  enddo
301  first = .false.
302  endif
303 
304  if ( mp_donegative_fixer ) then
305  call mp_negative_fixer( dens(:,:,:), & ! [INOUT]
306  rhot(:,:,:), & ! [INOUT]
307  qtrc(:,:,:,:), & ! [INOUT]
308  i_qv, & ! [IN]
309  mp_limit_negative ) ! [IN]
310  endif
311 
312  call thermodyn_rhoe( rhoe(:,:,:), & ! [OUT]
313  rhot(:,:,:), & ! [IN]
314  qtrc(:,:,:,:), & ! [IN]
315  tracer_cv(:), & ! [IN]
316  tracer_r(:), & ! [IN]
317  tracer_mass(:) ) ! [IN]
318 
319  !##### MP Main #####
320  call mp_kessler( rhoe_t(:,:,:), & ! [OUT]
321  qtrc_t(:,:,:,:), & ! [OUT]
322  rhoe(:,:,:), & ! [INOUT]
323  qtrc(:,:,:,:), & ! [INOUT]
324  dens(:,:,:) ) ! [IN]
325 
326  vterm(:,:,:,:) = 0.0_rp
327  flx_hydro(:,:,:,:) = 0.0_rp
328 
329  if ( mp_doprecipitation ) then
330 
331  do step = 1, mp_nstep_sedimentation
332 
333  call thermodyn_temp_pres_e( temp(:,:,:), & ! [OUT]
334  pres(:,:,:), & ! [OUT]
335  dens(:,:,:), & ! [IN]
336  rhoe(:,:,:), & ! [IN]
337  qtrc(:,:,:,:), & ! [IN]
338  tracer_cv(:), & ! [IN]
339  tracer_r(:), & ! [IN]
340  tracer_mass(:) ) ! [IN]
341 
342  call mp_kessler_vterm( vterm(:,:,:,:), & ! [OUT]
343  dens(:,:,:), & ! [IN]
344  qtrc(:,:,:,:) ) ! [IN]
345 
346  call mp_precipitation( qa_mp, & ! [IN]
347  qs_mp, & ! [IN]
348  pflux(:,:,:,:), & ! [OUT]
349  vterm(:,:,:,:), & ! [INOUT]
350  dens(:,:,:), & ! [INOUT]
351  momz(:,:,:), & ! [INOUT]
352  momx(:,:,:), & ! [INOUT]
353  momy(:,:,:), & ! [INOUT]
354  rhoe(:,:,:), & ! [INOUT]
355  qtrc(:,:,:,:), & ! [INOUT]
356  temp(:,:,:), & ! [IN]
357  tracer_cv(:), & ! [IN]
358  mp_dtsec_sedimentation ) ! [IN]
359 
360  do j = js, je
361  do i = is, ie
362  do k = ks-1, ke-1
363  flx_hydro(k,i,j,i_mp_qr) = flx_hydro(k,i,j,i_mp_qr) + pflux(k,i,j,i_mp_qr) * mp_rnstep_sedimentation
364  enddo
365  enddo
366  enddo
367 
368  enddo
369 
370  endif
371 
372  call hist_in( flx_hydro(:,:,:,i_mp_qr), 'pflux_QR', 'precipitation flux of QR', 'kg/m2/s', nohalo=.true. )
373 
374  call hist_in( vterm(:,:,:,i_mp_qr), 'Vterm_QR', 'terminal velocity of QR', 'm/s' )
375 
376  do j = js, je
377  do i = is, ie
378  do k = ks, ke
379  qc_t_sat(k,i,j) = qtrc(k,i,j,i_qc)
380  enddo
381  enddo
382  enddo
383 
384  call mp_saturation_adjustment( rhoe_t(:,:,:), & ! [INOUT]
385  qtrc_t(:,:,:,:), & ! [INOUT]
386  rhoe(:,:,:), & ! [INOUT]
387  qtrc(:,:,:,:), & ! [INOUT]
388  dens(:,:,:), & ! [IN]
389  i_qv, & ! [IN]
390  i_qc, & ! [IN]
391  -1, & ! [IN]
392  flag_liquid = .true. ) ! [IN]
393 
394  do j = js, je
395  do i = is, ie
396  do k = ks, ke
397  qc_t_sat(k,i,j) = ( qtrc(k,i,j,i_qc) - qc_t_sat(k,i,j) ) / dt_mp
398  enddo
399  enddo
400  enddo
401 
402  call hist_in( qc_t_sat(:,:,:), 'Pcsat', 'QC production term by satadjust', 'kg/kg/s' )
403 
404  do j = js, je
405  do i = is, ie
406  do k = ks, ke
407  evaporate(k,i,j) = max( -qc_t_sat(k,i,j), 0.0_rp ) ! if negative, condensation
408  evaporate(k,i,j) = evaporate(k,i,j) * dens(k,i,j) / (4.0_rp/3.0_rp*pi*dwatr*re_qc**3) ! mass -> number (assuming constant particle radius as re_qc)
409  enddo
410  enddo
411  enddo
412 
413  !##### END MP Main #####
414 
415  call thermodyn_rhot( rhot(:,:,:), & ! [OUT]
416  rhoe(:,:,:), & ! [IN]
417  qtrc(:,:,:,:), & ! [IN]
418  tracer_cv(:), & ! [IN]
419  tracer_r(:), & ! [IN]
420  tracer_mass(:) ) ! [IN]
421 
422  if ( mp_donegative_fixer ) then
423  call mp_negative_fixer( dens(:,:,:), & ! [INOUT]
424  rhot(:,:,:), & ! [INOUT]
425  qtrc(:,:,:,:), & ! [INOUT]
426  i_qv, & ! [IN]
427  mp_limit_negative ) ! [IN]
428  endif
429 
430  do j = js, je
431  do i = is, ie
432  sflx_rain(i,j) = - flx_hydro(ks-1,i,j,i_mp_qr)
433  sflx_snow(i,j) = 0.0_rp
434  enddo
435  enddo
436 
437  return
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
real(rp), parameter, public const_dwatr
density of water [kg/m3]
Definition: scale_const.F90:84
subroutine, public atmos_phy_mp_negative_fixer(DENS, RHOT, QTRC, I_QV, limit_negative)
Negative fixer.
real(rp), dimension(qa_max), public tracer_r
real(dp), public time_dtsec_atmos_phy_mp
time interval of physics(microphysics) [sec]
Definition: scale_time.F90:41
integer, public ke
end point of inner domain: z, local
real(rp), dimension(qa_max), public tracer_cv
module ATMOSPHERE / Physics Cloud Microphysics - Common
module grid index
module TRACER
subroutine, public comm_horizontal_mean(varmean, var)
calculate horizontal mean (global total with communication)
Definition: scale_comm.F90:482
subroutine, public atmos_phy_mp_saturation_adjustment(RHOE_t, QTRC_t, RHOE0, QTRC0, DENS0, I_QV, I_QC, I_QI, flag_liquid)
Saturation adjustment.
module COMMUNICATION
Definition: scale_comm.F90:23
integer, public js
start point of inner domain: y, local
module TIME
Definition: scale_time.F90:15
module CONSTANT
Definition: scale_const.F90:14
integer, public ks
start point of inner domain: z, local
integer, public ie
end point of inner domain: x, local
module ATMOSPHERE / Thermodynamics
module HISTORY
real(rp), public const_pi
pi
Definition: scale_const.F90:34
subroutine, public atmos_phy_mp_precipitation(QA_MP, QS_MP, qflx, vterm, DENS, MOMZ, MOMX, MOMY, RHOE, QTRC, temp, CVq, dt, vt_fixed)
precipitation transport
real(rp), dimension(qa_max), public tracer_mass
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_mp_kessler_cloudfraction()

subroutine, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_cloudfraction ( real(rp), dimension(ka,ia,ja), intent(out)  cldfrac,
real(rp), dimension (ka,ia,ja,qa), intent(in)  QTRC,
real(rp), intent(in)  mask_criterion 
)

Calculate Cloud Fraction.

Definition at line 639 of file scale_atmos_phy_mp_kessler.F90.

References scale_grid_index::ie, scale_grid_index::is, scale_grid_index::je, scale_grid_index::js, scale_grid_index::ke, scale_grid_index::ks, and scale_tracer::qa.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config().

639  use scale_grid_index
640  use scale_tracer, only: &
641  qa
642  implicit none
643 
644  real(RP), intent(out) :: cldfrac(KA,IA,JA)
645  real(RP), intent(in) :: QTRC (KA,IA,JA,QA)
646  real(RP), intent(in) :: mask_criterion
647 
648  real(RP) :: qhydro
649  integer :: k, i, j, iq
650  !---------------------------------------------------------------------------
651 
652  do j = js, je
653  do i = is, ie
654  do k = ks, ke
655  qhydro = 0.0_rp
656  do iq = qs_mp+1, qe_mp
657  qhydro = qhydro + qtrc(k,i,j,iq)
658  enddo
659  cldfrac(k,i,j) = 0.5_rp + sign(0.5_rp,qhydro-mask_criterion)
660  enddo
661  enddo
662  enddo
663 
664  return
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
integer, public ke
end point of inner domain: z, local
module grid index
module TRACER
integer, public js
start point of inner domain: y, local
integer, public ks
start point of inner domain: z, local
integer, public ie
end point of inner domain: x, local
Here is the caller graph for this function:

◆ atmos_phy_mp_kessler_effectiveradius()

subroutine, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_effectiveradius ( real(rp), dimension (ka,ia,ja,n_hyd), intent(out)  Re,
real(rp), dimension(ka,ia,ja,qa), intent(in)  QTRC0,
real(rp), dimension(ka,ia,ja), intent(in)  DENS0,
real(rp), dimension(ka,ia,ja), intent(in)  TEMP0 
)

Calculate Effective Radius.

Definition at line 674 of file scale_atmos_phy_mp_kessler.F90.

References scale_atmos_hydrometeor::n_hyd, and scale_tracer::qa.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config().

674  use scale_grid_index
675  use scale_tracer, only: &
676  qa
677  use scale_atmos_hydrometeor, only: &
678  n_hyd
679  implicit none
680  real(RP), intent(out) :: Re (KA,IA,JA,N_HYD) ! effective radius [cm]
681  real(RP), intent(in) :: QTRC0(KA,IA,JA,QA) ! tracer mass concentration [kg/kg]
682  real(RP), intent(in) :: DENS0(KA,IA,JA) ! density [kg/m3]
683  real(RP), intent(in) :: TEMP0(KA,IA,JA) ! temperature [K]
684 
685  real(RP), parameter :: um2cm = 100.0_rp
686 
687  integer :: ih
688  !---------------------------------------------------------------------------
689 
690  do ih = 1, n_hyd
691  if ( ih == i_hc ) then
692  re(:,:,:,ih) = 8.e-6_rp * um2cm
693  else if ( ih == i_hr ) then
694  re(:,:,:,ih) = 100.e-6_rp * um2cm
695  else
696  re(:,:,:,ih) = 0.0_rp
697  end if
698  end do
699 
700  return
module grid index
module TRACER
Here is the caller graph for this function:

◆ atmos_phy_mp_kessler_mixingratio()

subroutine, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_mixingratio ( real(rp), dimension (ka,ia,ja,n_hyd), intent(out)  Qe,
real(rp), dimension(ka,ia,ja,qa), intent(in)  QTRC0 
)

Calculate mixing ratio of each category.

Definition at line 708 of file scale_atmos_phy_mp_kessler.F90.

References scale_atmos_hydrometeor::n_hyd, and scale_tracer::qa.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config().

708  use scale_grid_index
709  use scale_tracer, only: &
710  qa
711  use scale_atmos_hydrometeor, only: &
712  n_hyd
713  implicit none
714  real(RP), intent(out) :: Qe (KA,IA,JA,N_HYD) ! mixing ratio of each cateory [kg/kg]
715  real(RP), intent(in) :: QTRC0(KA,IA,JA,QA) ! tracer mass concentration [kg/kg]
716 
717  integer :: ih
718  !---------------------------------------------------------------------------
719 
720  do ih = 1, n_hyd
721  if ( ih == i_hc ) then
722  qe(:,:,:,ih) = qtrc0(:,:,:,i_qc)
723  else if ( ih == i_hr ) then
724  qe(:,:,:,ih) = qtrc0(:,:,:,i_qr)
725  else
726  qe(:,:,:,ih) = 0.0_rp
727  end if
728  end do
729 
730  return
module grid index
module TRACER
Here is the caller graph for this function:

Variable Documentation

◆ qa_mp

integer, parameter, public scale_atmos_phy_mp_kessler::qa_mp = 3

Definition at line 55 of file scale_atmos_phy_mp_kessler.F90.

Referenced by atmos_phy_mp_kessler(), and atmos_phy_mp_kessler_config().

55  integer, public, parameter :: QA_MP = 3

◆ atmos_phy_mp_kessler_name

character(len=h_short), dimension(qa_mp), target, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_name

Definition at line 57 of file scale_atmos_phy_mp_kessler.F90.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config(), and atmos_phy_mp_kessler_config().

57  character(len=H_SHORT), public, target :: ATMOS_PHY_MP_kessler_NAME(QA_MP)

◆ atmos_phy_mp_kessler_desc

character(len=h_mid), dimension(qa_mp), target, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_desc

Definition at line 58 of file scale_atmos_phy_mp_kessler.F90.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config(), and atmos_phy_mp_kessler_config().

58  character(len=H_MID) , public, target :: ATMOS_PHY_MP_kessler_DESC(QA_MP)

◆ atmos_phy_mp_kessler_unit

character(len=h_short), dimension(qa_mp), target, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_unit

Definition at line 59 of file scale_atmos_phy_mp_kessler.F90.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config(), and atmos_phy_mp_kessler_config().

59  character(len=H_SHORT), public, target :: ATMOS_PHY_MP_kessler_UNIT(QA_MP)

◆ atmos_phy_mp_kessler_dens

real(rp), dimension(n_hyd), target, public scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_dens

Definition at line 61 of file scale_atmos_phy_mp_kessler.F90.

Referenced by scale_atmos_phy_mp::atmos_phy_mp_config(), and atmos_phy_mp_kessler_setup().

61  real(RP), public, target :: ATMOS_PHY_MP_kessler_DENS(N_HYD) ! hydrometeor density [kg/m3]=[g/L]