module_mp_tempo_utils Module

utilities for tempo microphysics


Uses

  • module~~module_mp_tempo_utils~~UsesGraph module~module_mp_tempo_utils module_mp_tempo_utils module~module_mp_tempo_params module_mp_tempo_params module~module_mp_tempo_utils->module~module_mp_tempo_params ccpp_kind_types ccpp_kind_types module~module_mp_tempo_params->ccpp_kind_types iso_fortran_env iso_fortran_env module~module_mp_tempo_params->iso_fortran_env module~machine machine module~module_mp_tempo_params->module~machine mpas_kind_types mpas_kind_types module~module_mp_tempo_params->mpas_kind_types

Used by

  • module~~module_mp_tempo_utils~~UsedByGraph module~module_mp_tempo_utils module_mp_tempo_utils module~module_mp_tempo_diags module_mp_tempo_diags module~module_mp_tempo_diags->module~module_mp_tempo_utils module~module_mp_tempo_driver module_mp_tempo_driver module~module_mp_tempo_driver->module~module_mp_tempo_utils module~module_mp_tempo_main module_mp_tempo_main module~module_mp_tempo_driver->module~module_mp_tempo_main module~module_mp_tempo_main->module~module_mp_tempo_utils module~module_mp_tempo_main->module~module_mp_tempo_diags module~module_mp_tempo_tables module_mp_tempo_tables module~module_mp_tempo_tables->module~module_mp_tempo_utils module~tests tests module~tests->module~module_mp_tempo_driver program~build_tables build_tables program~build_tables->module~module_mp_tempo_tables program~run_tempo_tests run_tempo_tests program~run_tempo_tests->module~tests

Functions

public function calc_gamma_p(a, x) result(gamma_p)

normalized lower gamma function calculated either with a series expansion or continued fraction method

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: a
real(kind=wp), intent(in) :: x

Return Value real(kind=wp)

private function calc_gamma_series(a, x) result(gamma_series)

solves the normalized lower gamma function

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: a
real(kind=wp), intent(in) :: x

Return Value real(kind=wp)

private function calc_gamma_cf(a, x) result(gamma_cf)

solves the normalized upper gamma function using a continued fractions method (modified Lentz Algorithm) see also Numerical Recipes in Fortran

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: a
real(kind=wp), intent(in) :: x

Return Value real(kind=wp)

public function calc_rslf(p, t) result(rslf)

calculates liquid saturation vapor mixing ratio

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: p
real(kind=wp), intent(in) :: t

Return Value real(kind=wp)

public function calc_rsif(p, t) result(rsif)

calculates ice saturation vapor mixing ratio

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: p
real(kind=wp), intent(in) :: t

Return Value real(kind=wp)

public function get_nuc(nc) result(nu_c)

returns nu_c for cloud water (values from 2-15)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: nc

Return Value integer

public elemental function calc_ice_number(q_ice, temp) result(n_ice)

calculates ice number mixing ratio from mass fit of the RRTMG ice effective radius table and code by Gemini calculate the radiative effective size of ice. converts temperature from kelvin to celsius and applies a single continuous rational function to replace the discrete lookup. single continuous function for all temperatures safety clamp: strictly bound the radius for extreme hot/cold convert effective radius (microns) to diameter (meters) calculate the number concentration from the mean size and mass mixing ratio, assuming an inverse exponential size distribution.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_ice
real(kind=wp), intent(in) :: temp

Return Value real(kind=wp)

public elemental function calc_cloud_number(q_cloud, qnwfa) result(n_cloud)

calculates cloud number mixing ratio from mass

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_cloud
real(kind=wp), intent(in) :: qnwfa

Return Value real(kind=wp)

public elemental function calc_rain_number(q_rain, temp) result(n_rain)

calculates rain number mixing ratio from mass Original note from Greg: Not thrilled with it, but set y-intercept parameter to Marshall-Palmer value that basically assumes melting snow becomes typical rain. However, for -2C < T < 0C, make linear increase in exponent to attempt to keep supercooled collision-coalescence (warm-rain) similar to drizzle rather than bigger rain drops. While this could also exist at T > 0C, it is more difficult to assume it directly from having mass and not number.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_rain
real(kind=wp), intent(in) :: temp

Return Value real(kind=wp)


Subroutines

public subroutine get_constant_cloud_number(land, nc)

returns land-specific value of cloud droplet number concentration when aerosol-aware = false if land = 1, else returns ocean-specific value

Arguments

Type IntentOptional Attributes Name
integer, intent(in), optional :: land
real(kind=wp), intent(out), dimension(:) :: nc

public subroutine snow_moments(rs, tc, smob, smoc, ns, smo0, smo1, smo2, smoe, smof, smog, smoz)

computes snow moments from Field et al. (2005)

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: rs
real(kind=wp), intent(in) :: tc
real(kind=dp), intent(out) :: smob
real(kind=dp), intent(out) :: smoc
real(kind=dp), intent(out), optional :: ns
real(kind=dp), intent(out), optional :: smo0
real(kind=dp), intent(out), optional :: smo1
real(kind=dp), intent(out), optional :: smo2
real(kind=dp), intent(out), optional :: smoe
real(kind=dp), intent(out), optional :: smof
real(kind=dp), intent(out), optional :: smog
real(kind=dp), intent(out), optional :: smoz

public subroutine compute_efrw()

collision efficiency for rain collecting cloud water from Beard and Grover (1974) if a/A < 0.25 https://doi.org/10.1175/1520-0469(1974)031<0543:NCEFSR>2.0.CO;2 otherwise uses polynomials to get close match of Pruppacher and Klett Fig. 14-9

Arguments

None

public subroutine compute_efsw()

collision efficiency for snow collecting cloud water from Wang and Ji (2000) https://doi.org/10.1175/1520-0469(2000)057<1001:CEOICA>2.0.CO;2 equating melted snow diameter to effective collision cross-section

Arguments

None

public subroutine qi_aut_qs()

calculates cloud ice conversion to snow and depositional growth by binning cloud ice distributions and determining both the size bins > d0s (that are converted to snow) and the depositional growth up to d0s (for cloud ice) and > d0s for snow following Harrington et al. (1995) https://doi.org/10.1175/1520-0469(1995)052<4344:POICCP>2.0.CO;2

Arguments

None

public subroutine compute_drop_evap()

calculates droplet evaporation data

Arguments

None