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

module ATMOSPHERE / Physics Cloud Microphysics More...

Data Types

interface  cf
 
interface  er
 
interface  mr
 

Functions/Subroutines

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

Variables

procedure(mp), pointer, public atmos_phy_mp => 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()
 
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_setup()

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

Setup Cloud Microphysics.

Definition at line 123 of file scale_atmos_phy_mp.F90.

References atmos_phy_mp, atmos_phy_mp_cloudfraction, atmos_phy_mp_dens, 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_effectiveradius(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_mixingratio(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_setup(), 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_effectiveradius(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_mixingratio(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_setup(), atmos_phy_mp_mixingratio, 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_effectiveradius(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_mixingratio(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_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_effectiveradius(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_mixingratio(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_setup(), 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_effectiveradius(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_mixingratio(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_setup(), 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_effectiveradius(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_mixingratio(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_setup(), and scale_process::prc_mpistop().

Referenced by mod_atmos_phy_mp_driver::atmos_phy_mp_driver_setup().

123  use scale_process, only: &
125 #define EXTM(pre, name, post) pre ## name ## post
126 #define NAME(pre, name, post) EXTM(pre, name, post)
127 #ifdef MP
128  use name(scale_atmos_phy_mp_, mp,), only: &
129  name(atmos_phy_mp_, mp, _setup), &
130  name(atmos_phy_mp_, mp,), &
131  name(atmos_phy_mp_, mp, _cloudfraction), &
132  name(atmos_phy_mp_, mp, _effectiveradius), &
133  name(atmos_phy_mp_, mp, _mixingratio), &
134  name(atmos_phy_mp_, mp, _dens) => atmos_phy_mp_dens
135 #else
136  use scale_atmos_phy_mp_dry, only: &
142  atmos_phy_mp_dry_dens => atmos_phy_mp_dens
143  use scale_atmos_phy_mp_kessler, only: &
149  atmos_phy_mp_kessler_dens => atmos_phy_mp_dens
150  use scale_atmos_phy_mp_tomita08, only: &
156  atmos_phy_mp_tomita08_dens => atmos_phy_mp_dens
157  use scale_atmos_phy_mp_sn14, only: &
163  atmos_phy_mp_sn14_dens => atmos_phy_mp_dens
164  use scale_atmos_phy_mp_suzuki10, only: &
170  atmos_phy_mp_suzuki10_dens => atmos_phy_mp_dens
171  use scale_atmos_phy_mp_sdm, only: &
177  atmos_phy_mp_sdm_dens => atmos_phy_mp_dens
178 #endif
179  implicit none
180 
181  character(len=*), intent(in) :: mp_type
182  !---------------------------------------------------------------------------
183 
184 #ifdef MP
185  call name(atmos_phy_mp_, mp, _setup)( mp_type )
186  atmos_phy_mp => name(atmos_phy_mp_, mp,)
187  atmos_phy_mp_cloudfraction => name(atmos_phy_mp_, mp, _cloudfraction)
188  atmos_phy_mp_effectiveradius => name(atmos_phy_mp_, mp, _effectiveradius)
189  atmos_phy_mp_mixingratio => name(atmos_phy_mp_, mp, _mixingratio)
190  atmos_phy_mp_dens => name(atmos_phy_mp_, mp, _dens)
191 #else
192  select case ( mp_type )
193  case ( 'DRY' )
194  call atmos_phy_mp_dry_setup( mp_type )
196  atmos_phy_mp_cloudfraction => atmos_phy_mp_dry_cloudfraction
197  atmos_phy_mp_effectiveradius => atmos_phy_mp_dry_effectiveradius
198  atmos_phy_mp_mixingratio => atmos_phy_mp_dry_mixingratio
199  atmos_phy_mp_dens => atmos_phy_mp_dry_dens
200  case ( 'KESSLER' )
201  call atmos_phy_mp_kessler_setup( mp_type )
203  atmos_phy_mp_cloudfraction => atmos_phy_mp_kessler_cloudfraction
204  atmos_phy_mp_effectiveradius => atmos_phy_mp_kessler_effectiveradius
205  atmos_phy_mp_mixingratio => atmos_phy_mp_kessler_mixingratio
206  atmos_phy_mp_dens => atmos_phy_mp_kessler_dens
207  case ( 'TOMITA08' )
208  call atmos_phy_mp_tomita08_setup( mp_type )
210  atmos_phy_mp_cloudfraction => atmos_phy_mp_tomita08_cloudfraction
211  atmos_phy_mp_effectiveradius => atmos_phy_mp_tomita08_effectiveradius
212  atmos_phy_mp_mixingratio => atmos_phy_mp_tomita08_mixingratio
213  atmos_phy_mp_dens => atmos_phy_mp_tomita08_dens
214  case ( 'SN14' )
215  call atmos_phy_mp_sn14_setup( mp_type )
217  atmos_phy_mp_cloudfraction => atmos_phy_mp_sn14_cloudfraction
218  atmos_phy_mp_effectiveradius => atmos_phy_mp_sn14_effectiveradius
219  atmos_phy_mp_mixingratio => atmos_phy_mp_sn14_mixingratio
220  atmos_phy_mp_dens => atmos_phy_mp_sn14_dens
221  case ( 'SUZUKI10' )
222  call atmos_phy_mp_suzuki10_setup( mp_type )
224  atmos_phy_mp_cloudfraction => atmos_phy_mp_suzuki10_cloudfraction
225  atmos_phy_mp_effectiveradius => atmos_phy_mp_suzuki10_effectiveradius
226  atmos_phy_mp_mixingratio => atmos_phy_mp_suzuki10_mixingratio
227  atmos_phy_mp_dens => atmos_phy_mp_suzuki10_dens
228  case ( 'SDM' )
229  call atmos_phy_mp_sdm_setup( mp_type )
231  atmos_phy_mp_cloudfraction => atmos_phy_mp_sdm_cloudfraction
232  atmos_phy_mp_effectiveradius => atmos_phy_mp_sdm_effectiveradius
233  atmos_phy_mp_mixingratio => atmos_phy_mp_sdm_mixingratio
234  atmos_phy_mp_dens => atmos_phy_mp_sdm_dens
235  end select
236 #endif
237 
238  return
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.
procedure(mp), pointer, public atmos_phy_mp
subroutine, public atmos_phy_mp_sdm_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public prc_mpistop
Abort MPI.
module ATMOSPHERE / Physics Cloud Microphysics
subroutine, public atmos_phy_mp_tomita08_cloudfraction(cldfrac, QTRC)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_kessler_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_suzuki10_setup(MP_TYPE)
Setup.
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_dry_setup(MP_TYPE)
Setup.
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.
subroutine, public atmos_phy_mp_suzuki10_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
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(mp_qa), target, public atmos_phy_mp_dens
subroutine, public atmos_phy_mp_suzuki10_cloudfraction(cldfrac, QTRC)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_kessler_setup(MP_TYPE)
Setup.
module PROCESS
subroutine, public atmos_phy_mp_suzuki10(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
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_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.
module ATMOSPHERE / Physics Cloud Microphysics
subroutine, public atmos_phy_mp_sn14_cloudfraction(cldfrac, QTRC)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_dry_cloudfraction(cldfrac, QTRC)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_kessler_cloudfraction(cldfrac, QTRC)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_sdm_cloudfraction(cldfrac, QTRC)
Calculate Cloud Fraction.
subroutine, public atmos_phy_mp_sdm_setup(MP_TYPE)
Setup Cloud Microphysics.
subroutine, public atmos_phy_mp_sn14_setup(MP_TYPE)
Setup Cloud Microphysics.
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_setup(MP_TYPE)
Setup.
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 106 of file scale_atmos_phy_mp.F90.

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

106  procedure(mp), pointer :: atmos_phy_mp => null()
procedure(mp), pointer, public atmos_phy_mp

◆ atmos_phy_mp_cloudfraction

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

Definition at line 107 of file scale_atmos_phy_mp.F90.

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

107  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 108 of file scale_atmos_phy_mp.F90.

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

108  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 109 of file scale_atmos_phy_mp.F90.

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

109  procedure(mr), pointer :: atmos_phy_mp_mixingratio => null()

◆ atmos_phy_mp_dens

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

Definition at line 115 of file scale_atmos_phy_mp.F90.

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

115  real(RP), pointer, public :: atmos_phy_mp_dens(:)
real(rp), dimension(mp_qa), target, public atmos_phy_mp_dens