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 125 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().

125  use scale_process, only: &
127 #define EXTM(pre, name, post) pre ## name ## post
128 #define NAME(pre, name, post) EXTM(pre, name, post)
129 #ifdef MP
130  use name(scale_atmos_phy_mp_, mp,), only: &
131  name(atmos_phy_mp_, mp, _setup), &
132  name(atmos_phy_mp_, mp,), &
133  name(atmos_phy_mp_, mp, _cloudfraction), &
134  name(atmos_phy_mp_, mp, _effectiveradius), &
135  name(atmos_phy_mp_, mp, _mixingratio), &
136  name(atmos_phy_mp_, mp, _dens) => atmos_phy_mp_dens
137 #else
138  use scale_atmos_phy_mp_dry, only: &
144  atmos_phy_mp_dry_dens => atmos_phy_mp_dens
145  use scale_atmos_phy_mp_kessler, only: &
151  atmos_phy_mp_kessler_dens => atmos_phy_mp_dens
152  use scale_atmos_phy_mp_tomita08, only: &
158  atmos_phy_mp_tomita08_dens => atmos_phy_mp_dens
159  use scale_atmos_phy_mp_sn14, only: &
165  atmos_phy_mp_sn14_dens => atmos_phy_mp_dens
166  use scale_atmos_phy_mp_suzuki10, only: &
172  atmos_phy_mp_suzuki10_dens => atmos_phy_mp_dens
173  use scale_atmos_phy_mp_sdm, only: &
179  atmos_phy_mp_sdm_dens => atmos_phy_mp_dens
180 #endif
181  implicit none
182 
183  character(len=*), intent(in) :: mp_type
184  !---------------------------------------------------------------------------
185 
186 #ifdef MP
187  call name(atmos_phy_mp_, mp, _setup)( mp_type )
188  atmos_phy_mp => name(atmos_phy_mp_, mp,)
189  atmos_phy_mp_cloudfraction => name(atmos_phy_mp_, mp, _cloudfraction)
190  atmos_phy_mp_effectiveradius => name(atmos_phy_mp_, mp, _effectiveradius)
191  atmos_phy_mp_mixingratio => name(atmos_phy_mp_, mp, _mixingratio)
192  atmos_phy_mp_dens => name(atmos_phy_mp_, mp, _dens)
193 #else
194  select case ( mp_type )
195  case ( 'DRY' )
196  call atmos_phy_mp_dry_setup( mp_type )
198  atmos_phy_mp_cloudfraction => atmos_phy_mp_dry_cloudfraction
199  atmos_phy_mp_effectiveradius => atmos_phy_mp_dry_effectiveradius
200  atmos_phy_mp_mixingratio => atmos_phy_mp_dry_mixingratio
201  atmos_phy_mp_dens => atmos_phy_mp_dry_dens
202  case ( 'KESSLER' )
203  call atmos_phy_mp_kessler_setup( mp_type )
205  atmos_phy_mp_cloudfraction => atmos_phy_mp_kessler_cloudfraction
206  atmos_phy_mp_effectiveradius => atmos_phy_mp_kessler_effectiveradius
207  atmos_phy_mp_mixingratio => atmos_phy_mp_kessler_mixingratio
208  atmos_phy_mp_dens => atmos_phy_mp_kessler_dens
209  case ( 'TOMITA08' )
210  call atmos_phy_mp_tomita08_setup( mp_type )
212  atmos_phy_mp_cloudfraction => atmos_phy_mp_tomita08_cloudfraction
213  atmos_phy_mp_effectiveradius => atmos_phy_mp_tomita08_effectiveradius
214  atmos_phy_mp_mixingratio => atmos_phy_mp_tomita08_mixingratio
215  atmos_phy_mp_dens => atmos_phy_mp_tomita08_dens
216  case ( 'SN14' )
217  call atmos_phy_mp_sn14_setup( mp_type )
219  atmos_phy_mp_cloudfraction => atmos_phy_mp_sn14_cloudfraction
220  atmos_phy_mp_effectiveradius => atmos_phy_mp_sn14_effectiveradius
221  atmos_phy_mp_mixingratio => atmos_phy_mp_sn14_mixingratio
222  atmos_phy_mp_dens => atmos_phy_mp_sn14_dens
223  case ( 'SUZUKI10' )
224  call atmos_phy_mp_suzuki10_setup( mp_type )
226  atmos_phy_mp_cloudfraction => atmos_phy_mp_suzuki10_cloudfraction
227  atmos_phy_mp_effectiveradius => atmos_phy_mp_suzuki10_effectiveradius
228  atmos_phy_mp_mixingratio => atmos_phy_mp_suzuki10_mixingratio
229  atmos_phy_mp_dens => atmos_phy_mp_suzuki10_dens
230  case ( 'SDM' )
231  call atmos_phy_mp_sdm_setup( mp_type )
233  atmos_phy_mp_cloudfraction => atmos_phy_mp_sdm_cloudfraction
234  atmos_phy_mp_effectiveradius => atmos_phy_mp_sdm_effectiveradius
235  atmos_phy_mp_mixingratio => atmos_phy_mp_sdm_mixingratio
236  atmos_phy_mp_dens => atmos_phy_mp_sdm_dens
237  end select
238 #endif
239 
240  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 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 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_suzuki10_setup(MP_TYPE)
Setup.
subroutine, public atmos_phy_mp_kessler_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
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_sn14_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
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, mask_criterion)
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_tomita08_cloudfraction(cldfrac, QTRC, mask_criterion)
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 108 of file scale_atmos_phy_mp.F90.

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

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

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

110  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 111 of file scale_atmos_phy_mp.F90.

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

111  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 117 of file scale_atmos_phy_mp.F90.

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

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