CCPP SciDoc  v6.0.0
Common Community Physics Package Developed at DTC

◆ mp_thompson_run()

subroutine, public mp_thompson::mp_thompson_run ( integer, intent(in)  ncol,
integer, intent(in)  nlev,
real(kind_phys), intent(in)  con_g,
real(kind_phys), intent(in)  con_rd,
real(kind_phys), intent(in)  con_eps,
logical, intent(in)  convert_dry_rho,
real(kind_phys), dimension(:,:), intent(inout)  spechum,
real(kind_phys), dimension(:,:), intent(inout)  qc,
real(kind_phys), dimension(:,:), intent(inout)  qr,
real(kind_phys), dimension(:,:), intent(inout)  qi,
real(kind_phys), dimension(:,:), intent(inout)  qs,
real(kind_phys), dimension(:,:), intent(inout)  qg,
real(kind_phys), dimension(:,:), intent(inout)  ni,
real(kind_phys), dimension(:,:), intent(inout)  nr,
logical, intent(in)  is_aerosol_aware,
real(kind_phys), dimension(:,:), intent(inout), optional  nc,
real(kind_phys), dimension(:,:), intent(inout), optional  nwfa,
real(kind_phys), dimension(:,:), intent(inout), optional  nifa,
real(kind_phys), dimension(:), intent(in), optional  nwfa2d,
real(kind_phys), dimension(:), intent(in), optional  nifa2d,
real(kind_phys), dimension(:,:), intent(inout)  tgrs,
real(kind_phys), dimension(:,:), intent(in)  prsl,
real(kind_phys), dimension(:,:), intent(in)  phii,
real(kind_phys), dimension(:,:), intent(in)  omega,
logical, intent(in)  sedi_semi,
integer, intent(in)  decfl,
real(kind_phys), intent(in)  dtp,
real, intent(in)  dt_inner,
logical, intent(in)  first_time_step,
integer, intent(in)  istep,
integer, intent(in)  nsteps,
real(kind_phys), dimension(:), intent(inout)  prcp,
real(kind_phys), dimension(:), intent(inout)  rain,
real(kind_phys), dimension(:), intent(inout)  graupel,
real(kind_phys), dimension(:), intent(inout)  ice,
real(kind_phys), dimension(:), intent(inout)  snow,
real(kind_phys), dimension(:), intent(out)  sr,
real(kind_phys), dimension(:,:), intent(inout)  refl_10cm,
logical, intent(in)  reset_dBZ,
logical, intent(in)  do_radar_ref,
integer, intent(in)  mpicomm,
integer, intent(in)  mpirank,
integer, intent(in)  mpiroot,
integer, intent(in)  blkno,
logical, intent(in)  ext_diag,
real(kind_phys), dimension(:,:,:), intent(inout), target  diag3d,
logical, intent(in)  reset_diag3d,
real(kind_phys), dimension(:,:), intent(in)  spp_wts_mp,
integer, intent(in)  spp_mp,
integer, intent(in)  n_var_spp,
real(kind_phys), dimension(:), intent(in)  spp_prt_list,
character(len=3), dimension(:), intent(in)  spp_var_list,
real(kind_phys), dimension(:), intent(in)  spp_stddev_cutoff,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

Argument Table

mp_thompson_run argument table
local_namestandard_namelong_nameunitstypedimensionskindintent
ncolhorizontal_loop_extenthorizontal loop extentcountinteger()in
nlevvertical_layer_dimensionnumber of vertical levelscountinteger()in
con_ggravitational_accelerationgravitational accelerationm s-2real()kind_physin
con_rdgas_constant_of_dry_airideal gas constant for dry airJ kg-1 K-1real()kind_physin
con_epsratio_of_dry_air_to_water_vapor_gas_constantsrd/rvnonereal()kind_physin
convert_dry_rhoflag_for_converting_hydrometeors_from_moist_to_dry_airflag for converting hydrometeors from moist to dry airflaglogical()in
spechumspecific_humidity_of_new_statewater vapor specific humiditykg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qccloud_liquid_water_mixing_ratio_of_new_statecloud water mixing ratio wrt dry+vapor (no condensates)kg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qrrain_mixing_ratio_of_new_staterain water mixing ratio wrt dry+vapor (no condensates)kg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qicloud_ice_mixing_ratio_of_new_stateice water mixing ratio wrt dry+vapor (no condensates)kg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qssnow_mixing_ratio_of_new_statesnow water mixing ratio wrt dry+vapor (no condensates)kg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qggraupel_mixing_ratio_of_new_stategraupel mixing ratio wrt dry+vapor (no condensates)kg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
nimass_number_concentration_of_cloud_ice_water_crystals_in_air_of_new_stateice number concentrationkg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
nrmass_number_concentration_of_rain_of_new_staterain number concentrationkg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
is_aerosol_awareflag_for_aerosol_physicsflag for aerosol-aware physicsflaglogical()in
ncmass_number_concentration_of_cloud_liquid_water_particles_in_air_of_new_statecloud droplet number concentrationkg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
nwfamass_number_concentration_of_hygroscopic_aerosols_of_new_statenumber concentration of water-friendly aerosolskg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
nifamass_number_concentration_of_nonhygroscopic_ice_nucleating_aerosols_of_new_statenumber concentration of ice-friendly aerosolskg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
nwfa2dtendency_of_hygroscopic_aerosols_at_surface_adjacent_layerinstantaneous fake water-friendly surface aerosol sourcekg-1 s-1real(ccpp_constant_one:horizontal_loop_extent)kind_physin
nifa2dtendency_of_nonhygroscopic_ice_nucleating_aerosols_at_surface_adjacent_layerinstantaneous fake ice-friendly surface aerosol sourcekg-1 s-1real(ccpp_constant_one:horizontal_loop_extent)kind_physin
tgrsair_temperature_of_new_statemodel layer mean temperatureKreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
prslair_pressuremean layer pressurePareal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
phiigeopotential_at_interfacegeopotential at model layer interfacesm2 s-2real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_interface_dimension)kind_physin
omegalagrangian_tendency_of_air_pressurelayer mean vertical velocityPa s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
sedi_semiflag_for_semi_lagrangian_sedi_rainflag for semi Lagrangian sedi of rainflaglogical()in
decfldeformed_cfl_factordeformed CFL factorcountinteger()in
dtptimestep_for_physicsphysics timestepsreal()kind_physin
dt_innertime_step_for_inner_looptime step for inner loopsreal()kind_physin
first_time_stepflag_for_first_timestepflag for first time step for time integration loop (cold/warmstart)flaglogical()in
istepccpp_loop_counterloop counter for subcycling loops in CCPPindexinteger()in
nstepsccpp_loop_extentloop extent for subcycling loops in CCPPcountinteger()in
prcplwe_thickness_of_explicit_precipitation_amountexplicit precipitation (rain, ice, snow, graupel) on physics timestepmreal(ccpp_constant_one:horizontal_loop_extent)kind_physinout
rainlwe_thickness_of_explicit_rain_amountexplicit rain fall on physics timestepmreal(ccpp_constant_one:horizontal_loop_extent)kind_physinout
graupellwe_thickness_of_graupel_amountgraupel fall on physics timestepmreal(ccpp_constant_one:horizontal_loop_extent)kind_physinout
icelwe_thickness_of_ice_amountice fall on physics timestepmreal(ccpp_constant_one:horizontal_loop_extent)kind_physinout
snowlwe_thickness_of_snow_amountsnow fall on physics timestepmreal(ccpp_constant_one:horizontal_loop_extent)kind_physinout
srratio_of_snowfall_to_rainfallratio of snowfall to large-scale rainfallfracreal(ccpp_constant_one:horizontal_loop_extent)kind_physout
refl_10cmradar_reflectivity_10cminstantaneous refl_10cmdBZreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physout
reset_dBZflag_for_resetting_radar_reflectivity_calculationflag for resetting radar reflectivity calculationflaglogical()in
do_radar_refflag_for_radar_reflectivityflag for radar reflectivityflaglogical()in
mpicommmpi_communicatorMPI communicatorindexinteger()in
mpirankmpi_rankcurrent MPI-rankindexinteger()in
mpirootmpi_rootmaster MPI-rankindexinteger()in
blknoccpp_block_numbernumber of block for explicit data blocking in CCPPindexinteger()in
ext_diagflag_for_extended_diagnostic_output_from_thompson_microphysicsflag for extended diagnostic output from thompson microphysicsflaglogical()in
diag3dextended_diagnostics_output_from_thompson_microphysicsset of 3d arrays for extended diagnostics output from thompson microphysicsnonereal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension, ccpp_constant_one:number_of_3d_diagnostic_output_arrays_from_thompson_microphysics)kind_physinout
reset_diag3dflag_reset_extended_diagnostics_output_arrays_from_thompson_microphysicsflag for resetting extended diagnostics output arrays from thompson microphysicsflaglogical()in
spp_wts_mpspp_weights_for_microphysics_schemespp weights for microphysics scheme1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
spp_mpcontrol_for_microphysics_spp_perturbationscontrol for microphysics spp perturbationscountinteger()in
n_var_sppnumber_of_perturbed_spp_schemesnumber of perturbed spp schemescountinteger()in
spp_prt_listmagnitude_of_spp_perturbationsmagnitude of spp perturbations1real(ccpp_constant_one:number_of_perturbed_spp_schemes)kind_physin
spp_stddev_cutoffmagnitude_of_spp_standard_deviation_cutoffmagnitude of spp standard deviation cutoff1real(ccpp_constant_one:number_of_perturbed_spp_schemes)kind_physin
spp_var_listperturbed_spp_schemesperturbed spp schemesnonecharacter(ccpp_constant_one:number_of_perturbed_spp_schemes)len=3in
errmsgccpp_error_messageerror message for error handling in CCPPnonecharacter()len=*out
errflgccpp_error_codeerror code for error handling in CCPP1integer()out

Thompson MP General Algorithm

  • Convert specific humidity to water vapor mixing ratio.
    • Also, hydrometeor variables are mass or number mixing ratio
    • either kg of species per kg of dry air, or per kg of (dry + vapor).
  • Density of air in kg m-3
  • Convert omega in Pa s-1 to vertical velocity w in m s-1
  • Layer width in m from geopotential in m2 s-2
  • Call mp_gt_driver() with or without aerosols
  • Convert water vapor mixing ratio back to specific humidity
  • Convert rainfall deltas from mm to m (on physics timestep); add to inout variables

References module_mp_thompson::mp_gt_driver().

Here is the call graph for this function: