module_mp_tempo_driver Module

tempo driver that converts 3d model input to 1d arrays used by the main code also allocates and fills diagnostic arrays


Uses

  • module~~module_mp_tempo_driver~~UsesGraph module~module_mp_tempo_driver module_mp_tempo_driver module~module_mp_tempo_cfgs module_mp_tempo_cfgs module~module_mp_tempo_driver->module~module_mp_tempo_cfgs module~module_mp_tempo_main module_mp_tempo_main module~module_mp_tempo_driver->module~module_mp_tempo_main module~module_mp_tempo_ml module_mp_tempo_ml module~module_mp_tempo_driver->module~module_mp_tempo_ml module~module_mp_tempo_params module_mp_tempo_params module~module_mp_tempo_driver->module~module_mp_tempo_params module~module_mp_tempo_utils module_mp_tempo_utils module~module_mp_tempo_driver->module~module_mp_tempo_utils module~module_mp_tempo_main->module~module_mp_tempo_cfgs module~module_mp_tempo_main->module~module_mp_tempo_ml module~module_mp_tempo_main->module~module_mp_tempo_params module~module_mp_tempo_main->module~module_mp_tempo_utils module~module_mp_tempo_aerosols module_mp_tempo_aerosols module~module_mp_tempo_main->module~module_mp_tempo_aerosols module~module_mp_tempo_diags module_mp_tempo_diags module~module_mp_tempo_main->module~module_mp_tempo_diags module~module_mp_tempo_ml->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 module~module_mp_tempo_utils->module~module_mp_tempo_params module~module_mp_tempo_aerosols->module~module_mp_tempo_params module~module_mp_tempo_diags->module~module_mp_tempo_params module~module_mp_tempo_diags->module~module_mp_tempo_utils

Used by

  • module~~module_mp_tempo_driver~~UsedByGraph module~module_mp_tempo_driver module_mp_tempo_driver module~tests tests module~tests->module~module_mp_tempo_driver program~run_tempo_tests run_tempo_tests program~run_tempo_tests->module~tests

Variables

Type Visibility Attributes Name Initial
type(ty_tempo_table_cfgs), private :: tempo_table_cfgs

Derived Types

type, public ::  ty_tempo_driver_diags

Components

Type Visibility Attributes Name Initial
real(kind=wp), public, dimension(:,:), allocatable :: rain_precip
real(kind=wp), public, dimension(:,:), allocatable :: ice_liquid_equiv_precip
real(kind=wp), public, dimension(:,:), allocatable :: snow_liquid_equiv_precip
real(kind=wp), public, dimension(:,:), allocatable :: graupel_liquid_equiv_precip
real(kind=wp), public, dimension(:,:), allocatable :: frozen_fraction
real(kind=wp), public, dimension(:,:), allocatable :: frz_rain_precip
real(kind=wp), public, dimension(:,:), allocatable :: max_hail_diameter_sfc
real(kind=wp), public, dimension(:,:), allocatable :: max_hail_diameter_column
real(kind=wp), public, dimension(:,:,:), allocatable :: refl10cm
real(kind=wp), public, dimension(:,:,:), allocatable :: re_cloud
real(kind=wp), public, dimension(:,:,:), allocatable :: re_ice
real(kind=wp), public, dimension(:,:,:), allocatable :: re_snow
real(kind=wp), public, dimension(:,:,:), allocatable :: rain_med_vol_diam
real(kind=wp), public, dimension(:,:,:), allocatable :: graupel_med_vol_diam
real(kind=wp), public, dimension(:,:,:), allocatable :: cloud_number_mixing_ratio

Subroutines

public subroutine tempo_init(aerosolaware_flag, hailaware_flag, ml_for_bl_nc_flag, ml_for_nc_flag, force_init_flag, tempo_cfgs)

initialize tempo microphysics \section arg_table_tempo_init Argument Table \htmlinclude tempo_init.html

Read more…

Arguments

Type IntentOptional Attributes Name
logical, intent(in), optional :: aerosolaware_flag
logical, intent(in), optional :: hailaware_flag
logical, intent(in), optional :: ml_for_bl_nc_flag
logical, intent(in), optional :: ml_for_nc_flag
logical, intent(in), optional :: force_init_flag
type(ty_tempo_cfgs), intent(out) :: tempo_cfgs

public subroutine tempo_run(tempo_cfgs, dt, itimestep, t, th, pii, p, w, dz, qv, qc, qr, qi, qs, qg, ni, nr, nc, nwfa, nifa, ng, qb, qc_bl, qcfrac_bl, qcfrac, qifrac, thten_bl, qvten_bl, qcten_bl, qiten_bl, thten_lwrad, thten_swrad, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte, tempo_diags)

\section arg_table_tempo_run Argument Table \htmlinclude tempo_run.html

Arguments

Type IntentOptional Attributes Name
type(ty_tempo_cfgs), intent(in) :: tempo_cfgs
real(kind=wp), intent(in) :: dt

timestep

integer, intent(in) :: itimestep

integer timestep = integration time / dt

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: t

temperature

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: th

theta

real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: pii

exner function

real(kind=wp), intent(in), dimension(ims:ime, kms:kme, jms:jme) :: p

pressure

real(kind=wp), intent(in), dimension(ims:ime, kms:kme, jms:jme) :: w

vertical velocity

real(kind=wp), intent(in), dimension(ims:ime, kms:kme, jms:jme) :: dz

vertical grid spacing

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: qv

3D water vapor mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: qc

3D cloud water mass mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: qr

3D rain water mass mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: qi

3D cloud ice mass mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: qs

3D snow mass mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: qg

3D graupel mass mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: ni

3D cloud ice number mixing ratio

real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: nr

3D rain water number mixing ratio

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: nc

3D cloud water number mixing ratio (aerosol-aware)

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: nwfa

3D water-friendly aerosol number mixing ratio (aerosol-aware)

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: nifa

3D ice-friendly aerosol number mixing ratio (aerosol-aware)

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: ng

3D graupel number mixing ratio (hail-aware)

real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: qb

3D graupel volume mixing ratio (hail-aware)

real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: qc_bl
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: qcfrac_bl
real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: qcfrac
real(kind=wp), intent(inout), optional, dimension(ims:ime, kms:kme, jms:jme) :: qifrac
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: thten_bl
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: qvten_bl
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: qcten_bl
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: qiten_bl
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: thten_lwrad
real(kind=wp), intent(in), optional, dimension(ims:ime, kms:kme, jms:jme) :: thten_swrad
integer, intent(in) :: ids

domain locations

integer, intent(in) :: ide

domain locations

integer, intent(in) :: jds

domain locations

integer, intent(in) :: jde

domain locations

integer, intent(in) :: kds

domain locations

integer, intent(in) :: kde

domain locations

integer, intent(in) :: ims

memory locations

integer, intent(in) :: ime

memory locations

integer, intent(in) :: jms

memory locations

integer, intent(in) :: jme

memory locations

integer, intent(in) :: kms

memory locations

integer, intent(in) :: kme

memory locations

integer, intent(in) :: its

tile locations

integer, intent(in) :: ite

tile locations

integer, intent(in) :: jts

tile locations

integer, intent(in) :: jte

tile locations

integer, intent(in) :: kts

tile locations

integer, intent(in) :: kte

tile locations

type(ty_tempo_driver_diags), intent(out) :: tempo_diags

public subroutine tempo_aerosol_surface_emissions(dt, nwfa, nwfa2d, ims, ime, jms, jme, kms, kme, kts)

adds aerosol surface emissions to the 3D field

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(inout), dimension(ims:ime, kms:kme, jms:jme) :: nwfa
real(kind=wp), intent(in), dimension(ims:ime, jms:jme) :: nwfa2d
integer, intent(in) :: ims
integer, intent(in) :: ime
integer, intent(in) :: jms
integer, intent(in) :: jme
integer, intent(in) :: kms
integer, intent(in) :: kme
integer, intent(in) :: kts

private subroutine read_table_freezewater(filename, table_size)

read lookup table for frozen cloud and rain water

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
integer, intent(in) :: table_size

private subroutine read_table_qr_acr_qs(filename, table_size)

read lookup table for rain-snow collection

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
integer, intent(in) :: table_size

private subroutine read_table_qr_acr_qg(filename, table_size)

read lookup table for rain-graupel collection

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
integer, intent(in) :: table_size

private subroutine read_table_ccn(filename, table_size)

read static file containing CCN activation of aerosols; the data were created from a parcel model by Feingold and Heymsfield (1992) https://doi.org/10.1175/1520-0469(1992)049<2325:POCGOD>2.0.CO;2 with further changes by Eidhammer and Kreidenweis

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
integer, intent(in) :: table_size

private subroutine check_before_table_read(filename, table_size)

checks that lookup tables exist and are the correct size before attempting to read them

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
integer, intent(in) :: table_size

private subroutine init_ml_data()

initialize machine learning data for tempo microphysics

Arguments

None