| Procedure | Location | Procedure Type | Description |
|---|---|---|---|
| activate_cloud_number | module_mp_tempo_main | Function | calculations numer of cloud droplets activated |
| aerosol_check_and_update | module_mp_tempo_main | Subroutine | sets aerosol number concentrations and checks bounds |
| aerosol_collection_efficiency | module_mp_tempo_aerosols | Function | computes aerosol collection efficiency for precipitation scavenging from Wang et al. (2010) |
| aerosol_scavenging | module_mp_tempo_main | Subroutine | scavenging of aerosols by rain, snow, and graupel |
| build_table_freezewater | module_mp_tempo_tables | Subroutine | build lookup table data for frozen cloud and rain water |
| build_table_qr_acr_qg | module_mp_tempo_tables | Subroutine | build lookup table data for rain-graupel collection |
| build_table_qr_acr_qs | module_mp_tempo_tables | Subroutine | build lookup table data for rain-snow collection |
| calc_cloud_number | module_mp_tempo_utils | Function | calculates cloud number mixing ratio from mass |
| calc_gamma_cf | module_mp_tempo_utils | Function | solves the normalized upper gamma function using a continued fractions method (modified Lentz Algorithm) see also Numerical Recipes in Fortran |
| calc_gamma_p | module_mp_tempo_utils | Function | normalized lower gamma function calculated either with a series expansion or continued fraction method |
| calc_gamma_series | module_mp_tempo_utils | Function | solves the normalized lower gamma function |
| calc_ice_number | module_mp_tempo_utils | Function | 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. |
| calc_rain_number | module_mp_tempo_utils | Function | 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. |
| calc_rsif | module_mp_tempo_utils | Function | calculates ice saturation vapor mixing ratio |
| calc_rslf | module_mp_tempo_utils | Function | calculates liquid saturation vapor mixing ratio |
| check_before_table_read | module_mp_tempo_driver | Subroutine | checks that lookup tables exist and are the correct size before attempting to read them |
| check_over_depletion | module_mp_tempo_main | Subroutine | check to ensure that loss terms don't over-deplete a category and adjusts tendencies if needed |
| cloud_check_and_update | module_mp_tempo_main | Subroutine | computes cloud water contents, ilamc, and mvd_c and checks bounds |
| cloud_condensation | module_mp_tempo_main | Subroutine | cloud condensation and evaporation |
| cloud_fallspeed | module_mp_tempo_main | Subroutine | calculates mass and number weighted fall speeds for cloud and the top k-level of sedimentation |
| complex_ice_maetzler | module_mp_tempo_diags | Function | complex refractive index of ice from Maetzler (1998) calculated as function of temperature t [Celsius] (valid from -250 to 0) and radar wavelength lambda [m] (valid from 0.0001 to 30) |
| complex_water_ray | module_mp_tempo_diags | Function | complex refractive index of water from Ray (1972) calculated as function of temperature t [Celsius] (valid from -10 to 30) and radar wavelength lambda [m] (valid from 0.001 to 1) |
| compute_drop_evap | module_mp_tempo_utils | Subroutine | calculates droplet evaporation data |
| compute_efrw | module_mp_tempo_utils | Subroutine | 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 |
| compute_efsw | module_mp_tempo_utils | Subroutine | 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 |
| compute_hail_fraction | module_mp_tempo_main | Subroutine | compute hail fraction and hail mass from graupel mass and density |
| create_bins | module_mp_tempo_params | Subroutine | calculates log-spaced bins of hydrometer sizes to simplify calculations later |
| demott_nucleation | module_mp_tempo_main | Function | DeMott nucleation |
| effective_radius | module_mp_tempo_diags | Subroutine | effective radius values for cloud water, cloud ice and snow |
| find_melting_level | module_mp_tempo_diags | Function | finds the melting level |
| freeze_cloud_melt_ice | module_mp_tempo_main | Subroutine | |
| freezewater | module_mp_tempo_tables | Subroutine | calculates the probability of drops of a particular volume freezing from Bigg (1953) https://doi.org/10.1002/qj.49707934207 |
| freezing_rain | module_mp_tempo_diags | Subroutine | estimates freezing rain/drizzle accumulation |
| gather | module_mp_tempo_tables | Subroutine | wrapper to simplify MPI_Gatherv |
| get_cloud_number | module_mp_tempo_main | Interface | |
| get_cloud_table_index | module_mp_tempo_main | Subroutine | get cloud table index from mass and number |
| get_constant_cloud_number | module_mp_tempo_utils | Subroutine | returns land-specific value of cloud droplet number concentration when aerosol-aware = false if land = 1, else returns ocean-specific value |
| get_graupel_table_index | module_mp_tempo_main | Subroutine | get graupel table indices from graupel mass, lambda, and density index |
| get_ice_table_index | module_mp_tempo_main | Subroutine | get ice table index from mass and number |
| get_in_table_index | module_mp_tempo_main | Subroutine | get ice nuclei table index |
| get_index_for_rank | module_mp_tempo_tables | Subroutine | returns start and end index values for an array dimension of size idx distributed over num_procs |
| get_nuc | module_mp_tempo_utils | Function | returns nu_c for cloud water (values from 2-15) |
| get_rain_table_index | module_mp_tempo_main | Subroutine | get rain table indices from rain mass and lambda |
| get_snow_table_index | module_mp_tempo_main | Subroutine | get snow table index from snow mass |
| get_t1_subl | module_mp_tempo_main | Subroutine | calculations thermodynamic term used in depositional growth and melting |
| get_temperature_table_index | module_mp_tempo_main | Subroutine | get temperature table index |
| get_version | module_mp_tempo_params | Subroutine | returns the tempo version string from the README.md file or returns empty string if not found |
| graupel_check_and_update | module_mp_tempo_main | Subroutine | computes graupel contents, ilamg, and mvd_g and checks bounds |
| graupel_fallspeed | module_mp_tempo_main | Subroutine | calculates mass and number weighted fall speeds for graupel and optionally the substepping required and the top k-level of sedimentation |
| graupel_init | module_mp_tempo_main | Subroutine | initializes graupel number and volume if both are zero and hail-aware = true |
| hail_check_and_update | module_mp_tempo_main | Subroutine | computes hail contents and ilamh Intercept parameter from Jensen el al. (2023) |
| hail_fallspeed | module_mp_tempo_main | Subroutine | calculates mass weighted fall speeds for hail and optionally the substepping required and the top k-level of sedimentation |
| ice_check_and_update | module_mp_tempo_main | Subroutine | computes ice contents, ilami and checks bounds |
| ice_fallspeed | module_mp_tempo_main | Subroutine | calculates mass and number weighted fall speeds for ice and the substepping required and the top k-level of sedimentation |
| ice_nucleation | module_mp_tempo_main | Subroutine | ice nulceation |
| ice_processes | module_mp_tempo_main | Subroutine | ice processes including cloud ice depositional growth, conversion of cloud ice to snow, snow collecting cloud ice, rain collecting cloud ice, snow depositional growth, and graupel sublimation |
| init_ice_friendly_aerosols | module_mp_tempo_aerosols | Subroutine | sets ice-friendly aerosols to an exponential profile if aerosol-aware = true and no initial condition is provided by the host model |
| init_ml_data | module_mp_tempo_driver | Subroutine | initialize machine learning data for tempo microphysics |
| init_water_friendly_aerosols | module_mp_tempo_aerosols | Subroutine | sets water-friendly aerosols to an exponential profile if aerosol-aware = true and no initial condition is provided by the host model |
| initialize_array_efrw | module_mp_tempo_params | Subroutine | initializes the collision efficiency data array for rain collecting cloud water |
| initialize_array_efsw | module_mp_tempo_params | Subroutine | initializes the collision efficiency data array for snow collecting cloud water |
| initialize_arrays_ccn | module_mp_tempo_params | Subroutine | initialize data arrays for ccn lookup table |
| initialize_arrays_drop_evap | module_mp_tempo_params | Subroutine | initialize data arrays for drop evaporation data |
| initialize_arrays_freezewater | module_mp_tempo_params | Subroutine | initialize data arrays for Bigg (1953) freezing of cloud water and rain |
| initialize_arrays_qi_aut_qs | module_mp_tempo_params | Subroutine | initializes data arrays for cloud ice to snow conversion and growth |
| initialize_arrays_qr_acr_qg | module_mp_tempo_params | Subroutine | initialize data arrays for rain-graupel collection |
| initialize_arrays_qr_acr_qs | module_mp_tempo_params | Subroutine | initialize data arrays for rain-snow collection |
| initialize_bins_for_hail_size | module_mp_tempo_params | Subroutine | initialize log-spaced bins for hail size calculation |
| initialize_bins_for_radar | module_mp_tempo_params | Subroutine | initialize log-spaced bins for radar calculation |
| initialize_bins_for_tables | module_mp_tempo_params | Subroutine | initialize log-spaced bins of hydrometer quantities used for lookup tables |
| initialize_graupel_vars | module_mp_tempo_params | Subroutine | initialize graupel variables based on hail-aware configuration flag |
| initialize_parameters | module_mp_tempo_params | Subroutine | initialize tempo parameters and variables |
| koop_nucleation | module_mp_tempo_main | Function | aqueous solution freezing of water from Koop et al. (2000) newer research suggests that the freezing rate should be lower than original paper, so J_rate is reduced by two orders of magnitude |
| max_hail_diam | module_mp_tempo_diags | Subroutine | estimates maximmum hail diameter [mm] using a binned approach |
| melting | module_mp_tempo_main | Subroutine | melting of snow and graupel |
| qi_aut_qs | module_mp_tempo_utils | Subroutine | 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 |
| qr_acr_qg | module_mp_tempo_tables | Subroutine | rain collecting graupel (and inverse) using explicit integration |
| qr_acr_qs | module_mp_tempo_tables | Subroutine | calculates rain collecting snow (and inverse) |
| rain_check_and_update | module_mp_tempo_main | Subroutine | computes rain water contents, ilamr, and mvd_r and checks bounds |
| rain_evaporation | module_mp_tempo_main | Subroutine | rain evaporation that includes reduction in the evaporation rate in the presence of melting graupel |
| rain_fallspeed | module_mp_tempo_main | Subroutine | calculates mass and number weighted fall speeds for rain and optionally the substepping required and the top k-level of sedimentation |
| rain_snow_rain_graupel | module_mp_tempo_main | Subroutine | calculates rain-snow and rain-graupel collection |
| rayleigh_soak_wetgraupel | module_mp_tempo_diags | Subroutine | calculates backscatter cross section of wet snow or graupel using Maxwell-Garnett mixing formula and Rayleigh approximation |
| read_table_ccn | module_mp_tempo_driver | Subroutine | 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 |
| read_table_freezewater | module_mp_tempo_driver | Subroutine | read lookup table for frozen cloud and rain water |
| read_table_qr_acr_qg | module_mp_tempo_driver | Subroutine | read lookup table for rain-graupel collection |
| read_table_qr_acr_qs | module_mp_tempo_driver | Subroutine | read lookup table for rain-snow collection |
| reflectivity_10cm | module_mp_tempo_diags | Subroutine | 10-cm radar reflectivity |
| reflectivity_from_melting_graupel | module_mp_tempo_diags | Function | calculates radar reflectivity from melting graupel using binned approach |
| reflectivity_from_melting_snow | module_mp_tempo_diags | Function | calculates radar reflectivity from melting snow using binned approach |
| relu_activation | module_mp_tempo_ml | Subroutine | relu activation function |
| resolve_nc_value | module_mp_tempo_cfgs | Function | resolve the cloud number concentration value based on the input option |
| riming | module_mp_tempo_main | Subroutine | snow and graupel riming |
| save_or_read_ml_data | module_mp_tempo_ml | Subroutine | initializes and saves or returns neural network information |
| sedimentation | module_mp_tempo_main | Subroutine | computes sedimentation fluxes, adds fluxes to tendencies, and updates hydrometeor mass (and number and volume) |
| semilagrangian_sedimentation | module_mp_tempo_main | Subroutine | semi-lagrangian sedimentation scheme from Juang and Hong (2010) |
| snow_check_and_update | module_mp_tempo_main | Subroutine | computes snow mass |
| snow_fallspeed | module_mp_tempo_main | Subroutine | calcules mass weighted fall speeds for snow and optionally the substepping required and the top k-level of sedimentation |
| snow_moments | module_mp_tempo_utils | Subroutine | computes snow moments from Field et al. (2005) |
| standard_scaler_transform | module_mp_tempo_ml | Subroutine | standard scaler transformer |
| sum_tendencies | module_mp_tempo_main | Subroutine | sums tendencies for each hydrometeor category and temperature and moisture |
| tempo_aerosol_surface_emissions | module_mp_tempo_driver | Subroutine | adds aerosol surface emissions to the 3D field |
| tempo_build_tables | module_mp_tempo_tables | Subroutine | builds three lookup tables for tempo microphysics |
| tempo_init | module_mp_tempo_driver | Subroutine | initialize tempo microphysics \section arg_table_tempo_init Argument Table \htmlinclude tempo_init.html |
| tempo_main | module_mp_tempo_main | Subroutine | tempo main |
| tempo_ml_predict_cloud_number | module_mp_tempo_ml | Subroutine | predicts number concentration |
| tempo_run | module_mp_tempo_driver | Subroutine | \section arg_table_tempo_run Argument Table \htmlinclude tempo_run.html |
| test_cloud_number_aerosolaware | tests | Subroutine | |
| test_cloud_number_ml | tests | Subroutine | |
| test_cloud_number_non_aerosolaware | tests | Subroutine | |
| test_graupel_sedimentation | tests | Subroutine | test graupel sedimentation |
| test_ml_cloud_effective_radius | tests | Subroutine | |
| test_snow_sedimentation | tests | Subroutine | |
| test_tempo_init | tests | Subroutine | test tempo initialization procedure use ml_for_bl_nc_flag = .true. to initialize ml data which is used for a few tests test specific flags are then set in each test |
| thermo_vars | module_mp_tempo_main | Subroutine | computes thermodynamic variables |
| warm_rain | module_mp_tempo_main | Subroutine | computes warm-rain process rates -- condensation/evaporation happen later |
| write_table_freezewater | module_mp_tempo_tables | Subroutine | write data for frozen cloud water and rain to a file |
| write_table_qr_acr_qg | module_mp_tempo_tables | Subroutine | write data for rain-graupel collection to a file |
| write_table_qr_acr_qs | module_mp_tempo_tables | Subroutine | write data for rain-snow collection to a file |