SCALE-RM
Data Types | Functions/Subroutines | Variables
scale_atmos_phy_mp Module Reference

module ATMOSPHERE / Physics Cloud Microphysics More...

Data Types

interface  er
 
interface  mr
 
interface  su
 

Functions/Subroutines

subroutine, public atmos_phy_mp_config (MP_TYPE)
 Setup Cloud Microphysics. More...
 

Variables

procedure(mp), pointer, public atmos_phy_mp => NULL()
 
procedure(su), pointer, public atmos_phy_mp_setup => NULL()
 
procedure(cf), pointer, public atmos_phy_mp_cloudfraction => NULL()
 
procedure(er), pointer, public atmos_phy_mp_effectiveradius => NULL()
 
procedure(mr), pointer, public atmos_phy_mp_mixingratio => NULL()
 
integer, public qa_mp = 0
 
integer, public qs_mp = -1
 
integer, public qe_mp = -1
 
character(len=h_short), dimension(:), pointer, public atmos_phy_mp_name
 
character(len=h_mid), dimension(:), pointer, public atmos_phy_mp_desc
 
character(len=h_short), dimension(:), pointer, public atmos_phy_mp_unit
 
real(rp), dimension(:), pointer, public atmos_phy_mp_dens
 

Detailed Description

module ATMOSPHERE / Physics Cloud Microphysics

Description
Cloud Microphysics
Author
Team SCALE
History
  • 2013-12-06 (S.Nishizawa) [new]
  • 2015-09-08 (Y.Sato) [mod] Add evaporated cloud number concentration

Function/Subroutine Documentation

◆ atmos_phy_mp_config()

subroutine, public scale_atmos_phy_mp::atmos_phy_mp_config ( character(len=*), intent(in)  MP_TYPE)

Setup Cloud Microphysics.

Definition at line 136 of file scale_atmos_phy_mp.F90.

References atmos_phy_mp, atmos_phy_mp_cloudfraction, atmos_phy_mp_dens, atmos_phy_mp_desc, scale_atmos_phy_mp_dry::atmos_phy_mp_dry(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_cloudfraction(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_config(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_dens, scale_atmos_phy_mp_dry::atmos_phy_mp_dry_desc, scale_atmos_phy_mp_dry::atmos_phy_mp_dry_effectiveradius(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_mixingratio(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_name, scale_atmos_phy_mp_dry::atmos_phy_mp_dry_setup(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_unit, atmos_phy_mp_effectiveradius, scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_cloudfraction(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_config(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_dens, scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_desc, scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_effectiveradius(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_mixingratio(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_name, scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_setup(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_unit, atmos_phy_mp_mixingratio, atmos_phy_mp_name, scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_cloudfraction(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_config(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_dens, scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_desc, scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_effectiveradius(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_mixingratio(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_name, scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_setup(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_unit, atmos_phy_mp_setup, scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_cloudfraction(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_config(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_dens, scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_desc, scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_effectiveradius(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_mixingratio(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_name, scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_setup(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_unit, scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_cloudfraction(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_config(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_dens, scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_desc, scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_effectiveradius(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_mixingratio(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_name, scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_setup(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_unit, scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_cloudfraction(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_config(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_dens, scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_desc, scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_effectiveradius(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_mixingratio(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_name, scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_setup(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_unit, atmos_phy_mp_unit, scale_stdio::io_fid_log, scale_stdio::io_l, scale_process::prc_mpistop(), qa_mp, qe_mp, and qs_mp.

Referenced by mod_atmos_phy_mp_driver::atmos_phy_mp_driver_config().

136  use scale_process, only: &
138  use scale_atmos_phy_mp_dry, only: &
149  use scale_atmos_phy_mp_kessler, only: &
160  use scale_atmos_phy_mp_tomita08, only: &
171  use scale_atmos_phy_mp_sn14, only: &
182  use scale_atmos_phy_mp_suzuki10, only: &
193  use scale_atmos_phy_mp_sdm, only: &
204  implicit none
205 
206  character(len=*), intent(in) :: MP_TYPE
207  !---------------------------------------------------------------------------
208 
209  if( io_l ) write(io_fid_log,*) '*** => ', trim(mp_type), ' is selected.'
210 
211  select case( mp_type )
212  case( 'DRY' )
214  mp_type, & ! (in)
215  qa_mp, qs_mp ) ! (out)
216  atmos_phy_mp => atmos_phy_mp_dry
217  atmos_phy_mp_setup => atmos_phy_mp_dry_setup
218  atmos_phy_mp_cloudfraction => atmos_phy_mp_dry_cloudfraction
219  atmos_phy_mp_effectiveradius => atmos_phy_mp_dry_effectiveradius
220  atmos_phy_mp_mixingratio => atmos_phy_mp_dry_mixingratio
221  atmos_phy_mp_name => atmos_phy_mp_dry_name
222  atmos_phy_mp_desc => atmos_phy_mp_dry_desc
223  atmos_phy_mp_unit => atmos_phy_mp_dry_unit
224  atmos_phy_mp_dens => atmos_phy_mp_dry_dens
225  case( 'KESSLER' )
227  mp_type, & ! (in)
228  qa_mp, qs_mp ) ! (out)
229  atmos_phy_mp => atmos_phy_mp_kessler
230  atmos_phy_mp_setup => atmos_phy_mp_kessler_setup
231  atmos_phy_mp_cloudfraction => atmos_phy_mp_kessler_cloudfraction
232  atmos_phy_mp_effectiveradius => atmos_phy_mp_kessler_effectiveradius
233  atmos_phy_mp_mixingratio => atmos_phy_mp_kessler_mixingratio
234  atmos_phy_mp_name => atmos_phy_mp_kessler_name
235  atmos_phy_mp_desc => atmos_phy_mp_kessler_desc
236  atmos_phy_mp_unit => atmos_phy_mp_kessler_unit
237  atmos_phy_mp_dens => atmos_phy_mp_kessler_dens
238  case( 'TOMITA08' )
240  mp_type, & ! (in)
241  qa_mp, qs_mp ) ! (out)
242  atmos_phy_mp => atmos_phy_mp_tomita08
243  atmos_phy_mp_setup => atmos_phy_mp_tomita08_setup
244  atmos_phy_mp_cloudfraction => atmos_phy_mp_tomita08_cloudfraction
245  atmos_phy_mp_effectiveradius => atmos_phy_mp_tomita08_effectiveradius
246  atmos_phy_mp_mixingratio => atmos_phy_mp_tomita08_mixingratio
247  atmos_phy_mp_name => atmos_phy_mp_tomita08_name
248  atmos_phy_mp_desc => atmos_phy_mp_tomita08_desc
249  atmos_phy_mp_unit => atmos_phy_mp_tomita08_unit
250  atmos_phy_mp_dens => atmos_phy_mp_tomita08_dens
251  case( 'SN14' )
253  mp_type, & ! (in)
254  qa_mp, qs_mp ) ! (out)
255  atmos_phy_mp => atmos_phy_mp_sn14
256  atmos_phy_mp_setup => atmos_phy_mp_sn14_setup
257  atmos_phy_mp_cloudfraction => atmos_phy_mp_sn14_cloudfraction
258  atmos_phy_mp_effectiveradius => atmos_phy_mp_sn14_effectiveradius
259  atmos_phy_mp_mixingratio => atmos_phy_mp_sn14_mixingratio
260  atmos_phy_mp_name => atmos_phy_mp_sn14_name
261  atmos_phy_mp_desc => atmos_phy_mp_sn14_desc
262  atmos_phy_mp_unit => atmos_phy_mp_sn14_unit
263  atmos_phy_mp_dens => atmos_phy_mp_sn14_dens
264  case( 'SUZUKI10' )
266  mp_type, & ! (in)
267  qa_mp, qs_mp ) ! (out)
268  atmos_phy_mp => atmos_phy_mp_suzuki10
269  atmos_phy_mp_setup => atmos_phy_mp_suzuki10_setup
270  atmos_phy_mp_cloudfraction => atmos_phy_mp_suzuki10_cloudfraction
271  atmos_phy_mp_effectiveradius => atmos_phy_mp_suzuki10_effectiveradius
272  atmos_phy_mp_mixingratio => atmos_phy_mp_suzuki10_mixingratio
273  atmos_phy_mp_name => atmos_phy_mp_suzuki10_name
274  atmos_phy_mp_desc => atmos_phy_mp_suzuki10_desc
275  atmos_phy_mp_unit => atmos_phy_mp_suzuki10_unit
276  atmos_phy_mp_dens => atmos_phy_mp_suzuki10_dens
277  case( 'SDM' )
279  mp_type, & ! (in)
280  qa_mp, qs_mp ) ! (out)
281  atmos_phy_mp => atmos_phy_mp_sdm
282  atmos_phy_mp_setup => atmos_phy_mp_sdm_setup
283  atmos_phy_mp_cloudfraction => atmos_phy_mp_sdm_cloudfraction
284  atmos_phy_mp_effectiveradius => atmos_phy_mp_sdm_effectiveradius
285  atmos_phy_mp_mixingratio => atmos_phy_mp_sdm_mixingratio
286  atmos_phy_mp_name => atmos_phy_mp_sdm_name
287  atmos_phy_mp_desc => atmos_phy_mp_sdm_desc
288  atmos_phy_mp_unit => atmos_phy_mp_sdm_unit
289  atmos_phy_mp_dens => atmos_phy_mp_sdm_dens
290  end select
291 
292  qe_mp = qs_mp + qa_mp - 1
293 
294  return
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_sn14_desc
subroutine, public atmos_phy_mp_kessler(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
subroutine, public atmos_phy_mp_sn14_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
subroutine, public atmos_phy_mp_sdm_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_sdm_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_dry_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_suzuki10_config(MP_TYPE, QA, QS)
Config.
subroutine, public prc_mpistop
Abort MPI.
module ATMOSPHERE / Physics Cloud Microphysics
subroutine, public atmos_phy_mp_kessler_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_sn14_setup
Setup Cloud Microphysics.
subroutine, public atmos_phy_mp_tomita08_config(MP_TYPE, QA, QS)
Config.
subroutine, public atmos_phy_mp_kessler_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_tomita08_unit
character(len=h_short), dimension(:), allocatable, target, public atmos_phy_mp_suzuki10_unit
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_dry_unit
subroutine, public atmos_phy_mp_dry(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
subroutine, public atmos_phy_mp_suzuki10_setup
Setup.
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_dry_desc
real(rp), dimension(n_hyd), target, public atmos_phy_mp_sn14_dens
subroutine, public atmos_phy_mp_tomita08_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_kessler_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_dry_name
subroutine, public atmos_phy_mp_kessler_config(MP_TYPE, QA, QS)
Setup.
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_tomita08_name
subroutine, public atmos_phy_mp_sn14_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_suzuki10_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_kessler_unit
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_sn14_name
module ATMOSPHERE / Physics Cloud Microphysics
module ATMOSPHERE / Physics Cloud Microphysics
subroutine, public atmos_phy_mp_suzuki10_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
real(rp), dimension(n_hyd), target, public atmos_phy_mp_kessler_dens
subroutine, public atmos_phy_mp_dry_setup
Setup.
character(len=h_short), dimension(:), allocatable, target, public atmos_phy_mp_suzuki10_name
subroutine, public atmos_phy_mp_kessler_setup
Setup.
subroutine, public atmos_phy_mp_suzuki10_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
real(rp), dimension(n_hyd), target, public atmos_phy_mp_suzuki10_dens
module PROCESS
subroutine, public atmos_phy_mp_suzuki10(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
real(rp), dimension(n_hyd), target, public atmos_phy_mp_tomita08_dens
subroutine, public atmos_phy_mp_sdm_setup
Setup Cloud Microphysics.
subroutine, public atmos_phy_mp_sdm(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
subroutine, public atmos_phy_mp_sn14_config(MP_TYPE, QA, QS)
Configure.
real(rp), dimension(n_hyd), target, public atmos_phy_mp_dry_dens
subroutine, public atmos_phy_mp_sdm_config(MP_TYPE, QA, QS)
Confif.
subroutine, public atmos_phy_mp_tomita08(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
subroutine, public atmos_phy_mp_sn14_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_sn14(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
subroutine, public atmos_phy_mp_dry_config(MP_TYPE, QA, QS)
Configure.
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_sdm_unit
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_sdm_name
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_sn14_unit
module ATMOSPHERE / Physics Cloud Microphysics
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_kessler_desc
subroutine, public atmos_phy_mp_tomita08_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_tomita08_setup
Setup.
character(len=h_mid), dimension(:), allocatable, target, public atmos_phy_mp_suzuki10_desc
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_sdm_desc
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_tomita08_desc
real(rp), dimension(n_hyd), target, public atmos_phy_mp_sdm_dens
module ATMOSPHERE / Physics Cloud Microphysics
module Spectran Bin Microphysics
subroutine, public atmos_phy_mp_sdm_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
subroutine, public atmos_phy_mp_tomita08_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
subroutine, public atmos_phy_mp_dry_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_dry_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ atmos_phy_mp

procedure(mp), pointer, public scale_atmos_phy_mp::atmos_phy_mp => NULL()

Definition at line 100 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config(), and mod_atmos_phy_mp_driver::atmos_phy_mp_driver().

100  procedure(mp), pointer :: ATMOS_PHY_MP => null()

◆ atmos_phy_mp_setup

procedure(su), pointer, public scale_atmos_phy_mp::atmos_phy_mp_setup => NULL()

Definition at line 101 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config(), and mod_atmos_phy_mp_driver::atmos_phy_mp_driver_setup().

101  procedure(su), pointer :: ATMOS_PHY_MP_setup => null()

◆ atmos_phy_mp_cloudfraction

procedure(cf), pointer, public scale_atmos_phy_mp::atmos_phy_mp_cloudfraction => NULL()

Definition at line 102 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config(), and scale_atmos_phy_rd_mstrnx::atmos_phy_rd_mstrnx().

102  procedure(cf), pointer :: ATMOS_PHY_MP_CloudFraction => null()

◆ atmos_phy_mp_effectiveradius

procedure(er), pointer, public scale_atmos_phy_mp::atmos_phy_mp_effectiveradius => NULL()

Definition at line 103 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config(), mod_atmos_phy_mp_driver::atmos_phy_mp_driver(), and scale_atmos_phy_rd_mstrnx::atmos_phy_rd_mstrnx().

103  procedure(er), pointer :: ATMOS_PHY_MP_EffectiveRadius => null()

◆ atmos_phy_mp_mixingratio

procedure(mr), pointer, public scale_atmos_phy_mp::atmos_phy_mp_mixingratio => NULL()

Definition at line 104 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config(), and scale_atmos_phy_rd_mstrnx::atmos_phy_rd_mstrnx().

104  procedure(mr), pointer :: ATMOS_PHY_MP_MixingRatio => null()

◆ qa_mp

integer, public scale_atmos_phy_mp::qa_mp = 0

◆ qs_mp

integer, public scale_atmos_phy_mp::qs_mp = -1

◆ qe_mp

integer, public scale_atmos_phy_mp::qe_mp = -1

◆ atmos_phy_mp_name

character(len=h_short), dimension(:), pointer, public scale_atmos_phy_mp::atmos_phy_mp_name

◆ atmos_phy_mp_desc

character(len=h_mid), dimension(:), pointer, public scale_atmos_phy_mp::atmos_phy_mp_desc

Definition at line 119 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config().

119  character(len=H_MID), pointer, public :: ATMOS_PHY_MP_DESC(:)

◆ atmos_phy_mp_unit

character(len=h_short), dimension(:), pointer, public scale_atmos_phy_mp::atmos_phy_mp_unit

Definition at line 120 of file scale_atmos_phy_mp.F90.

Referenced by scale_atmos_boundary::atmos_boundary_resume(), and atmos_phy_mp_config().

120  character(len=H_SHORT), pointer, public :: ATMOS_PHY_MP_UNIT(:)

◆ atmos_phy_mp_dens

real(rp), dimension(:), pointer, public scale_atmos_phy_mp::atmos_phy_mp_dens

Definition at line 121 of file scale_atmos_phy_mp.F90.

Referenced by atmos_phy_mp_config(), and scale_atmos_phy_rd_mstrnx::atmos_phy_rd_mstrnx().

121  real(RP), pointer, public :: ATMOS_PHY_MP_DENS(:)