diff --git a/.gitmodules b/.gitmodules index 6606b271..d8223bfd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,9 +6,9 @@ fxDONOTUSEurl = https://github.com/NCAR/MMM-physics.git [submodule "pumas"] path = schemes/pumas/pumas - url = https://github.com/ESCOMP/PUMAS + url = https://github.com/nusbaume/PUMAS fxrequired = AlwaysRequired - fxtag = pumas_cam-release_v1.39 + fxtag = 101b267 fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS [submodule "rte-rrtmgp"] path = schemes/rrtmgp/ext diff --git a/doc/NamesNotInDictionary.txt b/doc/NamesNotInDictionary.txt index 6359b6fc..2b7b8fae 100644 --- a/doc/NamesNotInDictionary.txt +++ b/doc/NamesNotInDictionary.txt @@ -1,14 +1,14 @@ ####################### Date/time of when script was run: -2025-07-09 16:37:10.272741 +2025-08-14 14:27:18.156834 ####################### Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/test/test_schemes/initialize_constituents.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/test/test_schemes/initialize_constituents.meta - ccpp_error_code - ccpp_error_message @@ -16,7 +16,7 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/test/test_schemes/file_io_test.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/test/test_schemes/file_io_test.meta - ccpp_error_code - ccpp_error_message @@ -24,102 +24,153 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/held_suarez/held_suarez_1994.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/rasch_kristjansson/prognostic_cloud_water.meta + - accretion_of_cloud_ice_by_snow + - accretion_of_cloud_liquid_water_by_rain + - accretion_of_cloud_liquid_water_by_snow - ccpp_error_code - ccpp_error_message - - scheme_name - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/hack_shallow/set_general_conv_fluxes_to_shallow.meta - - - frozen_precipitation_flux_at_interface_due_to_convection - - frozen_precipitation_flux_at_interface_due_to_shallow_convection - - lwe_frozen_precipitation_rate_at_surface_due_to_convection - - lwe_frozen_precipitation_rate_at_surface_due_to_shallow_convection - - lwe_precipitation_rate_at_surface_due_to_convection - - lwe_precipitation_rate_at_surface_due_to_shallow_convection - - net_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column - - precipitation_flux_at_interface_due_to_convection - - precipitation_flux_at_interface_due_to_shallow_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_shallow_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_shallow_convection - - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_convection - - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection + - cloud_area_fraction + - density_of_dry_air_at_stp + - flag_for_relative_humidity_threshold_for_cloud_formation_in_polar_stratosphere_for_rk_microphysics + - freezing_point_of_water + - gas_constant_of_water_vapor + - geopotential_height_wrt_surface_at_interface + - latent_heat_of_fusion_of_water_at_0c + - latitude_degrees_north + - lwe_snow_precipitation_rate_at_surface_due_to_microphysics + - lwe_stratiform_precipitation_rate_at_surface + - lwe_surface_snow_depth_over_land_from_coupler + - mass_fraction_of_ice_content_within_stratiform_cloud + - mass_fraction_of_snow_content_within_stratiform_cloud + - net_condensation_rate_due_to_microphysics + - pi_constant + - precipitation_production_due_to_microphysics + - rate_of_evaporation_of_falling_snow_due_to_microphysics + - rate_of_evaporation_of_precipitation_due_to_microphysics + - ratio_of_water_vapor_to_dry_air_molecular_weights + - relative_humidity_divided_by_cloud_area_fraction_perturbation + - relative_humidity_threshold_for_cloud_formation + - relative_humidity_threshold_for_cloud_formation_in_polar_stratosphere_for_rk_microphysics + - relative_importance_of_cloud_ice_autoconversion + - relative_importance_of_cloud_liquid_water_autoconversion + - relative_importance_of_rain_accreting_cloud_liquid_water + - relative_importance_of_snow_accreting_cloud_ice + - relative_importance_of_snow_accreting_cloud_liquid_water + - sea_ice_area_fraction_from_coupler + - smoothed_land_area_fraction + - snow_production_due_to_microphysics + - stratiform_rain_and_snow_flux_at_interface + - stratiform_snow_flux_at_interface + - tendency_of_air_temperature_not_due_to_microphysics + - tendency_of_cloud_ice_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_ice_to_snow_autoconversion + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_liquid_to_rain_autoconversion + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_liquid_to_snow_autoconversion + - tendency_of_cloud_water_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_of_precipitation + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_freezing_of_precipitation + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_snow_melt + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics + - tropopause_vertical_layer_index + - tunable_parameter_for_autoconversion_of_cold_ice_for_rk_microphysics + - tunable_parameter_for_autoconversion_of_warm_ice_for_rk_microphysics + - tunable_parameter_for_cloud_water_autoconversion_for_rk_microphysics + - tunable_parameter_for_precipitation_evaporation_for_rk_microphysics + - vertical_layer_index_of_troposphere_cloud_physics_top -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/hack_shallow/convect_shallow_sum_to_deep.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/rasch_kristjansson/rk_stratiform.meta - - atmosphere_convective_mass_flux_due_to_all_convection - - atmosphere_convective_mass_flux_due_to_deep_convection - - atmosphere_convective_mass_flux_due_to_shallow_convection - ccpp_error_code - ccpp_error_message + - cloud_area_fraction + - cloud_water_mixing_ratio_wrt_moist_air_and_condensed_water_on_previous_timestep + - deep_convective_cloud_area_fraction - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_all_convection - - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_deep_convection - - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_shallow_convection - - pressure_at_cloud_base_for_all_convection - - pressure_at_cloud_top_for_all_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection_excluding_subcloud_evaporation - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection_excluding_subcloud_evaporation - - vertical_index_at_cloud_base_for_all_convection - - vertical_index_at_cloud_base_for_shallow_convection - - vertical_index_at_cloud_top_for_all_convection - - vertical_index_at_cloud_top_for_shallow_convection - - vertical_index_at_top_of_deep_convection_for_convective_columns - - vertical_index_of_deep_convection_launch_level_for_convective_columns + - freezing_point_of_water + - land_area_fraction_from_coupler + - latent_heat_of_fusion_of_water_at_0c + - lwe_large_scale_precipitation_rate_at_surface + - lwe_snow_and_cloud_ice_precipitation_rate_at_surface_due_to_microphysics + - lwe_snow_precipitation_rate_at_surface_due_to_microphysics + - lwe_stratiform_precipitation_rate_at_surface + - lwe_surface_snow_depth_over_land_from_coupler + - mass_fraction_of_ice_content_within_stratiform_cloud + - net_condensation_rate_due_to_microphysics + - ocean_area_fraction_from_coupler + - rate_of_condensation_minus_evaporation_for_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - rate_of_condensation_minus_evaporation_for_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - rate_of_evaporation_of_precipitation_due_to_microphysics + - ratio_of_dry_air_gas_constant_to_specific_heat_of_dry_air_at_constant_pressure + - reference_temperature_lapse_rate + - relative_humidity_divided_by_cloud_area_fraction_perturbation + - relative_humidity_threshold_for_cloud_formation + - sea_ice_area_fraction_from_coupler + - sea_surface_temperature_from_coupler + - shallow_convective_cloud_area_fraction + - smoothed_land_area_fraction + - stratiform_cloud_water_surface_flux_due_to_sedimentation + - stratiform_lwe_cloud_ice_surface_flux_due_to_sedimentation + - stratiform_rain_flux_at_surface_due_to_sedimentation + - surface_air_pressure + - tendency_of_air_temperature_not_due_to_microphysics + - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_cloud_ice_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_ice_to_snow_autoconversion + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_liquid_to_rain_autoconversion + - tendency_of_cloud_water_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_cloud_ice_and_cloud_liquid_repartitioning + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_condensation_minus_evaporation + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_of_precipitation + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_freezing_of_precipitation + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_snow_melt + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics + - vertical_layer_index_of_cloud_fraction_top - vertically_integrated_cloud_liquid_water_tendency_due_to_all_convection_to_be_applied_later_in_time_loop - - vertically_integrated_cloud_liquid_water_tendency_due_to_shallow_convection_to_be_applied_later_in_time_loop + - water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_on_previous_timestep -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/hack_shallow/set_shallow_conv_fluxes_to_general.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/rasch_kristjansson/cloud_particle_sedimentation.meta - - lwe_precipitation_rate_at_surface_due_to_convection - - lwe_precipitation_rate_at_surface_due_to_shallow_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection_excluding_subcloud_evaporation + - air_pressure_at_interface + - ccpp_error_code + - ccpp_error_message + - cloud_area_fraction + - freezing_point_of_water + - land_area_fraction_from_coupler + - latent_heat_of_fusion_of_water_at_0c + - lwe_surface_snow_depth_over_land_from_coupler + - magnitude_of_vertical_pressure_velocity_of_cloud_ice_due_to_sedimentation + - magnitude_of_vertical_pressure_velocity_of_cloud_liquid_water_due_to_sedimentation + - ocean_area_fraction_from_coupler + - sea_ice_area_fraction_from_coupler + - smoothed_land_area_fraction + - stratiform_lwe_cloud_ice_surface_flux_due_to_sedimentation + - stratiform_rain_flux_at_surface_due_to_sedimentation + - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - tunable_parameter_for_autoconversion_of_cold_ice_for_rk_microphysics + - tunable_parameter_for_ice_fall_velocity_for_rk_microphysics -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/hack_shallow/hack_convect_shallow.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/check_energy_gmean_diagnostics.meta - - atmosphere_convective_mass_flux_due_to_shallow_convection - - ccpp_constituent_properties - - ccpp_constituent_tendencies - - ccpp_constituents - ccpp_error_code - ccpp_error_message - - characteristic_adjustment_time_for_shallow_convection - - convective_water_vapor_wrt_moist_air_and_condensed_water_perturbation_due_to_pbl_eddies - - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_shallow_convection - - flag_for_cloud_area_fraction_to_use_shallow_convection_calculated_cloud_area_fraction - - in_cloud_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_shallow_convection - - liquid_water_static_energy_flux_due_to_shallow_convection - - lwe_precipitation_rate_at_surface_due_to_shallow_convection - - net_liquid_and_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column - - number_of_ccpp_constituents - - rain_water_autoconversion_coefficient_for_shallow_convection - - reference_pressure_at_interface - - scheme_name - - shallow_convective_cloud_area_fraction_from_shallow_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection_excluding_subcloud_evaporation - - total_water_flux_due_to_shallow_convection - - vertical_index_at_cloud_base_for_shallow_convection - - vertical_index_at_cloud_top_for_shallow_convection - - vertical_layer_index_of_cloud_fraction_top - - vertically_integrated_cloud_liquid_water_tendency_due_to_shallow_convection_to_be_applied_later_in_time_loop + - flag_for_energy_global_means_output + - global_mean_heating_rate_correction_for_energy_conservation + - global_mean_vertically_integrated_total_energy_using_dycore_energy_formula_at_end_of_physics_timestep + - global_mean_vertically_integrated_total_energy_using_dycore_energy_formula_at_start_of_physics_timestep -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/check_energy_fix_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/check_energy_fix_diagnostics.meta - ccpp_error_code - ccpp_error_message @@ -130,7 +181,30 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/zm_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/zm_convr_tendency_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/sima_state_diagnostics.meta + + - air_pressure_at_interface + - air_pressure_of_dry_air_at_interface + - ccpp_constituent_properties + - ccpp_constituents + - ccpp_error_code + - ccpp_error_message + - geopotential_height_wrt_surface_at_interface + - ln_air_pressure_at_interface + - ln_air_pressure_of_dry_air_at_interface + - surface_air_pressure + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/zm_diagnostics.meta - atmosphere_convective_mass_flux_due_to_deep_convection - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns @@ -159,17 +233,37 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/zm_evap_tendency_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/zm_tendency_diagnostics.meta + - ccpp_constituent_properties + - ccpp_constituent_tendencies - ccpp_error_code - ccpp_error_message - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_deep_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_deep_convection - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/rk_stratiform_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/sima_tend_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/zm_momtran_tendency_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/rayleigh_friction_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/rk_stratiform_diagnostics.meta - accretion_of_cloud_ice_by_snow - accretion_of_cloud_liquid_water_by_rain @@ -205,7 +299,31 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/tropopause_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/kessler_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/convective_cloud_cover_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + - deep_convective_cloud_area_fraction + - shallow_convective_cloud_area_fraction + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/compute_cloud_fraction_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + - stratiform_cloud_area_fraction + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/tropopause_diagnostics.meta - ccpp_error_code - ccpp_error_message @@ -235,53 +353,20 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/rayleigh_friction_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/check_energy_diagnostics.meta - ccpp_error_code - ccpp_error_message + - cumulative_total_energy_boundary_flux_using_physics_energy_formula + - cumulative_total_water_boundary_flux + - ratio_of_specific_heat_of_air_used_in_physics_energy_formula_to_specific_heat_of_air_used_in_dycore_energy_formula + - specific_heat_of_air_used_in_dycore + - vertically_integrated_total_energy_using_physics_energy_formula + - vertically_integrated_total_water -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/compute_cloud_fraction_diagnostics.meta - - - ccpp_error_code - - ccpp_error_message - - stratiform_cloud_area_fraction - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/sima_state_diagnostics.meta - - - air_pressure_at_interface - - air_pressure_of_dry_air_at_interface - - ccpp_constituent_properties - - ccpp_constituents - - ccpp_error_code - - ccpp_error_message - - geopotential_height_wrt_surface_at_interface - - ln_air_pressure_at_interface - - ln_air_pressure_of_dry_air_at_interface - - surface_air_pressure - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/kessler_diagnostics.meta - - - ccpp_error_code - - ccpp_error_message - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/convective_cloud_cover_diagnostics.meta - - - ccpp_error_code - - ccpp_error_message - - deep_convective_cloud_area_fraction - - shallow_convective_cloud_area_fraction - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/convect_shallow_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/convect_shallow_diagnostics.meta - atmosphere_convective_mass_flux_due_to_all_convection - atmosphere_convective_mass_flux_due_to_shallow_convection @@ -311,89 +396,124 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/sima_tend_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/cloud_particle_sedimentation_diagnostics.meta + + - ccpp_error_code + - ccpp_error_message + - stratiform_lwe_cloud_ice_surface_flux_due_to_sedimentation + - stratiform_rain_flux_at_surface_due_to_sedimentation + - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/sima_diagnostics/zm_evap_tendency_diagnostics.meta - ccpp_error_code - ccpp_error_message + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_deep_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_deep_convection + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/zm_tendency_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/musica/musica_ccpp.meta + - blackbody_temperature_at_surface - ccpp_constituent_properties - - ccpp_constituent_tendencies + - ccpp_constituents - ccpp_error_code - ccpp_error_message + - cloud_area_fraction + - dynamic_constituents_for_musica_ccpp + - earth_sun_distance + - extraterrestrial_radiation_flux + - geopotential_height_wrt_surface_at_interface + - molecular_weight_of_dry_air + - photolysis_wavelength_grid_interfaces + - solar_zenith_angle + - surface_albedo_due_to_UV_and_VIS_direct -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/zm_convr_tendency_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/dry_adiabatic_adjust/dadadj.meta + - air_pressure_at_interface + - binary_indicator_for_dry_adiabatic_adjusted_grid_cell - ccpp_error_code - ccpp_error_message + - number_of_iterations_for_dry_adiabatic_adjustment_algorithm_convergence + - number_of_vertical_levels_from_model_top_where_dry_adiabatic_adjustment_occurs + - scheme_name - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/cloud_particle_sedimentation_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/utilities/geopotential_temp.meta + - air_pressure_at_interface + - ccpp_constituent_properties + - ccpp_constituents - ccpp_error_code - ccpp_error_message - - stratiform_lwe_cloud_ice_surface_flux_due_to_sedimentation - - stratiform_rain_flux_at_surface_due_to_sedimentation - - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - geopotential_height_wrt_surface_at_interface + - ln_air_pressure_at_interface + - number_of_ccpp_constituents -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/zm_momtran_tendency_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/utilities/static_energy.meta - ccpp_error_code - ccpp_error_message -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/check_energy_gmean_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/utilities/state_converters.meta - ccpp_error_code - ccpp_error_message - - flag_for_energy_global_means_output - - global_mean_heating_rate_correction_for_energy_conservation - - global_mean_vertically_integrated_total_energy_using_dycore_energy_formula_at_end_of_physics_timestep - - global_mean_vertically_integrated_total_energy_using_dycore_energy_formula_at_start_of_physics_timestep -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/sima_diagnostics/check_energy_diagnostics.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/utilities/to_be_ccppized_temporary.meta - ccpp_error_code - ccpp_error_message - - cumulative_total_energy_boundary_flux_using_physics_energy_formula - - cumulative_total_water_boundary_flux - - ratio_of_specific_heat_of_air_used_in_physics_energy_formula_to_specific_heat_of_air_used_in_dycore_energy_formula - - specific_heat_of_air_used_in_dycore - - vertically_integrated_total_energy_using_physics_energy_formula - - vertically_integrated_total_water -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/kessler/kessler_update.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/utilities/physics_tendency_updaters.meta + - ccpp_constituent_tendencies + - ccpp_constituents - ccpp_error_code - ccpp_error_message -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/kessler/kessler.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/utilities/qneg.meta + - ccpp_constituent_minimum_values + - ccpp_constituent_properties + - ccpp_constituents - ccpp_error_code - ccpp_error_message + - number_of_ccpp_constituents - scheme_name -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/mmm/mmm_physics_compat.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/thermo_water_update/thermo_water_update.meta + + - ccpp_constituents + - specific_heat_of_air_used_in_dycore + - total_energy_formula_for_dycore + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/mmm/mmm_physics_compat.meta - ccpp_error_code - ccpp_error_message @@ -402,7 +522,7 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/mmm/bl_gwdo_compat.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/mmm/bl_gwdo_compat.meta - air_pressure_at_interface - atmosphere_x_stress_due_to_orographic_gwd @@ -433,234 +553,105 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/zm_conv_momtran.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/tropopause_find/tropopause_find.meta - - atmosphere_detrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_downdraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_updraft_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_updraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - air_pressure_at_interface - ccpp_error_code - ccpp_error_message - - current_timestep_number - - flag_for_momentum_transport_by_zhang_mcfarlane_deep_convection_scheme - - horizontal_index_of_convective_columns_for_deep_convection_for_convective_columns - - in_cloud_eastward_wind_in_downdraft_due_to_deep_convection - - in_cloud_eastward_wind_in_updraft_due_to_deep_convection - - in_cloud_northward_wind_in_downdraft_due_to_deep_convection - - in_cloud_northward_wind_in_updraft_due_to_deep_convection - - index_of_first_column_of_gathered_deep_convection_arrays - - index_of_last_column_of_gathered_deep_convection_arrays - - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_downdraft_for_zhang_mcfarlane_deep_convection_scheme - - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_updraft_for_zhang_mcfarlane_deep_convection_scheme - - pressure_thickness_for_deep_convection_for_convective_columns - - pressure_thickness_for_subcloud_layer_for_deep_convection_for_convective_columns + - fill_value_for_diagnostic_output + - fractional_calendar_days_on_end_of_current_timestep + - geopotential_height_wrt_surface_at_interface + - pi_constant + - ratio_of_dry_air_gas_constant_to_specific_heat_of_dry_air_at_constant_pressure - scheme_name - - tendency_of_eastward_wind_due_to_zhang_mcfarlane_deep_convective_downdraft_pressure_gradient_term - - tendency_of_eastward_wind_due_to_zhang_mcfarlane_deep_convective_updraft_pressure_gradient_term - - tendency_of_northward_wind_due_to_zhang_mcfarlane_deep_convective_downdraft_pressure_gradient_term - - tendency_of_northward_wind_due_to_zhang_mcfarlane_deep_convective_updraft_pressure_gradient_term - - vertical_index_at_top_of_deep_convection_for_convective_columns - - vertical_index_of_deep_convection_launch_level_for_convective_columns + - tropopause_air_pressure + - tropopause_air_pressure_from_chemical_method + - tropopause_air_pressure_from_climatological_method + - tropopause_air_pressure_from_cold_point_method + - tropopause_air_pressure_from_hybrid_stobie_linoz_with_climatological_backup_method + - tropopause_air_pressure_from_lapse_rate_method + - tropopause_air_pressure_from_tropopause_climatology_dataset + - tropopause_air_temperature + - tropopause_air_temperature_from_chemical_method + - tropopause_air_temperature_from_climatological_method + - tropopause_air_temperature_from_cold_point_method + - tropopause_air_temperature_from_hybrid_stobie_linoz_with_climatological_backup_method + - tropopause_air_temperature_from_lapse_rate_method + - tropopause_calendar_days_from_tropopause_climatology + - tropopause_geopotential_height_wrt_surface + - tropopause_geopotential_height_wrt_surface_from_chemical_method + - tropopause_geopotential_height_wrt_surface_from_climatological_method + - tropopause_geopotential_height_wrt_surface_from_cold_point_method + - tropopause_geopotential_height_wrt_surface_from_hybrid_stobie_linoz_with_climatological_backup_method + - tropopause_geopotential_height_wrt_surface_from_lapse_rate_method + - tropopause_vertical_layer_index + - tropopause_vertical_layer_index_from_chemical_method + - tropopause_vertical_layer_index_from_climatological_method + - tropopause_vertical_layer_index_from_cold_point_method + - tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method + - tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method_for_chemistry + - tropopause_vertical_layer_index_from_lapse_rate_method + - vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_linearized_ozone_chemistry + - vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_stratospheric_chemistry -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/set_deep_conv_fluxes_to_general.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/dme_adjust/dme_adjust.meta - - lwe_precipitation_rate_at_surface_due_to_convection - - lwe_precipitation_rate_at_surface_due_to_deep_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection_excluding_subcloud_evaporation + - air_pressure_at_interface + - ccpp_constituent_properties + - ccpp_constituents + - ccpp_error_code + - ccpp_error_message + - is_moist_basis_dycore + - ln_air_pressure_at_interface + - number_of_ccpp_constituents + - surface_air_pressure + - total_ice_water_mixing_ratio_wrt_moist_air_and_condensed_water_before_physics + - total_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water_before_physics + - water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_before_physics -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/zm_conv_evap.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/dycore_energy_consistency_adjust.meta - ccpp_error_code - ccpp_error_message - - cloud_area_fraction - - freezing_point_of_water - - frozen_precipitation_flux_at_interface_due_to_convection - - land_area_fraction_from_coupler - - latent_heat_of_fusion_of_water_at_0c - - lwe_frozen_precipitation_rate_at_surface_due_to_convection - - lwe_precipitation_rate_at_surface_due_to_convection - - mass_fraction_of_snow_content_within_stratiform_cloud - - precipitation_flux_at_interface_due_to_convection - - scheme_name - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_convection - - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water - - tunable_evaporation_efficiency_over_land_for_zhang_mcfarlane_deep_convection_scheme - - tunable_evaporation_efficiency_over_ocean_for_zhang_mcfarlane_deep_convection_scheme + - flag_for_dycore_energy_consistency_adjustment + - ratio_of_specific_heat_of_air_used_in_physics_energy_formula_to_specific_heat_of_air_used_in_dycore_energy_formula -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/set_general_conv_fluxes_to_deep.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/check_energy_scaling.meta - - frozen_precipitation_flux_at_interface_due_to_convection - - frozen_precipitation_flux_at_interface_due_to_deep_convection - - lwe_frozen_precipitation_rate_at_surface_due_to_convection - - lwe_frozen_precipitation_rate_at_surface_due_to_deep_convection - - lwe_precipitation_rate_at_surface_due_to_convection - - lwe_precipitation_rate_at_surface_due_to_deep_convection - - precipitation_flux_at_interface_due_to_convection - - precipitation_flux_at_interface_due_to_deep_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_deep_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_convection - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_deep_convection - - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_convection - - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection + - ccpp_error_code + - ccpp_error_message + - ratio_of_specific_heat_of_air_used_in_physics_energy_formula_to_specific_heat_of_air_used_in_dycore_energy_formula + - specific_heat_of_air_used_in_dycore -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/zm_conv_convtran.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/check_energy_fix.meta - - atmosphere_detrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_downdraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_updraft_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_updraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - ccpp_constituent_properties - - ccpp_constituent_tendencies - - ccpp_constituents + - air_pressure_at_interface - ccpp_error_code - ccpp_error_message - - current_timestep_number - - flag_for_tracer_transport_by_zhang_mcfarlane_deep_scheme - - fraction_of_water_insoluble_convectively_transported_species - - horizontal_index_of_convective_columns_for_deep_convection_for_convective_columns - - index_of_first_column_of_gathered_deep_convection_arrays - - index_of_last_column_of_gathered_deep_convection_arrays - - number_of_ccpp_constituents - - pressure_thickness_for_deep_convection_for_convective_columns - - pressure_thickness_for_subcloud_layer_for_deep_convection_for_convective_columns + - global_mean_heating_rate_correction_for_energy_conservation + - net_sensible_heat_flux_through_top_and_bottom_of_atmosphere_column - scheme_name - - vertical_index_at_top_of_deep_convection_for_convective_columns - - vertical_index_of_deep_convection_launch_level_for_convective_columns -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/zm_convr.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/check_energy_save_teout.meta - - air_pressure_at_interface - - atmosphere_convective_mass_flux_due_to_deep_convection - - atmosphere_detrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_downdraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_updraft_convective_mass_flux_for_deep_convection_for_convective_columns - - atmosphere_updraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns - - cape_threshold_for_zhang_mcfarlane_deep_convection_scheme - ccpp_error_code - ccpp_error_message - - cloud_condensate_to_precipitation_autoconversion_coefficient_over_land_for_zhang_mcfarlane_deep_convection_scheme - - cloud_condensate_to_precipitation_autoconversion_coefficient_over_ocean_for_zhang_mcfarlane_deep_convection_scheme - - convective_temperature_perturbation_due_to_pbl_eddies - - deep_convective_adjustment_timescale_for_zhang_mcfarlane_deep_convection_scheme - - detrainment_mass_flux_due_to_deep_convection - - detrainment_of_cloud_ice_wrt_moist_air_and_condensed_water_due_to_deep_convection - - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_deep_convection - - entrainment_rate_for_cape_for_zhang_mcfarlane_deep_convection_scheme - - flag_for_no_deep_convection_in_pbl - - flag_for_well_mixed_pbl_parcel_property_for_zhang_mcfarlane_deep_convection_scheme - - fraction_of_pbl_depth_mixed_for_initial_zhang_mcfarlane_parcel_properties - - freezing_point_of_water - - gas_constant_of_water_vapor - - geopotential_height_wrt_surface_at_interface - - horizontal_index_of_convective_columns_for_deep_convection_for_convective_columns - - in_cloud_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_deep_convection - - index_of_last_column_of_gathered_deep_convection_arrays - - land_area_fraction_from_coupler - - latent_heat_of_fusion_of_water_at_0c - - lwe_precipitation_rate_at_surface_due_to_deep_convection - - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_downdraft_for_zhang_mcfarlane_deep_convection_scheme - - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_updraft_for_zhang_mcfarlane_deep_convection_scheme - - number_of_negative_buoyancy_layers_allowed_before_convection_top_for_zhang_mcfarlane_deep_convection_scheme - - parcel_temperature_perturbation_for_zhang_mcfarlane_deep_convection_scheme - - pressure_thickness_for_deep_convection_for_convective_columns - - pressure_thickness_for_subcloud_layer_for_deep_convection_for_convective_columns - - ratio_of_water_vapor_to_dry_air_molecular_weights - - reference_pressure_at_interface - - scheme_name - - specific_heat_of_liquid_water_at_constant_pressure - - specific_heat_of_water_vapor_at_constant_pressure - - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection_excluding_subcloud_evaporation - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_from_cloud_condensation_minus_precipitation_evaporation_due_to_deep_convection - - tunable_evaporation_efficiency_over_land_for_zhang_mcfarlane_deep_convection_scheme - - tunable_evaporation_efficiency_over_ocean_for_zhang_mcfarlane_deep_convection_scheme - - vertical_index_at_top_of_deep_convection_for_convective_columns - - vertical_index_of_deep_convection_launch_level_for_convective_columns - - vertically_integrated_cloud_ice_tendency_due_to_all_convection_to_be_applied_later_in_time_loop - - vertically_integrated_cloud_liquid_water_tendency_due_to_all_convection_to_be_applied_later_in_time_loop - - zhang_mcfarlane_convective_available_potential_energy - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/zhang_mcfarlane/zm_conv_options.meta - - - cape_threshold_for_zhang_mcfarlane_deep_convection_scheme - - cloud_condensate_to_precipitation_autoconversion_coefficient_over_land_for_zhang_mcfarlane_deep_convection_scheme - - cloud_condensate_to_precipitation_autoconversion_coefficient_over_ocean_for_zhang_mcfarlane_deep_convection_scheme - - deep_convective_adjustment_timescale_for_zhang_mcfarlane_deep_convection_scheme - - entrainment_rate_for_cape_for_zhang_mcfarlane_deep_convection_scheme - - flag_for_no_deep_convection_in_pbl - - flag_for_well_mixed_pbl_parcel_property_for_zhang_mcfarlane_deep_convection_scheme - - fraction_of_pbl_depth_mixed_for_initial_zhang_mcfarlane_parcel_properties - - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_downdraft_for_zhang_mcfarlane_deep_convection_scheme - - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_updraft_for_zhang_mcfarlane_deep_convection_scheme - - number_of_negative_buoyancy_layers_allowed_before_convection_top_for_zhang_mcfarlane_deep_convection_scheme - - parcel_temperature_perturbation_for_zhang_mcfarlane_deep_convection_scheme - - tunable_evaporation_efficiency_over_land_for_zhang_mcfarlane_deep_convection_scheme - - tunable_evaporation_efficiency_over_ocean_for_zhang_mcfarlane_deep_convection_scheme - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/dme_adjust/dme_adjust.meta - - - air_pressure_at_interface - - ccpp_constituent_properties - - ccpp_constituents - - ccpp_error_code - - ccpp_error_message - - is_moist_basis_dycore - - ln_air_pressure_at_interface - - number_of_ccpp_constituents - - surface_air_pressure - - total_ice_water_mixing_ratio_wrt_moist_air_and_condensed_water_before_physics - - total_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water_before_physics - - water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_before_physics - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/dycore_energy_consistency_adjust.meta - - - ccpp_error_code - - ccpp_error_message - - flag_for_dycore_energy_consistency_adjustment - - ratio_of_specific_heat_of_air_used_in_physics_energy_formula_to_specific_heat_of_air_used_in_dycore_energy_formula - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/check_energy_zero_fluxes.meta - - - ccpp_error_code - - ccpp_error_message - - net_liquid_and_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column - - net_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column - - net_sensible_heat_flux_through_top_and_bottom_of_atmosphere_column - - net_water_vapor_fluxes_through_top_and_bottom_of_atmosphere_column - - scheme_name + - vertically_integrated_total_energy_using_dycore_energy_formula + - vertically_integrated_total_energy_using_dycore_energy_formula_at_end_of_physics_timestep -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/check_energy_chng.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/check_energy_chng.meta - air_pressure_of_dry_air_at_interface - air_temperature_at_start_of_physics_timestep @@ -693,36 +684,19 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/check_energy_fix.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/check_energy_zero_fluxes.meta - - air_pressure_at_interface - ccpp_error_code - ccpp_error_message - - global_mean_heating_rate_correction_for_energy_conservation + - net_liquid_and_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column + - net_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column - net_sensible_heat_flux_through_top_and_bottom_of_atmosphere_column + - net_water_vapor_fluxes_through_top_and_bottom_of_atmosphere_column - scheme_name -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/check_energy_save_teout.meta - - - ccpp_error_code - - ccpp_error_message - - vertically_integrated_total_energy_using_dycore_energy_formula - - vertically_integrated_total_energy_using_dycore_energy_formula_at_end_of_physics_timestep - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/check_energy_scaling.meta - - - ccpp_error_code - - ccpp_error_message - - ratio_of_specific_heat_of_air_used_in_physics_energy_formula_to_specific_heat_of_air_used_in_dycore_energy_formula - - specific_heat_of_air_used_in_dycore - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/conservation_adjust/check_energy/check_energy_gmean/check_energy_gmean.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/conservation_adjust/check_energy/check_energy_gmean/check_energy_gmean.meta - air_pressure_at_interface - ccpp_error_code @@ -738,395 +712,639 @@ Non-dictionary standard names found in the following metadata files: -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/cloud_fraction/cloud_fraction_fice.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/kessler/kessler_update.meta - ccpp_error_code - ccpp_error_message - - freezing_point_of_water - - mass_fraction_of_ice_content_within_stratiform_cloud - - mass_fraction_of_snow_content_within_stratiform_cloud - - vertical_layer_index_of_cloud_fraction_top -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/cloud_fraction/set_cloud_fraction_top.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/kessler/kessler.meta - ccpp_error_code - ccpp_error_message - - vertical_layer_index_of_cloud_fraction_top - - vertical_layer_index_of_troposphere_cloud_physics_top + - scheme_name -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/cloud_fraction/compute_cloud_fraction.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/held_suarez/held_suarez_1994.meta - ccpp_error_code - ccpp_error_message - - cloud_area_fraction - - cloud_area_fraction_from_relative_humidity_method - - control_for_ice_cloud_fraction - - deep_convective_cloud_area_fraction - - do_ice_cloud_fraction_for_cloud_fraction - - do_no_stratification_based_cloud_fraction - - do_relative_humidity_perturbation_for_cloud_fraction - - do_vavrus_freeze_dry_adjustment_for_cloud_fraction - - freezing_point_of_water - - land_area_fraction_from_coupler - - lwe_surface_snow_depth_over_land_from_coupler - - ocean_area_fraction_from_coupler - - ratio_of_dry_air_gas_constant_to_specific_heat_of_dry_air_at_constant_pressure - - reference_temperature_lapse_rate - - relative_humidity_threshold_for_cloud_formation - - sea_surface_temperature_from_coupler - - shallow_convective_cloud_area_fraction - - stratiform_cloud_area_fraction - - stratiform_cloud_ice_area_fraction - - stratiform_cloud_liquid_area_fraction - - surface_air_pressure - - tunable_parameter_for_adjustment_to_minimum_relative_humidity_for_low_stable_clouds_for_land_without_snow_cover_for_cloud_fraction - - tunable_parameter_for_bottom_pressure_bound_for_mid_level_liquid_stratus_for_cloud_fraction - - tunable_parameter_for_critical_relative_humidity_for_ice_clouds_for_cloud_fraction_using_wilson_and_ballard_scheme - - tunable_parameter_for_minimum_relative_humidity_for_high_stable_clouds_for_cloud_fraction - - tunable_parameter_for_minimum_relative_humidity_for_low_stable_clouds_for_cloud_fraction - - tunable_parameter_for_top_pressure_bound_for_mid_level_clouds_for_cloud_fraction - - vertical_layer_index_of_cloud_fraction_top + - scheme_name -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/cloud_fraction/convective_cloud_cover.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/zm_conv_momtran.meta - - atmosphere_convective_mass_flux_due_to_all_convection - - atmosphere_convective_mass_flux_due_to_shallow_convection + - atmosphere_detrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_downdraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_updraft_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_updraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns - ccpp_error_code - ccpp_error_message - - deep_convective_cloud_area_fraction - - flag_for_cloud_area_fraction_to_use_shallow_convection_calculated_cloud_area_fraction - - shallow_convective_cloud_area_fraction - - shallow_convective_cloud_area_fraction_from_shallow_convection - - tunable_parameter_for_deep_convection_1_for_cloud_fraction - - tunable_parameter_for_deep_convection_2_for_cloud_fraction - - tunable_parameter_for_shallow_convection_1_for_cloud_fraction - - tunable_parameter_for_shallow_convection_2_for_cloud_fraction - - vertical_layer_index_of_cloud_fraction_top + - current_timestep_number + - flag_for_momentum_transport_by_zhang_mcfarlane_deep_convection_scheme + - horizontal_index_of_convective_columns_for_deep_convection_for_convective_columns + - in_cloud_eastward_wind_in_downdraft_due_to_deep_convection + - in_cloud_eastward_wind_in_updraft_due_to_deep_convection + - in_cloud_northward_wind_in_downdraft_due_to_deep_convection + - in_cloud_northward_wind_in_updraft_due_to_deep_convection + - index_of_first_column_of_gathered_deep_convection_arrays + - index_of_last_column_of_gathered_deep_convection_arrays + - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_downdraft_for_zhang_mcfarlane_deep_convection_scheme + - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_updraft_for_zhang_mcfarlane_deep_convection_scheme + - pressure_thickness_for_deep_convection_for_convective_columns + - pressure_thickness_for_subcloud_layer_for_deep_convection_for_convective_columns + - scheme_name + - tendency_of_eastward_wind_due_to_zhang_mcfarlane_deep_convective_downdraft_pressure_gradient_term + - tendency_of_eastward_wind_due_to_zhang_mcfarlane_deep_convective_updraft_pressure_gradient_term + - tendency_of_northward_wind_due_to_zhang_mcfarlane_deep_convective_downdraft_pressure_gradient_term + - tendency_of_northward_wind_due_to_zhang_mcfarlane_deep_convective_updraft_pressure_gradient_term + - vertical_index_at_top_of_deep_convection_for_convective_columns + - vertical_index_of_deep_convection_launch_level_for_convective_columns -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/rasch_kristjansson/prognostic_cloud_water.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/zm_convr.meta - - accretion_of_cloud_ice_by_snow - - accretion_of_cloud_liquid_water_by_rain - - accretion_of_cloud_liquid_water_by_snow + - air_pressure_at_interface + - atmosphere_convective_mass_flux_due_to_deep_convection + - atmosphere_detrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_downdraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_updraft_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_updraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - cape_threshold_for_zhang_mcfarlane_deep_convection_scheme - ccpp_error_code - ccpp_error_message - - cloud_area_fraction - - density_of_dry_air_at_stp - - flag_for_relative_humidity_threshold_for_cloud_formation_in_polar_stratosphere_for_rk_microphysics + - cloud_condensate_to_precipitation_autoconversion_coefficient_over_land_for_zhang_mcfarlane_deep_convection_scheme + - cloud_condensate_to_precipitation_autoconversion_coefficient_over_ocean_for_zhang_mcfarlane_deep_convection_scheme + - convective_temperature_perturbation_due_to_pbl_eddies + - deep_convective_adjustment_timescale_for_zhang_mcfarlane_deep_convection_scheme + - detrainment_mass_flux_due_to_deep_convection + - detrainment_of_cloud_ice_wrt_moist_air_and_condensed_water_due_to_deep_convection + - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_deep_convection + - entrainment_rate_for_cape_for_zhang_mcfarlane_deep_convection_scheme + - flag_for_no_deep_convection_in_pbl + - flag_for_well_mixed_pbl_parcel_property_for_zhang_mcfarlane_deep_convection_scheme + - fraction_of_pbl_depth_mixed_for_initial_zhang_mcfarlane_parcel_properties - freezing_point_of_water - gas_constant_of_water_vapor - geopotential_height_wrt_surface_at_interface - - latent_heat_of_fusion_of_water_at_0c - - latitude_degrees_north - - lwe_snow_precipitation_rate_at_surface_due_to_microphysics - - lwe_stratiform_precipitation_rate_at_surface - - lwe_surface_snow_depth_over_land_from_coupler - - mass_fraction_of_ice_content_within_stratiform_cloud - - mass_fraction_of_snow_content_within_stratiform_cloud - - net_condensation_rate_due_to_microphysics - - pi_constant - - precipitation_production_due_to_microphysics - - rate_of_evaporation_of_falling_snow_due_to_microphysics - - rate_of_evaporation_of_precipitation_due_to_microphysics - - ratio_of_water_vapor_to_dry_air_molecular_weights - - relative_humidity_divided_by_cloud_area_fraction_perturbation - - relative_humidity_threshold_for_cloud_formation - - relative_humidity_threshold_for_cloud_formation_in_polar_stratosphere_for_rk_microphysics - - relative_importance_of_cloud_ice_autoconversion - - relative_importance_of_cloud_liquid_water_autoconversion - - relative_importance_of_rain_accreting_cloud_liquid_water - - relative_importance_of_snow_accreting_cloud_ice - - relative_importance_of_snow_accreting_cloud_liquid_water - - sea_ice_area_fraction_from_coupler - - smoothed_land_area_fraction - - snow_production_due_to_microphysics - - stratiform_rain_and_snow_flux_at_interface - - stratiform_snow_flux_at_interface - - tendency_of_air_temperature_not_due_to_microphysics - - tendency_of_cloud_ice_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_ice_to_snow_autoconversion - - tendency_of_cloud_liquid_water_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_liquid_to_rain_autoconversion - - tendency_of_cloud_liquid_water_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_liquid_to_snow_autoconversion - - tendency_of_cloud_water_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_of_precipitation - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_freezing_of_precipitation - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_snow_melt - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics - - tropopause_vertical_layer_index - - tunable_parameter_for_autoconversion_of_cold_ice_for_rk_microphysics - - tunable_parameter_for_autoconversion_of_warm_ice_for_rk_microphysics - - tunable_parameter_for_cloud_water_autoconversion_for_rk_microphysics - - tunable_parameter_for_precipitation_evaporation_for_rk_microphysics - - vertical_layer_index_of_troposphere_cloud_physics_top - --------------------------- - -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/rasch_kristjansson/cloud_particle_sedimentation.meta - - - air_pressure_at_interface - - ccpp_error_code - - ccpp_error_message - - cloud_area_fraction - - freezing_point_of_water + - horizontal_index_of_convective_columns_for_deep_convection_for_convective_columns + - in_cloud_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_deep_convection + - index_of_last_column_of_gathered_deep_convection_arrays - land_area_fraction_from_coupler - latent_heat_of_fusion_of_water_at_0c - - lwe_surface_snow_depth_over_land_from_coupler - - magnitude_of_vertical_pressure_velocity_of_cloud_ice_due_to_sedimentation - - magnitude_of_vertical_pressure_velocity_of_cloud_liquid_water_due_to_sedimentation - - ocean_area_fraction_from_coupler - - sea_ice_area_fraction_from_coupler - - smoothed_land_area_fraction - - stratiform_lwe_cloud_ice_surface_flux_due_to_sedimentation - - stratiform_rain_flux_at_surface_due_to_sedimentation - - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - lwe_precipitation_rate_at_surface_due_to_deep_convection + - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_downdraft_for_zhang_mcfarlane_deep_convection_scheme + - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_updraft_for_zhang_mcfarlane_deep_convection_scheme + - number_of_negative_buoyancy_layers_allowed_before_convection_top_for_zhang_mcfarlane_deep_convection_scheme + - parcel_temperature_perturbation_for_zhang_mcfarlane_deep_convection_scheme + - pressure_thickness_for_deep_convection_for_convective_columns + - pressure_thickness_for_subcloud_layer_for_deep_convection_for_convective_columns + - ratio_of_water_vapor_to_dry_air_molecular_weights + - reference_pressure_at_interface + - scheme_name + - specific_heat_of_liquid_water_at_constant_pressure + - specific_heat_of_water_vapor_at_constant_pressure + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection_excluding_subcloud_evaporation - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water - - tunable_parameter_for_autoconversion_of_cold_ice_for_rk_microphysics - - tunable_parameter_for_ice_fall_velocity_for_rk_microphysics + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_from_cloud_condensation_minus_precipitation_evaporation_due_to_deep_convection + - tunable_evaporation_efficiency_over_land_for_zhang_mcfarlane_deep_convection_scheme + - tunable_evaporation_efficiency_over_ocean_for_zhang_mcfarlane_deep_convection_scheme + - vertical_index_at_top_of_deep_convection_for_convective_columns + - vertical_index_of_deep_convection_launch_level_for_convective_columns + - vertically_integrated_cloud_ice_tendency_due_to_all_convection_to_be_applied_later_in_time_loop + - vertically_integrated_cloud_liquid_water_tendency_due_to_all_convection_to_be_applied_later_in_time_loop + - zhang_mcfarlane_convective_available_potential_energy + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/set_general_conv_fluxes_to_deep.meta + + - frozen_precipitation_flux_at_interface_due_to_convection + - frozen_precipitation_flux_at_interface_due_to_deep_convection + - lwe_frozen_precipitation_rate_at_surface_due_to_convection + - lwe_frozen_precipitation_rate_at_surface_due_to_deep_convection + - lwe_precipitation_rate_at_surface_due_to_convection + - lwe_precipitation_rate_at_surface_due_to_deep_convection + - precipitation_flux_at_interface_due_to_convection + - precipitation_flux_at_interface_due_to_deep_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_deep_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_deep_convection + - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_convection + - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/rasch_kristjansson/rk_stratiform.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/zm_conv_convtran.meta + + - atmosphere_detrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_downdraft_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_downdraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_updraft_convective_mass_flux_for_deep_convection_for_convective_columns + - atmosphere_updraft_entrainment_convective_mass_flux_for_deep_convection_for_convective_columns + - ccpp_constituent_properties + - ccpp_constituent_tendencies + - ccpp_constituents + - ccpp_error_code + - ccpp_error_message + - current_timestep_number + - flag_for_tracer_transport_by_zhang_mcfarlane_deep_scheme + - fraction_of_water_insoluble_convectively_transported_species + - horizontal_index_of_convective_columns_for_deep_convection_for_convective_columns + - index_of_first_column_of_gathered_deep_convection_arrays + - index_of_last_column_of_gathered_deep_convection_arrays + - number_of_ccpp_constituents + - pressure_thickness_for_deep_convection_for_convective_columns + - pressure_thickness_for_subcloud_layer_for_deep_convection_for_convective_columns + - scheme_name + - vertical_index_at_top_of_deep_convection_for_convective_columns + - vertical_index_of_deep_convection_launch_level_for_convective_columns + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/set_deep_conv_fluxes_to_general.meta + + - lwe_precipitation_rate_at_surface_due_to_convection + - lwe_precipitation_rate_at_surface_due_to_deep_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection_excluding_subcloud_evaporation + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/zm_conv_options.meta + + - cape_threshold_for_zhang_mcfarlane_deep_convection_scheme + - cloud_condensate_to_precipitation_autoconversion_coefficient_over_land_for_zhang_mcfarlane_deep_convection_scheme + - cloud_condensate_to_precipitation_autoconversion_coefficient_over_ocean_for_zhang_mcfarlane_deep_convection_scheme + - deep_convective_adjustment_timescale_for_zhang_mcfarlane_deep_convection_scheme + - entrainment_rate_for_cape_for_zhang_mcfarlane_deep_convection_scheme + - flag_for_no_deep_convection_in_pbl + - flag_for_well_mixed_pbl_parcel_property_for_zhang_mcfarlane_deep_convection_scheme + - fraction_of_pbl_depth_mixed_for_initial_zhang_mcfarlane_parcel_properties + - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_downdraft_for_zhang_mcfarlane_deep_convection_scheme + - momentum_transport_parameter_for_vertical_pressure_gradient_force_for_updraft_for_zhang_mcfarlane_deep_convection_scheme + - number_of_negative_buoyancy_layers_allowed_before_convection_top_for_zhang_mcfarlane_deep_convection_scheme + - parcel_temperature_perturbation_for_zhang_mcfarlane_deep_convection_scheme + - tunable_evaporation_efficiency_over_land_for_zhang_mcfarlane_deep_convection_scheme + - tunable_evaporation_efficiency_over_ocean_for_zhang_mcfarlane_deep_convection_scheme + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/zhang_mcfarlane/zm_conv_evap.meta - ccpp_error_code - ccpp_error_message - cloud_area_fraction - - cloud_water_mixing_ratio_wrt_moist_air_and_condensed_water_on_previous_timestep - - deep_convective_cloud_area_fraction - - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_all_convection - freezing_point_of_water + - frozen_precipitation_flux_at_interface_due_to_convection - land_area_fraction_from_coupler - latent_heat_of_fusion_of_water_at_0c - - lwe_large_scale_precipitation_rate_at_surface - - lwe_snow_and_cloud_ice_precipitation_rate_at_surface_due_to_microphysics - - lwe_snow_precipitation_rate_at_surface_due_to_microphysics - - lwe_stratiform_precipitation_rate_at_surface + - lwe_frozen_precipitation_rate_at_surface_due_to_convection + - lwe_precipitation_rate_at_surface_due_to_convection + - mass_fraction_of_snow_content_within_stratiform_cloud + - precipitation_flux_at_interface_due_to_convection + - scheme_name + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_convection + - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - tunable_evaporation_efficiency_over_land_for_zhang_mcfarlane_deep_convection_scheme + - tunable_evaporation_efficiency_over_ocean_for_zhang_mcfarlane_deep_convection_scheme + +-------------------------- + +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/cloud_fraction/compute_cloud_fraction.meta + + - ccpp_error_code + - ccpp_error_message + - cloud_area_fraction + - cloud_area_fraction_from_relative_humidity_method + - control_for_ice_cloud_fraction + - deep_convective_cloud_area_fraction + - do_ice_cloud_fraction_for_cloud_fraction + - do_no_stratification_based_cloud_fraction + - do_relative_humidity_perturbation_for_cloud_fraction + - do_vavrus_freeze_dry_adjustment_for_cloud_fraction + - freezing_point_of_water + - land_area_fraction_from_coupler - lwe_surface_snow_depth_over_land_from_coupler - - mass_fraction_of_ice_content_within_stratiform_cloud - - net_condensation_rate_due_to_microphysics - ocean_area_fraction_from_coupler - - rate_of_condensation_minus_evaporation_for_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water - - rate_of_condensation_minus_evaporation_for_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water - - rate_of_evaporation_of_precipitation_due_to_microphysics - ratio_of_dry_air_gas_constant_to_specific_heat_of_dry_air_at_constant_pressure - reference_temperature_lapse_rate - - relative_humidity_divided_by_cloud_area_fraction_perturbation - relative_humidity_threshold_for_cloud_formation - - sea_ice_area_fraction_from_coupler - sea_surface_temperature_from_coupler - shallow_convective_cloud_area_fraction - - smoothed_land_area_fraction - - stratiform_cloud_water_surface_flux_due_to_sedimentation - - stratiform_lwe_cloud_ice_surface_flux_due_to_sedimentation - - stratiform_rain_flux_at_surface_due_to_sedimentation + - stratiform_cloud_area_fraction + - stratiform_cloud_ice_area_fraction + - stratiform_cloud_liquid_area_fraction - surface_air_pressure - - tendency_of_air_temperature_not_due_to_microphysics - - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_cloud_ice_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_ice_to_snow_autoconversion - - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_cloud_liquid_water_mixing_ratio_wrt_to_moist_air_and_condensed_water_due_to_liquid_to_rain_autoconversion - - tendency_of_cloud_water_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_cloud_ice_and_cloud_liquid_repartitioning - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_condensation_minus_evaporation - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_of_precipitation - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_freezing_of_precipitation - - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_snow_melt - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_not_due_to_microphysics + - tunable_parameter_for_adjustment_to_minimum_relative_humidity_for_low_stable_clouds_for_land_without_snow_cover_for_cloud_fraction + - tunable_parameter_for_bottom_pressure_bound_for_mid_level_liquid_stratus_for_cloud_fraction + - tunable_parameter_for_critical_relative_humidity_for_ice_clouds_for_cloud_fraction_using_wilson_and_ballard_scheme + - tunable_parameter_for_minimum_relative_humidity_for_high_stable_clouds_for_cloud_fraction + - tunable_parameter_for_minimum_relative_humidity_for_low_stable_clouds_for_cloud_fraction + - tunable_parameter_for_top_pressure_bound_for_mid_level_clouds_for_cloud_fraction - vertical_layer_index_of_cloud_fraction_top - - vertically_integrated_cloud_liquid_water_tendency_due_to_all_convection_to_be_applied_later_in_time_loop - - water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_on_previous_timestep -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/thermo_water_update/thermo_water_update.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/cloud_fraction/cloud_fraction_fice.meta - - ccpp_constituents - - specific_heat_of_air_used_in_dycore - - total_energy_formula_for_dycore + - ccpp_error_code + - ccpp_error_message + - freezing_point_of_water + - mass_fraction_of_ice_content_within_stratiform_cloud + - mass_fraction_of_snow_content_within_stratiform_cloud + - vertical_layer_index_of_cloud_fraction_top -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/tj2016/tj2016_sfc_pbl_hs.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/cloud_fraction/convective_cloud_cover.meta - - air_pressure_at_interface + - atmosphere_convective_mass_flux_due_to_all_convection + - atmosphere_convective_mass_flux_due_to_shallow_convection - ccpp_error_code - ccpp_error_message - - eddy_heat_diffusivity - - eddy_momentum_diffusivity - - gas_constant_of_water_vapor - - ln_air_pressure_at_interface - - pi_constant - - ratio_of_water_vapor_to_dry_air_molecular_weights - - scheme_name - - sea_surface_temperature_from_coupler - - sum_of_sigma_pressure_hybrid_coordinate_a_coefficient_and_sigma_pressure_hybrid_coordinate_b_coefficient - - surface_air_pressure - - surface_eastward_wind_stress - - surface_evaporation_rate - - surface_northward_wind_stress - - surface_upward_sensible_heat_flux - - tendency_of_air_temperature_due_to_diabatic_heating - - tendency_of_air_temperature_due_to_vertical_diffusion - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_vertical_diffusion + - deep_convective_cloud_area_fraction + - flag_for_cloud_area_fraction_to_use_shallow_convection_calculated_cloud_area_fraction + - shallow_convective_cloud_area_fraction + - shallow_convective_cloud_area_fraction_from_shallow_convection + - tunable_parameter_for_deep_convection_1_for_cloud_fraction + - tunable_parameter_for_deep_convection_2_for_cloud_fraction + - tunable_parameter_for_shallow_convection_1_for_cloud_fraction + - tunable_parameter_for_shallow_convection_2_for_cloud_fraction + - vertical_layer_index_of_cloud_fraction_top -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/tj2016/tj2016_precip.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/cloud_fraction/set_cloud_fraction_top.meta - ccpp_error_code - ccpp_error_message - - gas_constant_of_water_vapor - - lwe_large_scale_precipitation_rate_at_surface - - ratio_of_water_vapor_to_dry_air_molecular_weights - - scheme_name - - sum_of_sigma_pressure_hybrid_coordinate_a_coefficient_and_sigma_pressure_hybrid_coordinate_b_coefficient + - vertical_layer_index_of_cloud_fraction_top + - vertical_layer_index_of_troposphere_cloud_physics_top -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/musica/musica_ccpp.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/rayleigh_friction/rayleigh_friction.meta - - blackbody_temperature_at_surface - - ccpp_constituent_properties - - ccpp_constituents - ccpp_error_code - ccpp_error_message - - cloud_area_fraction - - dynamic_constituents_for_musica_ccpp - - earth_sun_distance - - extraterrestrial_radiation_flux - - geopotential_height_wrt_surface_at_interface - - molecular_weight_of_dry_air - - photolysis_wavelength_grid_interfaces - - solar_zenith_angle - - surface_albedo_due_to_UV_and_VIS_direct + - center_vertical_layer_for_rayleigh_friction + - model_top_decay_time_for_rayleigh_friction + - number_of_vertical_layers_for_rayleigh_friction -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/dry_adiabatic_adjust/dadadj.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/tj2016/tj2016_precip.meta - - air_pressure_at_interface - - binary_indicator_for_dry_adiabatic_adjusted_grid_cell - ccpp_error_code - ccpp_error_message - - number_of_iterations_for_dry_adiabatic_adjustment_algorithm_convergence - - number_of_vertical_levels_from_model_top_where_dry_adiabatic_adjustment_occurs + - gas_constant_of_water_vapor + - lwe_large_scale_precipitation_rate_at_surface + - ratio_of_water_vapor_to_dry_air_molecular_weights - scheme_name - - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - sum_of_sigma_pressure_hybrid_coordinate_a_coefficient_and_sigma_pressure_hybrid_coordinate_b_coefficient -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/rayleigh_friction/rayleigh_friction.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/tj2016/tj2016_sfc_pbl_hs.meta + - air_pressure_at_interface - ccpp_error_code - ccpp_error_message - - center_vertical_layer_for_rayleigh_friction - - model_top_decay_time_for_rayleigh_friction - - number_of_vertical_layers_for_rayleigh_friction + - eddy_heat_diffusivity + - eddy_momentum_diffusivity + - gas_constant_of_water_vapor + - ln_air_pressure_at_interface + - pi_constant + - ratio_of_water_vapor_to_dry_air_molecular_weights + - scheme_name + - sea_surface_temperature_from_coupler + - sum_of_sigma_pressure_hybrid_coordinate_a_coefficient_and_sigma_pressure_hybrid_coordinate_b_coefficient + - surface_air_pressure + - surface_eastward_wind_stress + - surface_evaporation_rate + - surface_northward_wind_stress + - surface_upward_sensible_heat_flux + - tendency_of_air_temperature_due_to_diabatic_heating + - tendency_of_air_temperature_due_to_vertical_diffusion + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_vertical_diffusion -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/utilities/static_energy.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/pumas/pumas_pre_main.meta - ccpp_error_code - ccpp_error_message -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/utilities/physics_tendency_updaters.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/pumas/micro_pumas_ccpp_dimensions_post.meta - - ccpp_constituent_tendencies - - ccpp_constituents + - analytic_radar_reflectivity_at_10_cm_wavelength + - analytic_radar_reflectivity_at_94_GHz + - analytic_radar_reflectivity_at_94_GHz_in_precipitating_fraction_of_gridcell + - analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds + - analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds_in_precipitating_fraction_of_gridcell + - analytic_radar_reflectivity_z_factor_at_10_cm_wavelength + - analytic_radar_reflectivity_z_factor_at_94_GHz + - available_cloud_condensation_nuclei_number_concentration_of_new_state + - available_ice_nuclei_number_concentration_of_new_state + - average_diameter_of_stratiform_graupel_particle + - average_diameter_of_stratiform_rain_particle + - average_diameter_of_stratiform_snow_particle - ccpp_error_code - ccpp_error_message + - cloud_ice_sedimentation_flux + - cloud_ice_surface_area_density + - cloud_liquid_sedimentation_flux + - cloud_particle_size_distribution_shape_parameter + - cloud_particle_size_distribution_slope_parameter + - condensation_minus_evaporation_rate_of_in_cloud_ice_wrt_moist_air_and_condensed_water + - direct_conversion_rate_of_stratiform_cloud_water_to_precipitation_for_scavenging + - effective_diameter_of_stratiform_cloud_ice_particles_for_radiation + - effective_radius_of_stratiform_cloud_liquid_plus_rain_particles + - effective_radius_of_stratiform_cloud_liquid_water_particle_assuming_cloud_water_number_concentration_of_1e8_per_kg_air + - effective_radius_of_stratiform_graupel_particle + - effective_radius_of_stratiform_rain_particle + - effective_radius_of_stratiform_snow_particle + - fraction_of_cloud_liquid_tendency_applied_to_state + - fraction_of_frozen_water_to_total_condensed_water + - fraction_of_gridcell_with_graupel + - fraction_of_gridcell_with_nonzero_radar_reflectivity + - fraction_of_gridcell_with_nonzero_radar_reflectivity_with_cloudsat_thresholds + - fraction_of_gridcell_with_rain + - fraction_of_gridcell_with_snow + - graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + - graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + - graupel_number_concentration_of_new_state + - graupel_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + - graupel_scaled_diameter + - graupel_sedimentation_flux + - lwe_large_scale_precipitation_rate_at_surface + - lwe_large_scale_snowfall_rate_at_surface + - microphysics_analytic_radar_reflectivity_at_10_cm_wavelength + - microphysics_analytic_radar_reflectivity_at_94_GHz + - microphysics_analytic_radar_reflectivity_at_94_GHz_in_precipitating_fraction_of_gridcell + - microphysics_analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds + - microphysics_analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds_in_precipitating_fraction_of_gridcell + - microphysics_analytic_radar_reflectivity_z_factor_at_10_cm_wavelength + - microphysics_analytic_radar_reflectivity_z_factor_at_94_GHz + - microphysics_available_cloud_condensation_nuclei_number_concentration_of_new_state + - microphysics_available_ice_nuclei_number_concentration_of_new_state + - microphysics_average_diameter_of_stratiform_graupel_particle + - microphysics_average_diameter_of_stratiform_rain_particle + - microphysics_average_diameter_of_stratiform_snow_particle + - microphysics_cloud_ice_sedimentation_flux + - microphysics_cloud_ice_surface_area_density + - microphysics_cloud_liquid_sedimentation_flux + - microphysics_cloud_particle_size_distribution_shape_parameter + - microphysics_cloud_particle_size_distribution_slope_parameter + - microphysics_condensation_minus_evaporation_rate_of_in_cloud_ice_wrt_moist_air_and_condensed_water + - microphysics_direct_conversion_rate_of_stratiform_cloud_water_to_precipitation_for_scavenging + - microphysics_effective_diameter_of_stratiform_cloud_ice_particles_for_radiation + - microphysics_effective_radius_of_stratiform_cloud_ice_particle + - microphysics_effective_radius_of_stratiform_cloud_liquid_plus_rain_particles + - microphysics_effective_radius_of_stratiform_cloud_liquid_water_particle + - microphysics_effective_radius_of_stratiform_cloud_liquid_water_particle_assuming_cloud_water_number_concentration_of_1e8_per_kg_air + - microphysics_effective_radius_of_stratiform_graupel_particle + - microphysics_effective_radius_of_stratiform_rain_particle + - microphysics_effective_radius_of_stratiform_snow_particle + - microphysics_fraction_of_cloud_liquid_tendency_applied_to_state + - microphysics_fraction_of_frozen_water_to_total_condensed_water + - microphysics_fraction_of_gridcell_with_graupel + - microphysics_fraction_of_gridcell_with_nonzero_radar_reflectivity + - microphysics_fraction_of_gridcell_with_nonzero_radar_reflectivity_with_cloudsat_thresholds + - microphysics_fraction_of_gridcell_with_rain + - microphysics_fraction_of_gridcell_with_snow + - microphysics_graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + - microphysics_graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + - microphysics_graupel_number_concentration_of_new_state + - microphysics_graupel_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + - microphysics_graupel_scaled_diameter + - microphysics_graupel_sedimentation_flux + - microphysics_horizontal_loop_extent + - microphysics_lwe_large_scale_precipitation_rate_at_surface + - microphysics_lwe_large_scale_snowfall_rate_at_surface + - microphysics_precipitation_evaporation_area + - microphysics_precipitation_evaporation_rate_wrt_moist_air_and_condensed_water + - microphysics_precipitation_production_rate_wrt_moist_air_and_condensed_water + - microphysics_rain_evaporation_rate_wrt_moist_air_and_condensed_water + - microphysics_rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + - microphysics_rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + - microphysics_rain_number_concentration_of_new_state + - microphysics_rain_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + - microphysics_rain_sedimentation_flux + - microphysics_snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + - microphysics_snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + - microphysics_snow_number_concentration_of_new_state + - microphysics_snow_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + - microphysics_snow_scaled_diameter + - microphysics_snow_sedimentation_flux + - microphysics_snow_surface_area_density + - microphysics_tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_dry_air_enthalpy_at_constant_pressure + - microphysics_tendency_of_graupel_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_rain_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_vertical_interface_dimension + - microphysics_vertical_layer_dimension + - precipitation_evaporation_area + - precipitation_evaporation_rate_wrt_moist_air_and_condensed_water + - precipitation_production_rate_wrt_moist_air_and_condensed_water + - rain_evaporation_rate_wrt_moist_air_and_condensed_water + - rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + - rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + - rain_number_concentration_of_new_state + - rain_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + - rain_sedimentation_flux + - snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + - snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + - snow_number_concentration_of_new_state + - snow_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + - snow_scaled_diameter + - snow_sedimentation_flux + - snow_surface_area_density + - tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_graupel_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + - tendency_of_mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + - tendency_of_mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + - tendency_of_mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + - tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + - tendency_of_rain_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water + - tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/utilities/to_be_ccppized_temporary.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/pumas/micro_pumas_ccpp_dimensions_pre.meta + - accretion_enhancement_factor - ccpp_error_code - ccpp_error_message + - dust_number_concentration_by_size_bin + - dust_radii_by_size_bin + - effective_radius_of_stratiform_cloud_ice_particle_from_external_microphysics + - graupel_mixing_ratio_wrt_moist_air_and_condensed_water + - mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + - mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + - mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + - mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + - mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + - microphysics_accretion_enhancement_factor + - microphysics_air_pressure + - microphysics_air_pressure_at_interfaces + - microphysics_air_pressure_thickness + - microphysics_air_temperature + - microphysics_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_dust_number_concentration_by_size_bin + - microphysics_dust_radii_by_size_bin + - microphysics_effective_radius_of_stratiform_cloud_ice_particle_from_external_microphysics + - microphysics_graupel_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_horizontal_loop_extent + - microphysics_mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + - microphysics_mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + - microphysics_mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + - microphysics_mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + - microphysics_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + - microphysics_rain_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_relative_variance_of_cloud_water + - microphysics_snow_mixing_ratio_wrt_moist_air_and_condensed_water + - microphysics_stratiform_cloud_area_fraction + - microphysics_stratiform_cloud_ice_area_fraction + - microphysics_stratiform_cloud_liquid_area_fraction + - microphysics_subgrid_cloud_water_saturation_scaling_factor + - microphysics_tendency_of_activated_cloud_condensation_nuclei_mass_number_concentration + - microphysics_tendency_of_activated_ice_nuclei_mass_number_concentration + - microphysics_tendency_of_cloud_ice_number_concentration_due_to_deposition_nucleation + - microphysics_tendency_of_cloud_liquid_droplet_number_concentration_due_to_contact_freezing + - microphysics_tendency_of_cloud_liquid_droplet_number_concentration_due_to_immersion_freezing + - microphysics_tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water_from_external_microphysics + - microphysics_tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water_from_external_microphysics + - microphysics_vertical_interface_dimension + - microphysics_vertical_layer_dimension + - microphysics_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + - relative_variance_of_cloud_water + - snow_mixing_ratio_wrt_moist_air_and_condensed_water + - stratiform_cloud_area_fraction + - stratiform_cloud_ice_area_fraction + - stratiform_cloud_liquid_area_fraction + - subgrid_cloud_water_saturation_scaling_factor + - tendency_of_activated_cloud_condensation_nuclei_mass_number_concentration + - tendency_of_activated_ice_nuclei_mass_number_concentration + - tendency_of_cloud_ice_number_concentration_due_to_deposition_nucleation + - tendency_of_cloud_liquid_droplet_number_concentration_due_to_contact_freezing + - tendency_of_cloud_liquid_droplet_number_concentration_due_to_immersion_freezing + - tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water_from_external_microphysics + - tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water_from_external_microphysics -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/utilities/qneg.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/hack_shallow/set_general_conv_fluxes_to_shallow.meta - - ccpp_constituent_minimum_values - - ccpp_constituent_properties - - ccpp_constituents - - ccpp_error_code - - ccpp_error_message - - number_of_ccpp_constituents - - scheme_name + - frozen_precipitation_flux_at_interface_due_to_convection + - frozen_precipitation_flux_at_interface_due_to_shallow_convection + - lwe_frozen_precipitation_rate_at_surface_due_to_convection + - lwe_frozen_precipitation_rate_at_surface_due_to_shallow_convection + - lwe_precipitation_rate_at_surface_due_to_convection + - lwe_precipitation_rate_at_surface_due_to_shallow_convection + - net_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column + - precipitation_flux_at_interface_due_to_convection + - precipitation_flux_at_interface_due_to_shallow_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_evaporation_and_melting_of_frozen_precipitation_due_to_shallow_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_convection + - tendency_of_dry_air_enthalpy_at_constant_pressure_due_to_frozen_precipitation_production_due_to_shallow_convection + - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_convection + - tendency_of_frozen_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/utilities/geopotential_temp.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/hack_shallow/set_shallow_conv_fluxes_to_general.meta - - air_pressure_at_interface - - ccpp_constituent_properties - - ccpp_constituents - - ccpp_error_code - - ccpp_error_message - - geopotential_height_wrt_surface_at_interface - - ln_air_pressure_at_interface - - number_of_ccpp_constituents + - lwe_precipitation_rate_at_surface_due_to_convection + - lwe_precipitation_rate_at_surface_due_to_shallow_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection_excluding_subcloud_evaporation -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/utilities/state_converters.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/hack_shallow/hack_convect_shallow.meta + - atmosphere_convective_mass_flux_due_to_shallow_convection + - ccpp_constituent_properties + - ccpp_constituent_tendencies + - ccpp_constituents - ccpp_error_code - ccpp_error_message + - characteristic_adjustment_time_for_shallow_convection + - convective_water_vapor_wrt_moist_air_and_condensed_water_perturbation_due_to_pbl_eddies + - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_shallow_convection + - flag_for_cloud_area_fraction_to_use_shallow_convection_calculated_cloud_area_fraction + - in_cloud_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water_due_to_shallow_convection + - liquid_water_static_energy_flux_due_to_shallow_convection + - lwe_precipitation_rate_at_surface_due_to_shallow_convection + - net_liquid_and_lwe_ice_fluxes_through_top_and_bottom_of_atmosphere_column + - number_of_ccpp_constituents + - rain_water_autoconversion_coefficient_for_shallow_convection + - reference_pressure_at_interface + - scheme_name + - shallow_convective_cloud_area_fraction_from_shallow_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection_excluding_subcloud_evaporation + - total_water_flux_due_to_shallow_convection + - vertical_index_at_cloud_base_for_shallow_convection + - vertical_index_at_cloud_top_for_shallow_convection + - vertical_layer_index_of_cloud_fraction_top + - vertically_integrated_cloud_liquid_water_tendency_due_to_shallow_convection_to_be_applied_later_in_time_loop -------------------------- -/glade/u/home/cacraig/cam_sima_caminout/src/physics/ncar_ccpp/schemes/tropopause_find/tropopause_find.meta +/home/cacraig/cam_pumas_round2/src/atmos_phys/schemes/hack_shallow/convect_shallow_sum_to_deep.meta - - air_pressure_at_interface + - atmosphere_convective_mass_flux_due_to_all_convection + - atmosphere_convective_mass_flux_due_to_deep_convection + - atmosphere_convective_mass_flux_due_to_shallow_convection - ccpp_error_code - ccpp_error_message - - fill_value_for_diagnostic_output - - fractional_calendar_days_on_end_of_current_timestep - - geopotential_height_wrt_surface_at_interface - - pi_constant - - ratio_of_dry_air_gas_constant_to_specific_heat_of_dry_air_at_constant_pressure - - scheme_name - - tropopause_air_pressure - - tropopause_air_pressure_from_chemical_method - - tropopause_air_pressure_from_climatological_method - - tropopause_air_pressure_from_cold_point_method - - tropopause_air_pressure_from_hybrid_stobie_linoz_with_climatological_backup_method - - tropopause_air_pressure_from_lapse_rate_method - - tropopause_air_pressure_from_tropopause_climatology_dataset - - tropopause_air_temperature - - tropopause_air_temperature_from_chemical_method - - tropopause_air_temperature_from_climatological_method - - tropopause_air_temperature_from_cold_point_method - - tropopause_air_temperature_from_hybrid_stobie_linoz_with_climatological_backup_method - - tropopause_air_temperature_from_lapse_rate_method - - tropopause_calendar_days_from_tropopause_climatology - - tropopause_geopotential_height_wrt_surface - - tropopause_geopotential_height_wrt_surface_from_chemical_method - - tropopause_geopotential_height_wrt_surface_from_climatological_method - - tropopause_geopotential_height_wrt_surface_from_cold_point_method - - tropopause_geopotential_height_wrt_surface_from_hybrid_stobie_linoz_with_climatological_backup_method - - tropopause_geopotential_height_wrt_surface_from_lapse_rate_method - - tropopause_vertical_layer_index - - tropopause_vertical_layer_index_from_chemical_method - - tropopause_vertical_layer_index_from_climatological_method - - tropopause_vertical_layer_index_from_cold_point_method - - tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method - - tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method_for_chemistry - - tropopause_vertical_layer_index_from_lapse_rate_method - - vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_linearized_ozone_chemistry - - vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_stratospheric_chemistry + - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_all_convection + - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_deep_convection + - detrainment_of_cloud_liquid_water_wrt_moist_air_and_condensed_water_due_to_shallow_convection + - pressure_at_cloud_base_for_all_convection + - pressure_at_cloud_top_for_all_convection + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_convection_excluding_subcloud_evaporation + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_deep_convection_excluding_subcloud_evaporation + - tendency_of_precipitation_wrt_moist_air_and_condensed_water_due_to_shallow_convection_excluding_subcloud_evaporation + - vertical_index_at_cloud_base_for_all_convection + - vertical_index_at_cloud_base_for_shallow_convection + - vertical_index_at_cloud_top_for_all_convection + - vertical_index_at_cloud_top_for_shallow_convection + - vertical_index_at_top_of_deep_convection_for_convective_columns + - vertical_index_of_deep_convection_launch_level_for_convective_columns + - vertically_integrated_cloud_liquid_water_tendency_due_to_all_convection_to_be_applied_later_in_time_loop + - vertically_integrated_cloud_liquid_water_tendency_due_to_shallow_convection_to_be_applied_later_in_time_loop ####################### diff --git a/schemes/pumas/micro_pumas_ccpp_dimensions_post.F90 b/schemes/pumas/micro_pumas_ccpp_dimensions_post.F90 new file mode 100644 index 00000000..cd780fc4 --- /dev/null +++ b/schemes/pumas/micro_pumas_ccpp_dimensions_post.F90 @@ -0,0 +1,422 @@ +module micro_pumas_ccpp_dimensions_post + + use pumas_kinds, only: pumas_r8=>kind_r8 + use ccpp_kinds, only: kind_phys + +! This will be replaced by subcolumn averaging when subcolumns are enabled + + public :: micro_pumas_ccpp_dimensions_post_run + +contains + !> \section arg_table_micro_pumas_ccpp_dimensions_post_run Argument Table + !! \htmlinclude micro_pumas_ccpp_dimensions_post_run.html + subroutine micro_pumas_ccpp_dimensions_post_run(ncol, micro_ncol, nlev, micro_nlev, & + nlevp1, micro_nlevp1, pint, pumas_pint, qcsinksum_rate1ord, pumas_qcsinksum_rate1ord, airT_tend, & + pumas_airT_tend, airq_tend, pumas_airq_tend, & + cldliq_tend, pumas_cldliq_tend, cldice_tend, pumas_cldice_tend, numliq_tend, & + pumas_numliq_tend, numice_tend, pumas_numice_tend, rainliq_tend, pumas_rainliq_tend, & + snowice_tend, pumas_snowice_tend, numrain_tend, pumas_numrain_tend, numsnow_tend, & + pumas_numsnow_tend, graupice_tend, pumas_graupice_tend, numgraup_tend, & + pumas_numgraup_tend, effc, pumas_effc, effc_fn, pumas_effc_fn, effi, pumas_effi, & + sadice, pumas_sadice, sadsnow, pumas_sadsnow, prect, pumas_prect, preci, pumas_preci,& + prec_evap, pumas_prec_evap, am_evap_st, pumas_am_evap_st, prec_prod, pumas_prec_prod,& + cmeice, pumas_cmeice, deffi, pumas_deffi, pgamrad, pumas_pgamrad, lamcrad, & + pumas_lamcrad, snowice_in_prec, pumas_snowice_in_prec, scaled_diam_snow, & + pumas_scaled_diam_snow, graupice_in_prec, pumas_graupice_in_prec, & + numgraup_vol_in_prec, pumas_numgraup_vol_in_prec, scaled_diam_graup, & + pumas_scaled_diam_graup, lflx, pumas_lflx, iflx, pumas_iflx, gflx, pumas_gflx, rflx, & + pumas_rflx, sflx, pumas_sflx, rainliq_in_prec, pumas_rainliq_in_prec, reff_rain, & + pumas_reff_rain, reff_snow, pumas_reff_snow, reff_grau, pumas_reff_grau, & + numrain_vol_in_prec, pumas_numrain_vol_in_prec, numsnow_vol_in_prec, & + pumas_numsnow_vol_in_prec, refl, pumas_refl, arefl, pumas_arefl, areflz, pumas_areflz,& + frefl, pumas_frefl, csrfl, pumas_csrfl, acsrfl, pumas_acsrfl, fcsrfl, pumas_fcsrfl, & + refl10cm, pumas_refl10cm, reflz10cm, pumas_reflz10cm, rercld, pumas_rercld, ncai, & + pumas_ncai, ncal, pumas_ncal, rainliq, pumas_rainliq, snowice, pumas_snowice, & + numrain_vol, pumas_numrain_vol, numsnow_vol, pumas_numsnow_vol, diam_rain, & + pumas_diam_rain, diam_snow, pumas_diam_snow, graupice, pumas_graupice, numgraup_vol, & + pumas_numgraup_vol, diam_graup, pumas_diam_graup, freq_graup, pumas_freq_graup, & + freq_snow, pumas_freq_snow, freq_rain, pumas_freq_rain, frac_ice, pumas_frac_ice, & + frac_cldliq_tend, pumas_frac_cldliq_tend, rain_evap, pumas_rain_evap, & + errmsg, errcode) + + ! horizontal dimension + integer, intent(in) :: ncol + ! microphysics_horizontal_dimension + integer, intent(in) :: micro_ncol + ! vertical layer dimension + integer, intent(in) :: nlev + ! microphysics vertical layer dimension + integer, intent(in) :: micro_nlev + ! vertical interface dimension + integer, intent(in) :: nlevp1 + ! microphysics vertical interface dimension + integer, intent(in) :: micro_nlevp1 + + real(pumas_r8), intent(in) :: pumas_pint(:,:) + !microphysics direct conversion rate of stratiform cloud water to precipitation (s-1) + real(pumas_r8), intent(in) :: pumas_qcsinksum_rate1ord(:, :) + !microphysics tendency of dry air enthalpy at constant pressure (J kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_airT_tend(:, :) + !microphysics tendency of water vapor mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_airq_tend(:, :) + !microphysics tendency of cloud liquid water mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_cldliq_tend(:, :) + !microphysics tendency of cloud ice mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_cldice_tend(:, :) + !microphysics tendency of mass number concentration of cloud liquid water wrt moist air and condensed water (kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_numliq_tend(:, :) + !microphysics tendency of mass number concentration of cloud ice wrt moist air and condensed water (kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_numice_tend(:, :) + !microphysics tendency of rain mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_rainliq_tend(:, :) + !microphysics tendency of snow mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_snowice_tend(:, :) + !microphysics tendency of mass number concentration of rain wrt moist air and condensed water (kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_numrain_tend(:, :) + !microphysics tendency of mass number concentration of snow wrt moist air and condensed water (kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_numsnow_tend(:, :) + !microphysics tendency of graupel mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_graupice_tend(:, :) + !microphysics tendency of mass number concentration of graupel wrt moist air and condensed water (kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_numgraup_tend(:, :) + !microphysics effective radius of stratiform cloud liquid water particle (um) + real(pumas_r8), intent(in) :: pumas_effc(:, :) + !microphysics effective radius of stratiform cloud liquid water particle assuming droplet number concentration of 1e8 kg-1 (um) + real(pumas_r8), intent(in) :: pumas_effc_fn(:, :) + !microphysics effective radius of stratiform cloud ice particle (um) + real(pumas_r8), intent(in) :: pumas_effi(:, :) + !microphysics cloud ice surface area density (cm2 cm-3) + real(pumas_r8), intent(in) :: pumas_sadice(:, :) + !microphysics snow surface area density (cm2 cm-3) + real(pumas_r8), intent(in) :: pumas_sadsnow(:, :) + !microphysics LWE large scale precipitation rate at surface (m s-1) + real(pumas_r8), intent(in) :: pumas_prect(:) + !microphysics LWE large scale snowfall rate at surface (m s-1) + real(pumas_r8), intent(in) :: pumas_preci(:) + !microphysics precipitation evaporation rate wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_prec_evap(:, :) + !microphysics precipitation evaporation area (fraction) + real(pumas_r8), intent(in) :: pumas_am_evap_st(:, :) + !microphysics precipitation production rate wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_prec_prod(:, :) + !microphysics condensation minus evaporation rate of in-cloud ice wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_cmeice(:, :) + !microphysics effective diameter of stratiform cloud ice particles for radiation (um) + real(pumas_r8), intent(in) :: pumas_deffi(:, :) + !microphysics cloud particle size distribution shape parameter (1) + real(pumas_r8), intent(in) :: pumas_pgamrad(:, :) + !microphysics cloud particle size distribution slope parameter (1) + real(pumas_r8), intent(in) :: pumas_lamcrad(:, :) + !microphysics snow mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell (kg kg-1) + real(pumas_r8), intent(in) :: pumas_snowice_in_prec(:, :) + !microphysics snow scaled diameter (m) + real(pumas_r8), intent(in) :: pumas_scaled_diam_snow(:, :) + !microphysics graupel mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell (kg kg-1) + real(pumas_r8), intent(in) :: pumas_graupice_in_prec(:, :) + !microphysics graupel number concentration of new state in precipitating fraction of gridcell (m-3) + real(pumas_r8), intent(in) :: pumas_numgraup_vol_in_prec(:, :) + !microphysics graupel scaled diameter (m) + real(pumas_r8), intent(in) :: pumas_scaled_diam_graup(:, :) + !microphysics cloud liquid sedimentation flux (kg m-2 s-1) + real(pumas_r8), intent(in) :: pumas_lflx(:, :) + !microphysics cloud ice sedimentation flux (kg m-2 s-1) + real(pumas_r8), intent(in) :: pumas_iflx(:, :) + !microphysics graupel sedimentation flux (kg m-2 s-1) + real(pumas_r8), intent(in) :: pumas_gflx(:, :) + !microphysics rain sedimentation flux (kg m-2 s-1) + real(pumas_r8), intent(in) :: pumas_rflx(:, :) + !microphysics snow sedimentation flux (kg m-2 s-1) + real(pumas_r8), intent(in) :: pumas_sflx(:, :) + !microphysics rain mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell (kg kg-1) + real(pumas_r8), intent(in) :: pumas_rainliq_in_prec(:, :) + !microphysics effective radius of stratiform rain particle (um) + real(pumas_r8), intent(in) :: pumas_reff_rain(:, :) + !microphysics effective radius of stratiform snow particle (um) + real(pumas_r8), intent(in) :: pumas_reff_snow(:, :) + !microphysics effective radius of stratiform graupel particle (um) + real(pumas_r8), intent(in) :: pumas_reff_grau(:, :) + !microphysics rain number concentration of new state in precipitating fraction of gridcell (m-3) + real(pumas_r8), intent(in) :: pumas_numrain_vol_in_prec(:, :) + !microphysics snow number concentration of new state in precipitating fraction of gridcell (m-3) + real(pumas_r8), intent(in) :: pumas_numsnow_vol_in_prec(:, :) + !microphysics analytic radar reflectivity at 94 GHz in precipitating fraction of gridcell (dBZ) + real(pumas_r8), intent(in) :: pumas_refl(:, :) + !microphysics analytic radar reflectivity at 94 GHz (dBZ) + real(pumas_r8), intent(in) :: pumas_arefl(:, :) + !microphysics analytic radar reflectivity z factor at 94 GHz (mm6 m-3) + real(pumas_r8), intent(in) :: pumas_areflz(:, :) + !microphysics fraction of gridcell with nonzero radar reflectivity (fraction) + real(pumas_r8), intent(in) :: pumas_frefl(:, :) + !microphysics analytic radar reflectivity at 94 GHz with CloudSat thresholds in precipitating fraction of gridcell (dBZ) + real(pumas_r8), intent(in) :: pumas_csrfl(:, :) + !microphysics analytic radar reflectivity at 94 GHz with CloudSat thresholds (dBZ) + real(pumas_r8), intent(in) :: pumas_acsrfl(:, :) + !microphysics fraction of gridcell with nonzero radar reflectivity with CloudSat thresholds (fraction) + real(pumas_r8), intent(in) :: pumas_fcsrfl(:, :) + !microphysics analytic radar reflectivity at 10 cm wavelength (dBZ) + real(pumas_r8), intent(in) :: pumas_refl10cm(:, :) + !microphysics analytic radar reflectivity z factor at 10 cm wavelength (mm6 m-3) + real(pumas_r8), intent(in) :: pumas_reflz10cm(:, :) + !microphysics effective radius of stratiform cloud liquid plus rain particles (m) + real(pumas_r8), intent(in) :: pumas_rercld(:, :) + !microphysics available ice nuclei number concentration of new state (m-3) + real(pumas_r8), intent(in) :: pumas_ncai(:, :) + !microphysics available cloud condensation nuclei number concentration of new state (m-3) + real(pumas_r8), intent(in) :: pumas_ncal(:, :) + !microphysics rain mixing ratio wrt moist air and condensed water of new state (kg kg-1) + real(pumas_r8), intent(in) :: pumas_rainliq(:, :) + !microphysics snow mixing ratio wrt moist air and condensed water of new state (kg kg-1) + real(pumas_r8), intent(in) :: pumas_snowice(:, :) + !microphysics rain number concentration of new state (m-3) + real(pumas_r8), intent(in) :: pumas_numrain_vol(:, :) + !microphysics snow number concentration of new state in precipitating fraction of gridcell (m-3) + real(pumas_r8), intent(in) :: pumas_numsnow_vol(:, :) + !microphysics average diameter of stratiform rain particle (m) + real(pumas_r8), intent(in) :: pumas_diam_rain(:, :) + !microphysics average diameter of stratiform snow particle (m) + real(pumas_r8), intent(in) :: pumas_diam_snow(:, :) + !microphysics graupel mixing ratio wrt moist air and condensed water of new state (kg kg-1) + real(pumas_r8), intent(in) :: pumas_graupice(:, :) + !microphysics graupel number concentration of new state (m-3) + real(pumas_r8), intent(in) :: pumas_numgraup_vol(:, :) + !microphysics average diameter of stratiform graupel particle (m) + real(pumas_r8), intent(in) :: pumas_diam_graup(:, :) + !microphysics fraction of gridcell with graupel (fraction) + real(pumas_r8), intent(in) :: pumas_freq_graup(:, :) + !microphysics fraction of gridcell with snow (fraction) + real(pumas_r8), intent(in) :: pumas_freq_snow(:, :) + !microphysics fraction of gridcell with rain (fraction) + real(pumas_r8), intent(in) :: pumas_freq_rain(:, :) + !microphysics fraction of frozen water to total condensed water (fraction) + real(pumas_r8), intent(in) :: pumas_frac_ice(:, :) + !microphysics fraction of cloud liquid tendency applied to state (fraction) + real(pumas_r8), intent(in) :: pumas_frac_cldliq_tend(:, :) + !microphysics rain evaporation rate wrt moist air and condensed water (kg kg-1 s-1) + real(pumas_r8), intent(in) :: pumas_rain_evap(:, :) + + real(kind_phys), intent(out ) :: pint(:,:) + !direct conversion rate of stratiform cloud water to precipitation (s-1) + real(kind_phys), intent(out) :: qcsinksum_rate1ord(:, :) + !tendency of dry air enthalpy at constant pressure (J kg-1 s-1) + real(kind_phys), intent(out) :: airT_tend(:, :) + !tendency of water vapor mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: airq_tend(:, :) + !tendency of cloud liquid water mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: cldliq_tend(:, :) + !tendency of cloud ice mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: cldice_tend(:, :) + !tendency of mass number concentration of cloud liquid water wrt moist air and condensed water (kg-1 s-1) + real(kind_phys), intent(out) :: numliq_tend(:, :) + !tendency of mass number concentration of cloud ice wrt moist air and condensed water (kg-1 s-1) + real(kind_phys), intent(out) :: numice_tend(:, :) + !tendency of rain mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: rainliq_tend(:, :) + !tendency of snow mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: snowice_tend(:, :) + !tendency of mass number concentration of rain wrt moist air and condensed water (kg-1 s-1) + real(kind_phys), intent(out) :: numrain_tend(:, :) + !tendency of mass number concentration of snow wrt moist air and condensed water (kg-1 s-1) + real(kind_phys), intent(out) :: numsnow_tend(:, :) + !tendency of graupel mixing ratio wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: graupice_tend(:, :) + !tendency of mass number concentration of graupel wrt moist air and condensed water (kg-1 s-1) + real(kind_phys), intent(out) :: numgraup_tend(:, :) + !effective radius of stratiform cloud liquid water particle (um) + real(kind_phys), intent(out) :: effc(:, :) + !effective radius of stratiform cloud liquid water particle assuming droplet number concentration of 1e8 kg-1 (um) + real(kind_phys), intent(out) :: effc_fn(:, :) + !effective radius of stratiform cloud ice particle (um) + real(kind_phys), intent(out) :: effi(:, :) + !cloud ice surface area density (cm2 cm-3) + real(kind_phys), intent(out) :: sadice(:, :) + !snow surface area density (cm2 cm-3) + real(kind_phys), intent(out) :: sadsnow(:, :) + !LWE large scale precipitation rate at surface (m s-1) + real(kind_phys), intent(out) :: prect(:) + !LWE large scale snowfall rate at surface (m s-1) + real(kind_phys), intent(out) :: preci(:) + !precipitation evaporation rate wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: prec_evap(:, :) + !precipitation evaporation area (fraction) + real(kind_phys), intent(out) :: am_evap_st(:, :) + !precipitation production rate wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: prec_prod(:, :) + !condensation minus evaporation rate of in-cloud ice wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: cmeice(:, :) + !effective diameter of stratiform cloud ice particles for radiation (um) + real(kind_phys), intent(out) :: deffi(:, :) + !cloud particle size distribution shape parameter (1) + real(kind_phys), intent(out) :: pgamrad(:, :) + !cloud particle size distribution slope parameter (1) + real(kind_phys), intent(out) :: lamcrad(:, :) + !snow mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell (kg kg-1) + real(kind_phys), intent(out) :: snowice_in_prec(:, :) + !snow scaled diameter (m) + real(kind_phys), intent(out) :: scaled_diam_snow(:, :) + !graupel mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell (kg kg-1) + real(kind_phys), intent(out) :: graupice_in_prec(:, :) + !graupel number concentration of new state in precipitating fraction of gridcell (m-3) + real(kind_phys), intent(out) :: numgraup_vol_in_prec(:, :) + !graupel scaled diameter (m) + real(kind_phys), intent(out) :: scaled_diam_graup(:, :) + !cloud liquid sedimentation flux (kg m-2 s-1) + real(kind_phys), intent(out) :: lflx(:, :) + !cloud ice sedimentation flux (kg m-2 s-1) + real(kind_phys), intent(out) :: iflx(:, :) + !graupel sedimentation flux (kg m-2 s-1) + real(kind_phys), intent(out) :: gflx(:, :) + !rain sedimentation flux (kg m-2 s-1) + real(kind_phys), intent(out) :: rflx(:, :) + !snow sedimentation flux (kg m-2 s-1) + real(kind_phys), intent(out) :: sflx(:, :) + !rain mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell (kg kg-1) + real(kind_phys), intent(out) :: rainliq_in_prec(:, :) + !effective radius of stratiform rain particle (um) + real(kind_phys), intent(out) :: reff_rain(:, :) + !effective radius of stratiform snow particle (um) + real(kind_phys), intent(out) :: reff_snow(:, :) + !effective radius of stratiform graupel particle (um) + real(kind_phys), intent(out) :: reff_grau(:, :) + !rain number concentration of new state in precipitating fraction of gridcell (m-3) + real(kind_phys), intent(out) :: numrain_vol_in_prec(:, :) + !snow number concentration of new state in precipitating fraction of gridcell (m-3) + real(kind_phys), intent(out) :: numsnow_vol_in_prec(:, :) + !analytic radar reflectivity at 94 GHz in precipitating fraction of gridcell (dBZ) + real(kind_phys), intent(out) :: refl(:, :) + !analytic radar reflectivity at 94 GHz (dBZ) + real(kind_phys), intent(out) :: arefl(:, :) + !analytic radar reflectivity z factor at 94 GHz (mm6 m-3) + real(kind_phys), intent(out) :: areflz(:, :) + !fraction of gridcell with nonzero radar reflectivity (fraction) + real(kind_phys), intent(out) :: frefl(:, :) + !analytic radar reflectivity at 94 GHz with CloudSat thresholds in precipitating fraction of gridcell (dBZ) + real(kind_phys), intent(out) :: csrfl(:, :) + !analytic radar reflectivity at 94 GHz with CloudSat thresholds (dBZ) + real(kind_phys), intent(out) :: acsrfl(:, :) + !fraction of gridcell with nonzero radar reflectivity with CloudSat thresholds (fraction) + real(kind_phys), intent(out) :: fcsrfl(:, :) + !analytic radar reflectivity at 10 cm wavelength (dBZ) + real(kind_phys), intent(out) :: refl10cm(:, :) + !analytic radar reflectivity z factor at 10 cm wavelength (mm6 m-3) + real(kind_phys), intent(out) :: reflz10cm(:, :) + !effective radius of stratiform cloud liquid plus rain particles (m) + real(kind_phys), intent(out) :: rercld(:, :) + !available ice nuclei number concentration of new state (m-3) + real(kind_phys), intent(out) :: ncai(:, :) + !available cloud condensation nuclei number concentration of new state (m-3) + real(kind_phys), intent(out) :: ncal(:, :) + !rain mixing ratio wrt moist air and condensed water of new state (kg kg-1) + real(kind_phys), intent(out) :: rainliq(:, :) + !snow mixing ratio wrt moist air and condensed water of new state (kg kg-1) + real(kind_phys), intent(out) :: snowice(:, :) + !rain number concentration of new state (m-3) + real(kind_phys), intent(out) :: numrain_vol(:, :) + !snow number concentration of new state in precipitating fraction of gridcell (m-3) + real(kind_phys), intent(out) :: numsnow_vol(:, :) + !average diameter of stratiform rain particle (m) + real(kind_phys), intent(out) :: diam_rain(:, :) + !average diameter of stratiform snow particle (m) + real(kind_phys), intent(out) :: diam_snow(:, :) + !graupel mixing ratio wrt moist air and condensed water of new state (kg kg-1) + real(kind_phys), intent(out) :: graupice(:, :) + !graupel number concentration of new state (m-3) + real(kind_phys), intent(out) :: numgraup_vol(:, :) + !average diameter of stratiform graupel particle (m) + real(kind_phys), intent(out) :: diam_graup(:, :) + !fraction of gridcell with graupel (fraction) + real(kind_phys), intent(out) :: freq_graup(:, :) + !fraction of gridcell with snow (fraction) + real(kind_phys), intent(out) :: freq_snow(:, :) + !fraction of gridcell with rain (fraction) + real(kind_phys), intent(out) :: freq_rain(:, :) + !fraction of frozen water to total condensed water (fraction) + real(kind_phys), intent(out) :: frac_ice(:, :) + !fraction of cloud liquid tendency applied to state (fraction) + real(kind_phys), intent(out) :: frac_cldliq_tend(:, :) + !rain evaporation rate wrt moist air and condensed water (kg kg-1 s-1) + real(kind_phys), intent(out) :: rain_evap(:, :) + + character(len=512), intent(out) :: errmsg !PUMAS/CCPP error message (none) + integer, intent(out) :: errcode !CCPP error code (1) + + ! Set error variables + errcode = 0 + errmsg = '' + + pint(:,:micro_nlevp1) = pumas_pint(:ncol,:) + qcsinksum_rate1ord(:,:micro_nlev) = pumas_qcsinksum_rate1ord(:ncol,:) + airT_tend(:,:micro_nlev) = pumas_airT_tend(:ncol,:) + airq_tend(:,:micro_nlev) = pumas_airq_tend(:ncol,:) + cldliq_tend(:,:micro_nlev) = pumas_cldliq_tend(:ncol,:) + cldice_tend(:,:micro_nlev) = pumas_cldice_tend(:ncol,:) + numliq_tend(:,:micro_nlev) = pumas_numliq_tend(:ncol,:) + numice_tend(:,:micro_nlev) = pumas_numice_tend(:ncol,:) + rainliq_tend(:,:micro_nlev) = pumas_rainliq_tend(:ncol,:) + snowice_tend(:,:micro_nlev) = pumas_snowice_tend(:ncol,:) + numliq_tend(:,:micro_nlev) = pumas_numliq_tend(:ncol,:) + numice_tend(:,:micro_nlev) = pumas_numice_tend(:ncol,:) + numrain_tend(:,:micro_nlev) = pumas_numrain_tend(:ncol,:) + numsnow_tend(:,:micro_nlev) = pumas_numsnow_tend(:ncol,:) + graupice_tend(:,:micro_nlev) = pumas_graupice_tend(:ncol,:) + numgraup_tend(:,:micro_nlev) = pumas_numgraup_tend(:ncol,:) + effc(:,:micro_nlev) = pumas_effc(:ncol,:) + effc_fn(:,:micro_nlev) = pumas_effc_fn(:ncol,:) + effi(:,:micro_nlev) = pumas_effi(:ncol,:) + sadice(:,:micro_nlev) = pumas_sadice(:ncol,:) + sadsnow(:,:micro_nlev) = pumas_sadsnow(:ncol,:) + prect(:) = pumas_prect(:ncol) + preci(:) = pumas_preci(:ncol) + prec_evap(:,:micro_nlev) = pumas_prec_evap(:ncol,:) + am_evap_st(:,:micro_nlev) = pumas_am_evap_st(:ncol,:) + prec_prod(:,:micro_nlev) = pumas_prec_prod(:ncol,:) + cmeice(:,:micro_nlev) = pumas_cmeice(:ncol,:) + deffi(:,:micro_nlev) = pumas_deffi(:ncol,:) + pgamrad(:,:micro_nlev) = pumas_pgamrad(:ncol,:) + lamcrad(:,:micro_nlev) = pumas_lamcrad(:ncol,:) + snowice_in_prec(:,:micro_nlev) = pumas_snowice_in_prec(:ncol,:) + scaled_diam_snow(:,:micro_nlev) = pumas_scaled_diam_snow(:ncol,:) + graupice_in_prec(:,:micro_nlev) = pumas_graupice_in_prec(:ncol,:) + numgraup_vol_in_prec(:,:micro_nlev) = pumas_numgraup_vol_in_prec(:ncol,:) + scaled_diam_graup(:,:micro_nlev) = pumas_scaled_diam_graup(:ncol,:) + lflx(:,:micro_nlev) = pumas_lflx(:ncol,:) + iflx(:,:micro_nlev) = pumas_iflx(:ncol,:) + gflx(:,:micro_nlev) = pumas_gflx(:ncol,:) + rflx(:,:micro_nlev) = pumas_rflx(:ncol,:) + sflx(:,:micro_nlev) = pumas_sflx(:ncol,:) + rainliq_in_prec(:,:micro_nlev) = pumas_rainliq_in_prec(:ncol,:) + reff_rain(:,:micro_nlev) = pumas_reff_rain(:ncol,:) + reff_snow(:,:micro_nlev) = pumas_reff_snow(:ncol,:) + reff_grau(:,:micro_nlev) = pumas_reff_grau(:ncol,:) + numrain_vol_in_prec(:,:micro_nlev) = pumas_numrain_vol_in_prec(:ncol,:) + numsnow_vol_in_prec(:,:micro_nlev) = pumas_numsnow_vol_in_prec(:ncol,:) + refl(:,:micro_nlev) = pumas_refl(:ncol,:) + arefl(:,:micro_nlev) = pumas_arefl(:ncol,:) + areflz(:,:micro_nlev) = pumas_areflz(:ncol,:) + frefl(:,:micro_nlev) = pumas_frefl(:ncol,:) + csrfl(:,:micro_nlev) = pumas_csrfl(:ncol,:) + acsrfl(:,:micro_nlev) = pumas_acsrfl(:ncol,:) + fcsrfl(:,:micro_nlev) = pumas_fcsrfl(:ncol,:) + refl10cm(:,:micro_nlev) = pumas_refl10cm(:ncol,:) + reflz10cm(:,:micro_nlev) = pumas_reflz10cm(:ncol,:) + rercld(:,:micro_nlev) = pumas_rercld(:ncol,:) + ncai(:,:micro_nlev) = pumas_ncai(:ncol,:) + ncal(:,:micro_nlev) = pumas_ncal(:ncol,:) + rainliq(:,:micro_nlev) = pumas_rainliq(:ncol,:) + snowice(:,:micro_nlev) = pumas_snowice(:ncol,:) + numrain_vol(:,:micro_nlev) = pumas_numrain_vol(:ncol,:) + numsnow_vol(:,:micro_nlev) = pumas_numsnow_vol(:ncol,:) + diam_rain(:,:micro_nlev) = pumas_diam_rain(:ncol,:) + diam_snow(:,:micro_nlev) = pumas_diam_snow(:ncol,:) + graupice(:,:micro_nlev) = pumas_graupice(:ncol,:) + numgraup_vol(:,:micro_nlev) = pumas_numgraup_vol(:ncol,:) + diam_graup(:,:micro_nlev) = pumas_diam_graup(:ncol,:) + freq_graup(:,:micro_nlev) = pumas_freq_graup(:ncol,:) + freq_snow(:,:micro_nlev) = pumas_freq_graup(:ncol,:) + freq_rain(:,:micro_nlev) = pumas_freq_rain(:ncol,:) + frac_ice(:,:micro_nlev) = pumas_frac_ice(:ncol,:) + frac_cldliq_tend(:,:micro_nlev) = pumas_frac_cldliq_tend(:ncol,:) + rain_evap(:,:micro_nlev) = pumas_rain_evap(:ncol,:) + + end subroutine micro_pumas_ccpp_dimensions_post_run + +end module micro_pumas_ccpp_dimensions_post diff --git a/schemes/pumas/micro_pumas_ccpp_dimensions_post.meta b/schemes/pumas/micro_pumas_ccpp_dimensions_post.meta new file mode 100644 index 00000000..9e15ee56 --- /dev/null +++ b/schemes/pumas/micro_pumas_ccpp_dimensions_post.meta @@ -0,0 +1,1216 @@ +[ccpp-table-properties] + name = micro_pumas_ccpp_dimensions_post + type = scheme +######################################################################## +[ccpp-arg-table] + name = micro_pumas_ccpp_dimensions_post_run + type = scheme + +##### Run Arguments +[ncol] + standard_name = horizontal_loop_extent + long_name = number of horizontal columns + units = count + dimensions = () + type = integer + intent = in +[micro_ncol] + #Equivalent to "horizontal_loop_extent" unless subcolumns is enabled + standard_name = microphysics_horizontal_loop_extent + long_name = number of horizontal columns used by microphysics + units = count + dimensions = () + type = integer + intent = in +[nlev] + standard_name = vertical_layer_dimension + long_name = vertical layer dimension + units = count + dimensions = () + type = integer + intent = in +[micro_nlev] + #Vertical levels from surface to highest level with tropospheric clouds + standard_name = microphysics_vertical_layer_dimension + long_name = vertical layer dimension used by microphysics + units = count + dimensions = () + type = integer + intent = in +[nlevp1] + standard_name = vertical_interface_dimension + long_name = vertical interface dimension + units = count + dimensions = () + type = integer + intent = in +[micro_nlevp1] + #Vertical interfaces from surface to highest level with tropospheric clouds + standard_name = microphysics_vertical_interface_dimension + long_name = vertical interface dimension used by microphysics + units = count + dimensions = () + type = integer + intent = in +[pint] + standard_name = air_pressure_at_interface + long_name = air pressure at interface + units = Pa + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = out +[pumas_pint] + standard_name = pumas_air_pressure_at_interface + long_name = pumas air pressure at interface + units = Pa + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = in +[qcsinksum_rate1ord] + standard_name = direct_conversion_rate_of_stratiform_cloud_water_to_precipitation_for_scavenging + long_name = direct conversion rate of stratiform cloud water to precipitation + units = s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_qcsinksum_rate1ord] + standard_name = pumas_direct_conversion_rate_of_stratiform_cloud_water_to_precipitation_for_scavenging + long_name = microphysics direct conversion rate of stratiform cloud water to precipitation + units = s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[airT_tend] + standard_name = tendency_of_dry_air_enthalpy_at_constant_pressure + long_name = tendency of dry air enthalpy at constant pressure + units = J kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_airT_tend] + standard_name = tendency_of_pumas_dry_air_enthalpy_at_constant_pressure + long_name = microphysics tendency of dry air enthalpy at constant pressure + units = J kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[airq_tend] + standard_name = tendency_of_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = tendency of water vapor mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_airq_tend] + standard_name = tendency_of_pumas_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of water vapor mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[cldliq_tend] + standard_name = tendency_of_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = tendency of cloud liquid water mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_cldliq_tend] + standard_name = tendency_of_pumas_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of cloud liquid water mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[cldice_tend] + standard_name = tendency_of_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = tendency of cloud ice mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_cldice_tend] + standard_name = tendency_of_pumas_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of cloud ice mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numliq_tend] + standard_name = tendency_of_mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + long_name = mass number concentration of cloud liquid water wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_numliq_tend] + standard_name = tendency_of_pumas_mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of cloud liquid water wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numice_tend] + standard_name = tendency_of_mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + long_name = mass number concentration of cloud ice wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_numice_tend] + standard_name = tendency_of_pumas_mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of cloud ice wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[rainliq_tend] + standard_name = tendency_of_rain_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = tendency of rain mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_rainliq_tend] + standard_name = tendency_of_pumas_rain_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of rain mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[snowice_tend] + standard_name = tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = tendency of rain mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_snowice_tend] + standard_name = tendency_of_pumas_snow_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of rain mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numrain_tend] + standard_name = tendency_of_mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + long_name = tendency of mass number concentration of rain wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_numrain_tend] + standard_name = tendency_of_pumas_mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of mass number concentration of rain wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numsnow_tend] + standard_name = tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + long_name = tendency of mass number concentration of snow wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_numsnow_tend] + standard_name = tendency_of_pumas_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of mass number concentration of snow wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[graupice_tend] + standard_name = tendency_of_graupel_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = tendency of graupel mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_graupice_tend] + standard_name = tendency_of_pumas_graupel_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of graupel mixing ratio wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numgraup_tend] + standard_name = tendency_of_mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + long_name = tendency of mass number concentration of graupel wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out + constituent = true +[pumas_numgraup_tend] + standard_name = tendency_of_pumas_mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + long_name = microphysics tendency of mass number concentration of graupel wrt moist air and condensed water + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[effc] + standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle + long_name = effective radius of stratiform cloud liquid water particle + units = um + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_effc] + standard_name = pumas_effective_radius_of_stratiform_cloud_liquid_water_particle + long_name = microphysics effective radius of stratiform cloud liquid water particle + units = um + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[effc_fn] + standard_name = effective_radius_of_stratiform_cloud_liquid_water_particle_assuming_cloud_water_number_concentration_of_1e8_per_kg_air + long_name = effective radius of stratiform cloud liquid water particle assuming cloud water number concentration of 1e8 per kg air + units = um + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_effc_fn] + standard_name = pumas_effective_radius_of_stratiform_cloud_liquid_water_particle_assuming_cloud_water_number_concentration_of_1e8_per_kg_air + long_name = microphysics effective radius of stratiform cloud liquid water particle assuming cloud water number concentration of 1e8 per kg air + units = um + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[effi] + standard_name = effective_radius_of_stratiform_cloud_ice_particle + long_name = effective radius of stratiform cloud ice particle + units = micron + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_effi] + standard_name = pumas_effective_radius_of_stratiform_cloud_ice_particle + long_name = microphysics effective radius of stratiform cloud ice particle + units = micron + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[sadice] + standard_name = cloud_ice_surface_area_density + long_name = cloud ice surface area density + units = cm2 cm-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_sadice] + standard_name = pumas_cloud_ice_surface_area_density + long_name = microphysics cloud ice surface area density + units = cm2 cm-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[sadsnow] + standard_name = snow_surface_area_density + long_name = snow surface area density + units = cm2 cm-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_sadsnow] + standard_name = pumas_snow_surface_area_density + long_name = microphysics snow surface area density + units = cm2 cm-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[prect] + standard_name = lwe_large_scale_precipitation_rate_at_surface + long_name = LWE large scale precipitation rate at surface + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out +[pumas_prect] + standard_name = pumas_lwe_large_scale_precipitation_rate_at_surface + long_name = microphysics LWE large scale precipitation rate at surface + units = m s-1 + dimensions = (microphysics_horizontal_loop_extent) + type = real + kind = pumas_r8 + intent = in +[preci] + standard_name = lwe_large_scale_snowfall_rate_at_surface + long_name = LWE large scale snowfall rate at surface + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out +[pumas_preci] + standard_name = pumas_lwe_large_scale_snowfall_rate_at_surface + long_name = microphysics LWE large scale snowfall rate at surface + units = m s-1 + dimensions = (microphysics_horizontal_loop_extent) + type = real + kind = pumas_r8 + intent = in +[prec_evap] + standard_name = precipitation_evaporation_rate_wrt_moist_air_and_condensed_water + long_name = precipitation evaporation rate wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_prec_evap] + standard_name = pumas_precipitation_evaporation_rate_wrt_moist_air_and_condensed_water + long_name = microphysics precipitation evaporation rate wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[am_evap_st] + standard_name = precipitation_evaporation_area + long_name = precipitation evaporation area + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_am_evap_st] + standard_name = pumas_precipitation_evaporation_area + long_name = microphysics precipitation evaporation area + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[prec_prod] + standard_name = precipitation_production_rate_wrt_moist_air_and_condensed_water + long_name = precipitation production rate wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_prec_prod] + standard_name = pumas_precipitation_production_rate_wrt_moist_air_and_condensed_water + long_name = microphysics precipitation production rate wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[cmeice] + standard_name = condensation_minus_evaporation_rate_of_in_cloud_ice_wrt_moist_air_and_condensed_water + long_name = condensation minus evaporation rate of in-cloud ice wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_cmeice] + standard_name = pumas_condensation_minus_evaporation_rate_of_in_cloud_ice_wrt_moist_air_and_condensed_water + long_name = microphysics condensation minus evaporation rate of in-cloud ice wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[deffi] + standard_name = effective_diameter_of_stratiform_cloud_ice_particles_for_radiation + long_name = effective diameter of stratiform cloud ice particles for radiation + units = um + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_deffi] + standard_name = pumas_effective_diameter_of_stratiform_cloud_ice_particles_for_radiation + long_name = microphysics effective diameter of stratiform cloud ice particles for radiation + units = um + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[pgamrad] + standard_name = cloud_particle_size_distribution_shape_parameter + long_name = cloud particle size distribution shape (gamma) parameter + units = 1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_pgamrad] + standard_name = pumas_cloud_particle_size_distribution_shape_parameter + long_name = microphysics cloud particle size distribution shape (gamma) parameter + units = 1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[lamcrad] + standard_name = cloud_particle_size_distribution_slope_parameter + long_name = cloud particle size distribution slope (lambda) parameter + units = 1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_lamcrad] + standard_name = pumas_cloud_particle_size_distribution_slope_parameter + long_name = microphysics cloud particle size distribution slope (lambda) parameter + units = 1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[snowice_in_prec] + standard_name = snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + long_name = snow mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_snowice_in_prec] + standard_name = pumas_snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + long_name = microphysics snow mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[scaled_diam_snow] + standard_name = snow_scaled_diameter + long_name = snow scaled diameter + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_scaled_diam_snow] + standard_name = pumas_snow_scaled_diameter + long_name = microphysics snow scaled diameter + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[graupice_in_prec] + standard_name = graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + long_name = graupel mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_graupice_in_prec] + standard_name = pumas_graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + long_name = microphysics graupel mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numgraup_vol_in_prec] + standard_name = graupel_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + long_name = graupel number concentration of new state in precipitating fraction of gridcell + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_numgraup_vol_in_prec] + standard_name = pumas_graupel_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + long_name = microphysics graupel number concentration of new state in precipitating fraction of gridcell + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[scaled_diam_graup] + standard_name = graupel_scaled_diameter + long_name = graupel diameter + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_scaled_diam_graup] + standard_name = pumas_graupel_scaled_diameter + long_name = microphysics graupel diameter + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[lflx] + standard_name = cloud_liquid_sedimentation_flux + long_name = cloud liquid sedimentation flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = out +[pumas_lflx] + standard_name = pumas_cloud_liquid_sedimentation_flux + long_name = microphysics cloud liquid sedimentation flux + units = kg m-2 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = in +[iflx] + standard_name = cloud_ice_sedimentation_flux + long_name = cloud ice sedimentation flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = out +[pumas_iflx] + standard_name = pumas_cloud_ice_sedimentation_flux + long_name = microphysics cloud ice sedimentation flux + units = kg m-2 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = in +[gflx] + standard_name = graupel_sedimentation_flux + long_name = graupel sedimentation flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = out +[pumas_gflx] + standard_name = pumas_graupel_sedimentation_flux + long_name = microphysics graupel sedimentation flux + units = kg m-2 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = in +[rflx] + standard_name = rain_sedimentation_flux + long_name = rain sedimentation flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = out +[pumas_rflx] + standard_name = pumas_rain_sedimentation_flux + long_name = microphysics rain sedimentation flux + units = kg m-2 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = in +[sflx] + standard_name = snow_sedimentation_flux + long_name = snow sedimentation flux + units = kg m-2 s-1 + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = out +[pumas_sflx] + standard_name = pumas_snow_sedimentation_flux + long_name = microphysics snow sedimentation flux + units = kg m-2 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = in +[rainliq_in_prec] + standard_name = rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + long_name = rain mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_rainliq_in_prec] + standard_name = pumas_rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state_in_precipitating_fraction_of_gridcell + long_name = microphysics rain mixing ratio wrt moist air and condensed water of new state in precipitating fraction of gridcell + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[reff_rain] + standard_name = effective_radius_of_stratiform_rain_particle + long_name = effective radius of stratiform rain particle + units = um + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_reff_rain] + standard_name = pumas_effective_radius_of_stratiform_rain_particle + long_name = microphysics effective radius of stratiform rain particle + units = um + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[reff_snow] + standard_name = effective_radius_of_stratiform_snow_particle + long_name = effective radius of stratiform snow particle + units = um + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_reff_snow] + standard_name = pumas_effective_radius_of_stratiform_snow_particle + long_name = microphysics effective radius of stratiform snow particle + units = um + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[reff_grau] + standard_name = effective_radius_of_stratiform_graupel_particle + long_name = effective radius of stratiform graupel particle + units = um + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_reff_grau] + standard_name = pumas_effective_radius_of_stratiform_graupel_particle + long_name = microphysics effective radius of stratiform graupel particle + units = um + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numrain_vol_in_prec] + standard_name = rain_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + long_name = rain number concentration of new state in precipitating fraction of gridcell + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_numrain_vol_in_prec] + standard_name = pumas_rain_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + long_name = microphysics rain number concentration of new state in precipitating fraction of gridcell + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numsnow_vol_in_prec] + standard_name = snow_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + long_name = snow number concentration of new state in precipitating fraction of gridcell + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_numsnow_vol_in_prec] + standard_name = pumas_snow_number_concentration_of_new_state_in_precipitating_fraction_of_gridcell + long_name = microphysics snow number concentration of new state in precipitating fraction of gridcell + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[refl] + standard_name = analytic_radar_reflectivity_at_94_GHz_in_precipitating_fraction_of_gridcell + long_name = analytic radar reflectivity at 94 GHz in precipitating fraction of gridcell + units = dBZ + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_refl] + standard_name = pumas_analytic_radar_reflectivity_at_94_GHz_in_precipitating_fraction_of_gridcell + long_name = microphysics analytic radar reflectivity at 94 GHz in precipitating fraction of gridcell + units = dBZ + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[arefl] + standard_name = analytic_radar_reflectivity_at_94_GHz + long_name = analytic radar reflectivity at 94 GHz + units = dBZ + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_arefl] + standard_name = pumas_analytic_radar_reflectivity_at_94_GHz + long_name = microphysics analytic radar reflectivity at 94 GHz + units = dBZ + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[areflz] + standard_name = analytic_radar_reflectivity_z_factor_at_94_GHz + long_name = analytic radar reflectivity z factor at 94 GHz + units = mm6 m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_areflz] + standard_name = pumas_analytic_radar_reflectivity_z_factor_at_94_GHz + long_name = microphysics analytic radar reflectivity z factor at 94 GHz + units = mm6 m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[frefl] + standard_name = fraction_of_gridcell_with_nonzero_radar_reflectivity + long_name = fraction of gridcell with nonzero radar reflectivity + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_frefl] + standard_name = pumas_fraction_of_gridcell_with_nonzero_radar_reflectivity + long_name = microphysics fraction of gridcell with nonzero radar reflectivity + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[csrfl] + standard_name = analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds_in_precipitating_fraction_of_gridcell + long_name = analytic radar reflectivity at 94 GHz with CloudSat thresholds in precipitating fraction of gridcell + units = dBZ + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_csrfl] + standard_name = pumas_analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds_in_precipitating_fraction_of_gridcell + long_name = microphysics analytic radar reflectivity at 94 GHz with CloudSat thresholds in precipitating fraction of gridcell + units = dBZ + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[acsrfl] + standard_name = analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds + long_name = analytic radar reflectivity at 94 GHz with CloudSat thresholds + units = dBZ + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_acsrfl] + standard_name = pumas_analytic_radar_reflectivity_at_94_GHz_with_cloudsat_thresholds + long_name = microphysics analytic radar reflectivity at 94 GHz with CloudSat thresholds + units = dBZ + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[fcsrfl] + standard_name = fraction_of_gridcell_with_nonzero_radar_reflectivity_with_cloudsat_thresholds + long_name = fraction of gridcell with nonzero radar reflectivity with CloudSat thresholds + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_fcsrfl] + standard_name = pumas_fraction_of_gridcell_with_nonzero_radar_reflectivity_with_cloudsat_thresholds + long_name = microphysics fraction of gridcell with nonzero radar reflectivity with CloudSat thresholds + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[refl10cm] + standard_name = analytic_radar_reflectivity_at_10_cm_wavelength + long_name = analytic radar reflectivity at 10 cm wavelength + units = dBZ + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_refl10cm] + standard_name = pumas_analytic_radar_reflectivity_at_10_cm_wavelength + long_name = microphysics analytic radar reflectivity at 10 cm wavelength + units = dBZ + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[reflz10cm] + standard_name = analytic_radar_reflectivity_z_factor_at_10_cm_wavelength + long_name = analytic radar reflectivity z factor at 10 cm wavelength + units = mm6 m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_reflz10cm] + standard_name = pumas_analytic_radar_reflectivity_z_factor_at_10_cm_wavelength + long_name = microphysics analytic radar reflectivity z factor at 10 cm wavelength + units = mm6 m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[rercld] + standard_name = effective_radius_of_stratiform_cloud_liquid_plus_rain_particles + long_name = effective radius of stratiform cloud liquid plus rain particles + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_rercld] + standard_name = pumas_effective_radius_of_stratiform_cloud_liquid_plus_rain_particles + long_name = microphysics effective radius of stratiform cloud liquid plus rain particles + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[ncai] + standard_name = available_ice_nuclei_number_concentration_of_new_state + long_name = available ice nuclei number concentration of new state + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_ncai] + standard_name = pumas_available_ice_nuclei_number_concentration_of_new_state + long_name = microphysics available ice nuclei number concentration of new state + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[ncal] + standard_name = available_cloud_condensation_nuclei_number_concentration_of_new_state + long_name = available cloud condensation nuclei number concentration of new state + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_ncal] + standard_name = pumas_available_cloud_condensation_nuclei_number_concentration_of_new_state + long_name = microphysics available cloud condensation nuclei number concentration of new state + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[rainliq] + standard_name = rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + long_name = rain mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_rainliq] + standard_name = pumas_rain_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + long_name = microphysics rain mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[snowice] + standard_name = snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + long_name = snow mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_snowice] + standard_name = pumas_snow_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + long_name = microphysics snow mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numrain_vol] + standard_name = rain_number_concentration_of_new_state + long_name = rain number concentration of new state + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_numrain_vol] + standard_name = pumas_rain_number_concentration_of_new_state + long_name = microphysics rain number concentration of new state + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numsnow_vol] + standard_name = snow_number_concentration_of_new_state + long_name = snow number concentration of new state + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_numsnow_vol] + standard_name = pumas_snow_number_concentration_of_new_state + long_name = microphysics snow number concentration of new state + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[diam_rain] + standard_name = average_diameter_of_stratiform_rain_particle + long_name = average diameter of stratiform rain particle + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_diam_rain] + standard_name = pumas_average_diameter_of_stratiform_rain_particle + long_name = microphysics average diameter of stratiform rain particle + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[diam_snow] + standard_name = average_diameter_of_stratiform_snow_particle + long_name = average diameter of stratiform snow particle + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_diam_snow] + standard_name = pumas_average_diameter_of_stratiform_snow_particle + long_name = microphysics average diameter of stratiform snow particle + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[graupice] + standard_name = graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + long_name = graupel mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_graupice] + standard_name = pumas_graupel_mixing_ratio_wrt_moist_air_and_condensed_water_of_new_state + long_name = microphysics graupel mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[numgraup_vol] + standard_name = graupel_number_concentration_of_new_state + long_name = graupel number concentration of new state + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_numgraup_vol] + standard_name = pumas_graupel_number_concentration_of_new_state + long_name = microphysics graupel number concentration of new state + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[diam_graup] + standard_name = average_diameter_of_stratiform_graupel_particle + long_name = average diameter of stratiform graupel particle + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_diam_graup] + standard_name = pumas_average_diameter_of_stratiform_graupel_particle + long_name = microphysics average diameter of stratiform graupel particle + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[freq_graup] + standard_name = fraction_of_gridcell_with_graupel + long_name = fraction of gridcell with graupel + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_freq_graup] + standard_name = pumas_fraction_of_gridcell_with_graupel + long_name = microphysics fraction of gridcell with graupel + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[freq_snow] + standard_name = fraction_of_gridcell_with_snow + long_name = fraction of gridcell with snow + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_freq_snow] + standard_name = pumas_fraction_of_gridcell_with_snow + long_name = microphysics fraction of gridcell with snow + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[freq_rain] + standard_name = fraction_of_gridcell_with_rain + long_name = fraction of gridcell with rain + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_freq_rain] + standard_name = pumas_fraction_of_gridcell_with_rain + long_name = microphysics fraction of gridcell with rain + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[frac_ice] + standard_name = fraction_of_frozen_water_to_total_condensed_water + long_name = fraction of frozen water to total condensed water + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_frac_ice] + standard_name = pumas_fraction_of_frozen_water_to_total_condensed_water + long_name = microphysics fraction of frozen water to total condensed water + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[frac_cldliq_tend] + standard_name = fraction_of_cloud_liquid_tendency_applied_to_state + long_name = fraction of cloud liquid tendency applied to state + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_frac_cldliq_tend] + standard_name = pumas_fraction_of_cloud_liquid_tendency_applied_to_state + long_name = microphysics fraction of cloud liquid tendency applied to state + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[rain_evap] + standard_name = rain_evaporation_rate_wrt_moist_air_and_condensed_water + long_name = rain evaporation rate wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[pumas_rain_evap] + standard_name = pumas_rain_evaporation_rate_wrt_moist_air_and_condensed_water + long_name = microphysics rain evaporation rate wrt moist air and condensed water + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = in +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=512 + intent = out +[errcode] + standard_name = ccpp_error_code + long_name = error code for error handling in CCPP + units = 1 + dimensions = () + type = integer + intent = out diff --git a/schemes/pumas/micro_pumas_ccpp_dimensions_pre.F90 b/schemes/pumas/micro_pumas_ccpp_dimensions_pre.F90 new file mode 100644 index 00000000..8e1a0398 --- /dev/null +++ b/schemes/pumas/micro_pumas_ccpp_dimensions_pre.F90 @@ -0,0 +1,236 @@ +module micro_pumas_ccpp_dimensions_pre + + use pumas_kinds, only: pumas_r8=>kind_r8 + use ccpp_kinds, only: kind_phys + + implicit none + +contains + + !> \section arg_table_micro_pumas_ccpp_dimensions_pre_init Argument Table + !! \htmlinclude micro_pumas_ccpp_dimensions_pre_init.html + subroutine micro_pumas_ccpp_dimensions_pre_init( ncol, nlev, nlevp1, & + trop_cloud_top_lev, micro_ncol, micro_nlev, & + micro_nlevp1, errmsg, errcode) + + !Host model dimensions/parameters: + integer, intent(in) :: ncol + integer, intent(in) :: nlev + integer, intent(in) :: nlevp1 + integer, intent(in) :: trop_cloud_top_lev !Index of the top model level for which + !cloud physics is applied (1 to nlev) + + !PUMAS dimensions/parameters: + integer, intent(out) :: micro_ncol !Number of horizontal microphysics columns (count) + integer, intent(out) :: micro_nlev !Number of microphysics vertical layers (count) + integer, intent(out) :: micro_nlevp1 !Number of microphysics vertical interfaces (count) + + !CCPP error handling: + character(len=512), intent(out) :: errmsg + integer, intent(out) :: errcode + + !Initialize error message and error code: + errmsg = '' + errcode = 0 + + !Set PUMAS (cloud microphysics) dimensions: + micro_ncol = ncol + micro_nlev = nlev-trop_cloud_top_lev+1 + micro_nlevp1 = micro_nlev + 1 + + end subroutine micro_pumas_ccpp_dimensions_pre_init + + !> \section arg_table_micro_pumas_ccpp_dimensions_pre_run Argument Table + !! \htmlinclude micro_pumas_ccpp_dimensions_pre_run.html + subroutine micro_pumas_ccpp_dimensions_pre_run(ncol, nlev, nlevp1, & + micro_ncol, micro_nlev, micro_nlevp1, micro_dust_nbins,& + airT_in, pumas_airT, airq_in, pumas_airq, & + cldliq_in, pumas_cldliq, & + cldice_in, pumas_cldice, & + micro_mg_num_steps, dtime, pumas_timestep, & + numliq_in, pumas_numliq, & + numice_in, pumas_numice, & + rainliq_in, pumas_rainliq, & + snowice_in, pumas_snowice, & + numrain_in, pumas_numrain, & + numsnow_in, pumas_numsnow, & + graupice_in, pumas_graupice, & + numgraup_in, pumas_numgraup, & + relvar_in, pumas_relvar, & + accre_enhan_in, pumas_accre_enhan, & + pmid_in, pumas_pmid, & + pdel_in, pumas_pdel, & + pint_in, pumas_pint, & + strat_cldfrc_in, pumas_strat_cldfrc, & + strat_liq_cldfrc_in, pumas_strat_liq_cldfrc, & + strat_ice_cldfrc_in, pumas_strat_ice_cldfrc, & + qsatfac_in, pumas_qsatfac, & + naai_in, pumas_naai, & + npccn_in, pumas_npccn, & + rndst_in, pumas_rndst, & + nacon_in, pumas_nacon, & + snowice_tend_external_in, pumas_snowice_tend_external, & + numsnow_tend_external_in, pumas_numsnow_tend_external, & + effi_external_in, pumas_effi_external, & + frzimm_in, pumas_frzimm, & + frzcnt_in, pumas_frzcnt, & + frzdep_in, pumas_frzdep, & + errmsg, errcode) + + !Host model dimensions/parameters: + integer, intent(in) :: ncol + integer, intent(in) :: nlev + integer, intent(in) :: nlevp1 + + !PUMAS dimensions/parameters: + integer, intent(in) :: micro_ncol !Number of horizontal microphysics columns (count) + integer, intent(in) :: micro_nlev !Number of microphysics vertical layers (count) + integer, intent(in) :: micro_nlevp1 !Number of microphysics vertical interfaces (count) + integer, intent(in) :: micro_dust_nbins !Number of dust bins + + ! Air temperature (K) + real(kind_phys), intent(in) :: airT_in(:, :) + real(pumas_r8), intent(out) :: pumas_airT(:, :) + ! Water vapor mixing ratio wrt moist air and condensed water (kg kg-1) + real(kind_phys), intent(in) :: airq_in(:, :) + real(pumas_r8), intent(out) :: pumas_airq(:, :) + ! Cloud liquid water mixing ratio wrt moist air and condensed water (kg kg-1) + real(kind_phys), intent(in) :: cldliq_in(:, :) + real(pumas_r8), intent(out) :: pumas_cldliq(:, :) + ! Cloud ice mixing ratio wrt moist air and condensed water (kg kg-1) + real(kind_phys), intent(in) :: cldice_in(:, :) + real(pumas_r8), intent(out) :: pumas_cldice(:, :) + ! Substepping in microphysics variables + integer, intent(in) :: micro_mg_num_steps + real(kind_phys), intent(in) :: dtime + real(pumas_r8), intent(out) :: pumas_timestep + ! Mass number concentration of cloud liquid water wrt moist air and condensed water (kg-1) + real(kind_phys), intent(in) :: numliq_in(:, :) + real(pumas_r8), intent(out) :: pumas_numliq(:, :) + ! Mass number concentration of cloud ice wrt moist air and condensed water (kg-1) + real(kind_phys), intent(in) :: numice_in(:, :) + real(pumas_r8), intent(out) :: pumas_numice(:, :) + ! Rain mixing ratio wrt moist air and condensed water (kg kg-1) + real(kind_phys), intent(in) :: rainliq_in(:, :) + real(pumas_r8), intent(out) :: pumas_rainliq(:, :) + ! Snow mixing ratio wrt moist air and condensed water (kg kg-1) + real(kind_phys), intent(in) :: snowice_in(:, :) + real(pumas_r8), intent(out) :: pumas_snowice(:, :) + ! Mass number concentration of rain wrt moist air and condensed water (kg-1) + real(kind_phys), intent(in) :: numrain_in(:, :) + real(pumas_r8), intent(out) :: pumas_numrain(:, :) + ! Mass number concentration of snow wrt moist air and condensed water (kg-1) + real(kind_phys), intent(in) :: numsnow_in(:, :) + real(pumas_r8), intent(out) :: pumas_numsnow(:, :) + ! Graupel mixing ratio wrt moist air and condensed water (kg kg-1) + real(kind_phys), intent(in) :: graupice_in(:, :) + real(pumas_r8), intent(out) :: pumas_graupice(:, :) + ! Mass number concentration of graupel wrt moist air and condensed water (kg-1) + real(kind_phys), intent(in) :: numgraup_in(:, :) + real(pumas_r8), intent(out) :: pumas_numgraup(:, :) + ! Relative variance of cloud water (1) + real(kind_phys), intent(in) :: relvar_in(:, :) + real(pumas_r8), intent(out) :: pumas_relvar(:, :) + ! Accretion enhancement factor (1) + real(kind_phys), intent(in) :: accre_enhan_in(:, :) + real(pumas_r8), intent(out) :: pumas_accre_enhan(:, :) + ! Air pressure (Pa) + real(kind_phys), intent(in) :: pmid_in(:, :) + real(pumas_r8), intent(out) :: pumas_pmid(:, :) + ! Air pressure thickness (Pa) + real(kind_phys), intent(in) :: pdel_in(:, :) + real(pumas_r8), intent(out) :: pumas_pdel(:, :) + ! Air pressure at interfaces (Pa) + real(kind_phys), intent(in) :: pint_in(:, :) + real(pumas_r8), intent(out) :: pumas_pint(:, :) + ! Stratiform cloud area fraction (fraction) + real(kind_phys), intent(in) :: strat_cldfrc_in(:, :) + real(pumas_r8), intent(out) :: pumas_strat_cldfrc(:, :) + ! Stratiform cloud liquid area fraction (fraction) + real(kind_phys), intent(in) :: strat_liq_cldfrc_in(:, :) + real(pumas_r8), intent(out) :: pumas_strat_liq_cldfrc(:, :) + ! Stratiform cloud ice area fraction (fraction) + real(kind_phys), intent(in) :: strat_ice_cldfrc_in(:, :) + real(pumas_r8), intent(out) :: pumas_strat_ice_cldfrc(:, :) + ! Subgrid cloud water saturation scaling factor (1) + real(kind_phys), intent(in) :: qsatfac_in(:, :) + real(pumas_r8), intent(out) :: pumas_qsatfac(:, :) + ! Tendency of activated ice nuclei mass number concentration (kg-1 s-1) + real(kind_phys), intent(in) :: naai_in(:, :) + real(pumas_r8), intent(out) :: pumas_naai(:, :) + ! Tendency of activated cloud condensation nuclei mass number concentration (kg-1 s-1) + real(kind_phys), intent(in) :: npccn_in(:, :) + real(pumas_r8), intent(out) :: pumas_npccn(:, :) + ! Dust radii by size bin (m) + real(kind_phys), intent(in) :: rndst_in(:, :, :) + real(pumas_r8), intent(out) :: pumas_rndst(:, :, :) + ! Dust number concentration by size bin (m-3) + real(kind_phys), intent(in) :: nacon_in(:, :, :) + real(pumas_r8), intent(out) :: pumas_nacon(:, :, :) + ! Tendency of snow mixing ratio wrt moist air and condensed water from external microphysics (kg kg-1 s-1) + real(kind_phys), intent(in) :: snowice_tend_external_in(:, :) + real(pumas_r8), intent(out) :: pumas_snowice_tend_external(:, :) + ! Tendency of mass number concentration of snow wrt moist air and condensed water from external microphysics (kg-1 s-1) + real(kind_phys), intent(in) :: numsnow_tend_external_in(:, :) + real(pumas_r8), intent(out) :: pumas_numsnow_tend_external(:, :) + ! Effective radius of stratiform cloud ice particle from external microphysics (m) + real(kind_phys), intent(in) :: effi_external_in(:, :) + real(pumas_r8), intent(out) :: pumas_effi_external(:, :) + ! Tendency of cloud liquid droplet number concentration due to immersion freezing (cm-3) + real(kind_phys), intent(in) :: frzimm_in(:, :) + real(pumas_r8), intent(out) :: pumas_frzimm(:, :) + ! Tendency of cloud liquid droplet number concentration due to contact freezing (cm-3) + real(kind_phys), intent(in) :: frzcnt_in(:, :) + real(pumas_r8), intent(out) :: pumas_frzcnt(:, :) + ! Tendency of cloud ice number concentration due to deposition nucleation (cm-3) + real(kind_phys), intent(in) :: frzdep_in(:, :) + real(pumas_r8), intent(out) :: pumas_frzdep(:, :) + + character(len=512), intent(out) :: errmsg + integer, intent(out) :: errcode + + !Initialize error message and error code: + errmsg = '' + errcode = 0 + + pumas_timestep = dtime/micro_mg_num_steps + +!+ IH +! For now we just use ncols = micro_ncol, but we need to constrain the vertical extent for the microphysical fields. +! Therefore micro_xxx(:ncol,:) = xxx(:,::) +!- IH + pumas_airT(:ncol,:) = real(airT_in(:,:), pumas_r8) + pumas_airq(:ncol,:) = real(airq_in(:,:), pumas_r8) + pumas_cldliq(:ncol,:) = real(cldliq_in(:,:), pumas_r8) + pumas_cldice(:ncol,:) = real(cldice_in(:,:), pumas_r8) + pumas_numliq(:ncol,:) = real(numliq_in(:,:), pumas_r8) + pumas_numice(:ncol,:) = real(numice_in(:,:), pumas_r8) + pumas_rainliq(:ncol,:) = real(rainliq_in(:,:), pumas_r8) + pumas_snowice(:ncol,:) = real(snowice_in(:,:), pumas_r8) + pumas_numrain(:ncol,:) = real(numrain_in(:,:), pumas_r8) + pumas_numsnow(:ncol,:) = real(numsnow_in(:,:), pumas_r8) + pumas_graupice(:ncol,:) = real(graupice_in(:,:), pumas_r8) + pumas_numgraup(:ncol,:) = real(numgraup_in(:,:), pumas_r8) + pumas_relvar(:ncol,:) = real(relvar_in(:,:), pumas_r8) + pumas_accre_enhan(:ncol,:) = real(accre_enhan_in(:,:), pumas_r8) + pumas_pmid(:ncol,:) = real(pmid_in(:,:), pumas_r8) + pumas_pdel(:ncol,:) = real(pdel_in(:,:), pumas_r8) + pumas_pint(:ncol,:) = real(pint_in(:,:micro_nlevp1), pumas_r8) + pumas_strat_cldfrc(:ncol,:) = real(strat_cldfrc_in(:,:), pumas_r8) + pumas_strat_liq_cldfrc(:ncol,:) = real(strat_liq_cldfrc_in(:,:), pumas_r8) + pumas_strat_ice_cldfrc(:ncol,:) = real(strat_ice_cldfrc_in(:,:), pumas_r8) + pumas_qsatfac(:ncol,:) = real(qsatfac_in(:,:), pumas_r8) + pumas_naai(:ncol,:) = real(naai_in(:,:), pumas_r8) + pumas_npccn(:ncol,:) = real(npccn_in(:,:), pumas_r8) + pumas_rndst(:ncol,:,:) = real(rndst_in(:,:micro_nlev,:), pumas_r8) + pumas_nacon(:ncol,:,:) = real(nacon_in(:,:micro_nlev,:), pumas_r8) + pumas_snowice_tend_external(:ncol,:) = real(snowice_tend_external_in(:,:), pumas_r8) + pumas_numsnow_tend_external(:ncol,:) = real(numsnow_tend_external_in(:,:), pumas_r8) + pumas_effi_external(:ncol,:) = real(effi_external_in(:,:), pumas_r8) + pumas_frzcnt(:ncol,:) = real(frzcnt_in(:,:), pumas_r8) + pumas_frzdep(:ncol,:) = real(frzdep_in(:,:), pumas_r8) + + + end subroutine micro_pumas_ccpp_dimensions_pre_run + +end module micro_pumas_ccpp_dimensions_pre diff --git a/schemes/pumas/micro_pumas_ccpp_dimensions_pre.meta b/schemes/pumas/micro_pumas_ccpp_dimensions_pre.meta new file mode 100644 index 00000000..dd785ee2 --- /dev/null +++ b/schemes/pumas/micro_pumas_ccpp_dimensions_pre.meta @@ -0,0 +1,678 @@ +[ccpp-table-properties] + name = micro_pumas_ccpp_dimensions_pre + type = scheme + +######################################################################## + +[ccpp-arg-table] + name = micro_pumas_ccpp_dimensions_pre_init + type = scheme +[ncol] + standard_name = horizontal_dimension + long_name = horizontal dimension + units = count + dimensions = () + type = integer + intent = in +[nlev] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in +[nlevp1] + standard_name = vertical_interface_dimension + long_name = number of vertical levels plus one + units = count + dimensions = () + type = integer + intent = in +[trop_cloud_top_lev] + standard_name = vertical_layer_index_of_troposphere_cloud_physics_top + units = index + type = integer + dimensions = () + intent = in +[micro_ncol] + #Equivalent to "horizontal_loop_extent" unless subcolumns is enabled + standard_name = microphysics_horizontal_loop_extent + long_name = number of horizontal columns used by microphysics + units = count + dimensions = () + type = integer + intent = out +[micro_nlev] + #Vertical levels from surface to highest level with tropospheric clouds + standard_name = microphysics_vertical_layer_dimension + long_name = vertical layer dimension used by microphysics + units = count + dimensions = () + type = integer + intent = out +[micro_nlevp1] + #Vertical interfaces from surface to highest level with tropospheric clouds + standard_name = microphysics_vertical_interface_dimension + long_name = vertical interface dimension used by microphysics + units = count + dimensions = () + type = integer + intent = out +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=512 + intent = out +[errcode] + standard_name = ccpp_error_code + long_name = error code for error handling in CCPP + units = 1 + dimensions = () + type = integer + intent = out + +######################################################################## + +[ccpp-arg-table] + name = micro_pumas_ccpp_dimensions_pre_run + type = scheme +[ncol] + standard_name = horizontal_loop_extent + long_name = horizontal_loop_extent + units = count + dimensions = () + type = integer + intent = in +[nlev] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in +[nlevp1] + standard_name = vertical_interface_dimension + long_name = number of vertical levels plus one + units = count + dimensions = () + type = integer + intent = in +[micro_ncol] + #Equivalent to "horizontal_loop_extent" unless subcolumns is enabled + standard_name = microphysics_horizontal_loop_extent + long_name = number of horizontal columns used by microphysics + units = count + dimensions = () + type = integer + intent = in +[micro_nlev] + #Vertical levels from surface to highest level with tropospheric clouds + standard_name = microphysics_vertical_layer_dimension + long_name = vertical layer dimension used by microphysics + units = count + dimensions = () + type = integer + intent = in +[micro_nlevp1] + #Vertical interfaces from surface to highest level with tropospheric clouds + standard_name = microphysics_vertical_interface_dimension + long_name = vertical interface dimension used by microphysics + units = count + dimensions = () + type = integer + intent = in +[micro_dust_nbins] + standard_name = dust_size_bins_dimension + long_name = number of dust bins + units = count + dimensions = () + type = integer + intent = in +[airT_in] + standard_name = air_temperature + long_name = air temperature of new state + units = K + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_airT] + standard_name = pumas_air_temperature + long_name = microphysics air temperature of new state + units = K + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[airq_in] + standard_name = water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = water vapor mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_airq] + standard_name = pumas_water_vapor_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics water vapor mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[cldliq_in] + standard_name = cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = cloud liquid wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_cldliq] + standard_name = pumas_cloud_liquid_water_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics cloud liquid wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[cldice_in] + standard_name = cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = cloud ice mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_cldice] + standard_name = pumas_cloud_ice_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics cloud ice mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[micro_mg_num_steps] + standard_name = number_of_microphysics_substeps + units = count + dimensions = () + type = integer + intent = in +[ dtime ] + standard_name = timestep_for_physics + units = s + type = real + kind = kind_phys + dimensions = () + intent = in +[pumas_timestep] + standard_name = timestep_for_microphysics + units = s + dimensions = () + type = real + kind = pumas_r8 + intent = out +[numliq_in] + standard_name = mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + long_name = mass number concentration of cloud liquid wrt moist air and condensed water of new state + units = kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_numliq] + standard_name = pumas_mass_number_concentration_of_cloud_liquid_water_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of cloud liquid wrt moist air and condensed water of new state + units = kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[numice_in] + standard_name = mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + long_name = mass number concentration of cloud ice wrt moist air and condensed water of new state + units = kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_numice] + standard_name = pumas_mass_number_concentration_of_cloud_ice_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of cloud ice wrt moist air and condensed water of new state + units = kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[rainliq_in] + standard_name = rain_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = rain mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_rainliq] + standard_name = pumas_rain_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics rain mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[snowice_in] + standard_name = snow_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = snow mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_snowice] + standard_name = pumas_snow_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics snow mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[numrain_in] + standard_name = mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + long_name = mass number concentration of rain wrt moist air and condensed water of new state + units = kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_numrain] + standard_name = pumas_mass_number_concentration_of_rain_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of rain wrt moist air and condensed water of new state + units = kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[numsnow_in] + standard_name = mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + long_name = mass number concentration of snow wrt moist air and condensed water of new state + units = kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_numsnow] + standard_name = pumas_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of snow wrt moist air and condensed water of new state + units = kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[graupice_in] + standard_name = graupel_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = graupel mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_graupice] + standard_name = pumas_graupel_mixing_ratio_wrt_moist_air_and_condensed_water + long_name = microphysics graupel mixing ratio wrt moist air and condensed water of new state + units = kg kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[numgraup_in] + standard_name = mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + long_name = mass number concentration of graupel wrt moist air and condensed water of new state + units = kg-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in + advected = true +[pumas_numgraup] + standard_name = pumas_mass_number_concentration_of_graupel_wrt_moist_air_and_condensed_water + long_name = microphysics mass number concentration of graupel wrt moist air and condensed water of new state + units = kg-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[relvar_in] + standard_name = relative_variance_of_subgrid_cloud_condensate_distribution + long_name = relative variance of cloud water + units = 1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_relvar] + standard_name = pumas_relative_variance_of_cloud_water + long_name = microphysics relative variance of cloud water + units = 1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[accre_enhan_in] + standard_name = accretion_enhancement_factor + long_name = spatial varying accretion enhancement factor + units = 1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_accre_enhan] + standard_name = pumas_accretion_enhancement_factor + long_name = microphysics spatial varying accretion enhancement factor + units = 1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[pmid_in] + standard_name = air_pressure + long_name = air pressure + units = Pa + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_pmid] + standard_name = pumas_air_pressure + long_name = microphysics air pressure + units = Pa + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[pdel_in] + standard_name = air_pressure_thickness + long_name = air pressure thickness + units = Pa + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_pdel] + standard_name = pumas_air_pressure_thickness + long_name = microphysics air pressure thickness + units = Pa + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[pint_in] + standard_name = air_pressure_at_interface + long_name = air pressure at interface + units = Pa + dimensions = (horizontal_loop_extent, vertical_interface_dimension) + type = real + kind = kind_phys + intent = in +[pumas_pint] + standard_name = pumas_air_pressure_at_interface + long_name = microphysics air pressure at interface + units = Pa + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_interface_dimension) + type = real + kind = pumas_r8 + intent = out +[strat_cldfrc_in] + standard_name = stratiform_cloud_area_fraction + long_name = stratiform cloud area fraction + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_strat_cldfrc] + standard_name = pumas_stratiform_cloud_area_fraction + long_name = microphysics stratiform cloud area fraction + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[strat_liq_cldfrc_in] + standard_name = stratiform_cloud_liquid_area_fraction + long_name = stratiform cloud liquid area fraction + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_strat_liq_cldfrc] + standard_name = pumas_stratiform_cloud_liquid_area_fraction + long_name = microphysics stratiform cloud liquid area fraction + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[strat_ice_cldfrc_in] + standard_name = stratiform_cloud_ice_area_fraction + long_name = stratiform cloud ice area fraction + units = fraction + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_strat_ice_cldfrc] + standard_name = pumas_stratiform_cloud_ice_area_fraction + long_name = microphysics stratiform cloud ice area fraction + units = fraction + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[qsatfac_in] + standard_name = subgrid_cloud_water_saturation_scaling_factor_for_microphysics + long_name = subgrid cloud water saturation scaling factor + units = 1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_qsatfac] + standard_name = pumas_subgrid_cloud_water_saturation_scaling_factor + long_name = microphysics subgrid cloud water saturation scaling factor + units = 1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[naai_in] + standard_name = tendency_of_activated_ice_nuclei_mass_number_concentration + long_name = tendency of activated ice nuclei mass number concentration + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_naai] + standard_name = tendency_of_pumas_activated_ice_nuclei_mass_number_concentration + long_name = microphysics tendency of activated ice nuclei mass number concentration + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[npccn_in] + standard_name = tendency_of_activated_cloud_condensation_nuclei_mass_number_concentration + long_name = tendency of activated cloud condensation nuclei mass number concentration + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_npccn] + standard_name = tendency_of_pumas_activated_cloud_condensation_nuclei_mass_number_concentration + long_name = microphysics tendency of activated cloud condensation nuclei mass number concentration + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[rndst_in] + standard_name = dust_radii_by_size_bin + long_name = dust bin radii + units = m + dimensions = (horizontal_loop_extent, vertical_layer_dimension, dust_size_bins_dimension) + type = real + kind = kind_phys + intent = in +[pumas_rndst] + standard_name = pumas_dust_radii_by_size_bin + long_name = microphysics dust bin radii + units = m + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension, dust_size_bins_dimension) + type = real + kind = pumas_r8 + intent = out +[nacon_in] + standard_name = dust_number_concentration_by_size_bin_for_contact_freezing + long_name = dust number concentration by size bin + units = m-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension, dust_size_bins_dimension) + type = real + kind = kind_phys + intent = in +[pumas_nacon] + standard_name = pumas_dust_number_concentration_by_size_bin + long_name = microphysics dust number concentration by size bin + units = m-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension, dust_size_bins_dimension) + type = real + kind = pumas_r8 + intent = out +[snowice_tend_external_in] + standard_name = tendency_of_snow_mixing_ratio_wrt_moist_air_and_condensed_water_from_external + long_name = tendency of snow mixing ratio wrt moist air and condensed water from external microphysics + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_snowice_tend_external] + standard_name = tendency_of_pumas_snow_mixing_ratio_wrt_moist_air_and_condensed_water_from_external + long_name = microphysics tendency of snow mixing ratio wrt moist air and condensed water from external microphysics + units = kg kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[numsnow_tend_external_in] + standard_name = tendency_of_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water_from_external + long_name = tendency of mass number concentration of snow wrt moist air and condensed water from external microphysics + units = kg-1 s-1 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real | kind = kind_phys + intent = in +[pumas_numsnow_tend_external] + standard_name = tendency_of_pumas_mass_number_concentration_of_snow_wrt_moist_air_and_condensed_water_from_external + long_name = microphysics tendency of mass number concentration of snow wrt moist air and condensed water from external microphysics + units = kg-1 s-1 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out + +[effi_external_in] + standard_name = effective_radius_of_stratiform_cloud_ice_particle + long_name = effective radius of stratiform cloud ice particle from external microphysics + units = micron + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_effi_external] + standard_name = pumas_effective_radius_of_stratiform_cloud_ice_particle_from_external + long_name = microphysics effective radius of stratiform cloud ice particle from external microphysics + units = micron + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[frzimm_in] + standard_name = tendency_of_cloud_liquid_droplet_number_concentration_due_to_immersion_freezing + long_name = tendency of cloud liquid droplet number concentration due to immersion freezing + units = cm-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_frzimm] + standard_name = tendency_of_pumas_cloud_liquid_droplet_number_concentration_due_to_immersion_freezing + long_name = microphysics tendency of cloud liquid droplet number concentration due to immersion freezing + units = cm-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[frzcnt_in] + standard_name = tendency_of_cloud_liquid_droplet_number_concentration_due_to_contact_freezing + long_name = tendency of cloud liquid droplet number concentration due to contact freezing + units = cm-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_frzcnt] + standard_name = tendency_of_pumas_cloud_liquid_droplet_number_concentration_due_to_contact_freezing + long_name = microphysics tendency of cloud liquid droplet number concentration due to contact freezing + units = cm-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[frzdep_in] + standard_name = tendency_of_cloud_ice_number_concentration_due_to_deposition_nucleation + long_name = tendency of cloud ice number concentration due to deposition nucleation + units = cm-3 + dimensions = (horizontal_loop_extent, vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[pumas_frzdep] + standard_name = tendency_of_pumas_cloud_ice_number_concentration_due_to_deposition_nucleation + long_name = microphysics tendency of cloud ice number concentration due to deposition nucleation + units = cm-3 + dimensions = (microphysics_horizontal_loop_extent, microphysics_vertical_layer_dimension) + type = real + kind = pumas_r8 + intent = out +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=512 + intent = out +[errcode] + standard_name = ccpp_error_code + long_name = error code for error handling in CCPP + units = 1 + dimensions = () + type = integer + intent = out +##################### +#End of metadata file +##################### diff --git a/schemes/pumas/pumas b/schemes/pumas/pumas index 5f6e420d..4ba6311d 160000 --- a/schemes/pumas/pumas +++ b/schemes/pumas/pumas @@ -1 +1 @@ -Subproject commit 5f6e420d9530aee8595d33c95dfbfec53867ced5 +Subproject commit 4ba6311dd46b5046c515c7316239620cba31b867 diff --git a/schemes/pumas/pumas_pre_main.F90 b/schemes/pumas/pumas_pre_main.F90 new file mode 100644 index 00000000..526d8c97 --- /dev/null +++ b/schemes/pumas/pumas_pre_main.F90 @@ -0,0 +1,41 @@ +!This is just a placeholder for the eventual CCPP +!interstitial schemes needed for the PUMAS cloud +!microphysics package. + +!The hope that there will eventually be one set of +!portable interstitials and possibly another set +!of host-specific intersititals (if needed) above +!the portable layer. + +module pumas_pre_main + + use ccpp_kinds, only: kind_phys + + implicit none + + contains + + !Add subroutines here + !for any pre-processing + !steps needed before the core + !PUMAS calls. + + + !> \section arg_table_pumas_pre_main_init Argument Table + !! \htmlinclude pumas_pre_main_init.html + subroutine pumas_pre_main_init(spat_vary_accre_enhan_in, errmsg, errcode) + + + real(kind_phys), dimension (:,:) , intent(out) :: spat_vary_accre_enhan_in + character(len=512), intent(out) :: errmsg + integer, intent(out) :: errcode + + errmsg = ' ' + errcode = 0 + + ! Inside CAM, the pbuf accre_enhan variable is hardwired to 1. + spat_vary_accre_enhan_in(:,:) = 1._kind_phys + + end subroutine pumas_pre_main_init + +end module pumas_pre_main diff --git a/schemes/pumas/pumas_pre_main.meta b/schemes/pumas/pumas_pre_main.meta new file mode 100644 index 00000000..58be9c2a --- /dev/null +++ b/schemes/pumas/pumas_pre_main.meta @@ -0,0 +1,33 @@ +[ccpp-table-properties] + name = pumas_pre_main + type = scheme + +[ccpp-arg-table] + name = pumas_pre_main_init + type = scheme +[spat_vary_accre_enhan_in] + standard_name = spatial_varying_accretion_enhancement_factor + long_name = spatial varying accretion enhancement factor + units = 1 + dimensions = (horizontal_dimension, vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[ errmsg ] + standard_name = ccpp_error_message + long_name = Error message for error handling in CCPP + units = none + type = character | kind = len=512 + dimensions = () + intent = out +[ errcode ] + standard_name = ccpp_error_code + long_name = Error flag for error handling in CCPP + units = 1 + type = integer + dimensions = () + intent = out + +##################### +#End of metadata file +##################### diff --git a/schemes/pumas/pumas_pre_main_namelist.xml b/schemes/pumas/pumas_pre_main_namelist.xml new file mode 100644 index 00000000..05dd56c1 --- /dev/null +++ b/schemes/pumas/pumas_pre_main_namelist.xml @@ -0,0 +1,610 @@ + + + + + + + + microphys + micro_mg_nl + relative_humidity_threshold_for_ice_nucleation + fraction + real + kind_phys + relative humidity threshold parameter for nucleating ice for PUMAS microphysics + + + 0 + + + + + microphys + micro_mg_nl + do_hail_instead_of_graupel + flag + logical + flag for hail for PUMAS microphysics (graupel possible if false) + + + .false. + + + + + microphys + micro_mg_nl + do_graupel_instead_of_hail + flag + logical + flag for graupel for PUMAS microphysics (hail possible if false) + + + .false. + + + + + microphys + micro_mg_nl + do_uniform_subcolumns + flag + logical + flag for uniform subcolumns for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + do_cloud_ice_processes + flag + logical + do cloud ice processes for PUMAS microphysics (skip all cloud ice processes if false) + + + .false. + + + + + microphys + micro_mg_nl + number_of_microphysics_substeps + count + integer + number of substeps for the microphysics + + + 1 + + + + + microphys + micro_mg_nl + do_heterogeneous_ice_nucleation + flag + logical + flag for heterogeneous freezing for MG microphysics + + + .false. + + + + + microphys + micro_mg_nl + remove_supersaturation_after_sedimentation + flag + logical + Remove supersaturation after sedimentation in PUMAS? + + + .false. + + + + + microphys + micro_mg_nl + turn_off_evaporation_of_precipitation + flag + logical + true means sedimenting condensate does not evaporate for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + remove_relative_humidity_threshold_for_ice_nucleation + flag + logical + If .true., remove RH threshold from ice nucelation calculation for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_meyers_ice_nucleation + flag + logical + use temperature dependent ice nucleation from Meyers 1992 for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + scale_evaporation_like_ecmwf_integrated_forecast_system + flag + logical + if True Apply 0.3 scaling factor to evaporation of precipitation for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_ecmwf_integrated_forecasting_system_relative_humidity_evaporation_threshold + flag + logical + Do not evaporate precipitation until RH below 90% in PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + freeze_rain_at_0C + flag + logical + Freeze rain at 0C for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + do_constant_sedimentation_fall_speed + flag + logical + Use constant sedimentation fall speed for all species in PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + do_precipitation_fall_speed_correction + flag + logical + ensure non-zero precipitation fallspeed for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + accretion_sees_autoconverted_condensate + flag + logical + KK200 accretion sees newely formed rain for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + do_implicit_fall_speed_calc + flag + logical + use implicit calculation for fall speed for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_prescribed_cloud_droplet_number_concentration + flag + logical + flag for constant droplet concentration for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_prescribed_cloud_ice_number_concentration + flag + logical + flag for constant ice concentration for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_prescribed_graupel_number_concentration + flag + logical + flag for constant graupel concentration for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_prescribed_rain_number_concentration + flag + logical + flag for constant rain concentration for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + use_prescribed_snow_number_concentration + flag + logical + flag for constant snow concentration for PUMAS microphysics + + + .false. + + + + + microphys + micro_mg_nl + control_for_precipitation_area_fraction_method + none + char*256 + type of precip fraction method for MG microphysics (in_cloud or max_overlap) + + + " " + + + + + microphys + micro_mg_nl + control_for_warm_rain_method + none + char*256 + warm rain method (KK2000,sb2001,tau,emulated) + + + " " + + + + + microphys + micro_mg_nl + filename_of_emulated_stochastic_collection_quantiles + none + char*256 + emulated stochastic collection filename for quantiles + + + " " + + + + + microphys + micro_mg_nl + filename_of_emulated_stochastic_collection_input_scalings + none + char*256 + emulated stochastic collection filename for input scaling + + + " " + + + + + microphys + micro_mg_nl + filename_of_emulated_stochastic_collection_output_scalings + none + char*256 + emulated stochastic collection filename for output scaling + + + " " + + + + + microphys + micro_mg_nl + autoconversion_to_snow_size_threshold + um + real + kind_phys + autoconversion size threshold for cloud ice to snow for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + bergeron_findeisen_process_efficiency_factor + 1 + real + kind_phys + bergeron efficiency factor for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + microphysics_accretion_enhancement_factor + 1 + real + kind_phys + KK2000 accretion enhancement factor for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + autconversion_enhancement_factor + 1 + real + kind_phys + KK2000 autonconverion enhancement factor for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + autconversion_nd_exponent + 1 + real + kind_phys + KK2000 autonconverion nd exponent in MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + autconversion_lwp_exponent + 1 + real + kind_phys + KK2000 autonconverion lwp (qc) exponent in MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + homogeneous_freezing_radius + m + real + kind_phys + radius of drops homogeneously frozen in MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + scaling_factor_for_ice_fall_speed + 1 + real + kind_phys + scaling factor for cloud ice fall speed in MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + scaling_factor_for_snow_fall_speed + 1 + real + kind_phys + scaling factor for snow fall speed in MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + scaling_factor_for_ice_in_radiation + 1 + real + kind_phys + scaling factor for ice effective radition used by radiation + + + 0 + + + + + microphys + micro_mg_nl + scaling_factor_for_ice_accretion + 1 + real + kind_phys + scaling factor for ice accretion in MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + maximum_ice_number_concentration + m-3 + real + kind_phys + maximum allowed ice number concentration for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + prescribed_cloud_droplet_number_concentration + m-3 + real + kind_phys + droplet concentration constant for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + prescribed_cloud_ice_number_concentration + m-3 + real + kind_phys + ice concentration constant for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + prescribed_graupel_number_concentration + m-3 + real + kind_phys + graupel concentration constant for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + prescribed_rain_number_concentration + m-3 + real + kind_phys + rain concentration constant for MG microphysics + + + 0 + + + + + microphys + micro_mg_nl + prescribed_snow_number_concentration + m-3 + real + kind_phys + snow concentration constant for MG microphysics + + + 0 + + + + diff --git a/schemes/sima_diagnostics/pumas_diagnostics.F90 b/schemes/sima_diagnostics/pumas_diagnostics.F90 new file mode 100644 index 00000000..7e587f76 --- /dev/null +++ b/schemes/sima_diagnostics/pumas_diagnostics.F90 @@ -0,0 +1,399 @@ +!REVIEWERS - This is a work in progress. Please save reviews until a future PR + +!CACNOTE - All outfld calls to history_out_field are converted +! - All history_add_field calls are done +! - Except the constituent history_add_field needs to be changed - see CACNOTE +! - Need to replace "#" in units? +! - need to line up calls +!!!!---------------------------------------------- + +module pumas_diagnostics + + use ccpp_kinds, only: kind_phys + + implicit none + private + save + + public :: pumas_diagnostics_init ! init routine + +CONTAINS + +!> \section arg_table_pumas_diagnostics_init Argument Table +!! \htmlinclude pumas_diagnostics_init.html +subroutine pumas_diagnostics_init(qprops, ncnst, errmsg, errflg) + + use cam_history, only: history_add_field + use cam_history_support, only: horiz_only + + type(ccpp_constituent_prop_ptr_t), intent(in) :: qprops(:) + integer, intent(in) :: ncnst ! number of tracers to transport + + character(len=512), intent(out) :: errmsg + integer, intent(out) :: errflg + + ! Local variables: + + errmsg = '' + errflg = 0 + + ! NOTE -subcyc comments below mean that the original CAM code had "sampled_on_subcycle=.true." in the old outfld call + ! Will use this for guidance during future developmen + +!CACNOTE - come back to this - did not convert get the constituent info yet +!-------------------- +! do m = 1, ncnst +! call cnst_get_ind(cnst_names(m), mm) +! if ( any(mm == (/ ixcldliq, ixcldice, ixrain, ixsnow, ixgraupel /)) ) then +! mass mixing ratios +! call history_add_field(cnst_name(mm), cnst_longname(mm), 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(sflxnam(mm), trim(cnst_name(mm))//' surface flux', horiz_only, 'avg', 'kg m-2 s-1') !subcyc +! else if ( any(mm == (/ ixnumliq, ixnumice, ixnumrain, ixnumsnow, ixnumgraupel /)) ) then +! ! number concentrations +! call history_add_field(cnst_name(mm), cnst_longname(mm), 'lev', 'avg', 'kg-1') !subcyc +! call history_add_field(sflxnam(mm), trim(cnst_name(mm))//' surface flux', horiz_only, 'avg', '1 m-2 s-1') !subcyc +! else +! call endrun( "micro_pumas_cam_init: & +! &Could not call history_add_field for constituent with unknown units.") +! endif +! end do + +! call history_add_field(apcnst(ixcldliq), trim(cnst_name(ixcldliq))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(apcnst(ixcldice), trim(cnst_name(ixcldice))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(bpcnst(ixcldliq), trim(cnst_name(ixcldliq))//' before physics','lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(bpcnst(ixcldice), trim(cnst_name(ixcldice))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + +! call history_add_field(apcnst(ixrain), trim(cnst_name(ixrain))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(apcnst(ixsnow), trim(cnst_name(ixsnow))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(bpcnst(ixrain), trim(cnst_name(ixrain))//' before physics','lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(bpcnst(ixsnow), trim(cnst_name(ixsnow))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + +! if (micro_mg_version > 2) then +! call history_add_field(apcnst(ixgraupel), trim(cnst_name(ixgraupel))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(bpcnst(ixgraupel), trim(cnst_name(ixgraupel))//' before physics','lev', 'avg', 'kg kg-1') !subcyc +! end if + +!-------------------- + + call history_add_field ('CME', 'Rate of cond-evap within the cloud', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRODPREC', 'Rate of conversion of condensate to precip','lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('EVAPPREC', 'Rate of evaporation of falling precip', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('EVAPSNOW', 'Rate of evaporation of falling snow', 'trop_cld_lev','avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('HPROGCLD', 'Heating from prognostic clouds', 'lev', 'avg', 'W kg-1' ) !subcyc + call history_add_field ('FICE', 'Fractional ice content within cloud', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('CLDFSNOW', 'Cloud fraction adjusted for snow', 'lev', 'avg', '1' ) !subcyc + call history_add_field ('ICWMRST', 'Prognostic in-stratus water mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('ICIMRST', 'Prognostic in-stratus ice mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + + ! MG microphysics diagnostics + call history_add_field ('QCSEVAP', 'Rate of evaporation of falling cloud water', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QISEVAP', 'Rate of sublimation of falling cloud ice', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QVRES', 'Rate of residual condensation term', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('CMEIOUT', 'Rate of deposition/sublimation of cloud ice', 'trop_cld_lev', 'avg', 'kg kg-1/s') !subcyc + call history_add_field ('VTRMC', 'Mass-weighted cloud water fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + call history_add_field ('VTRMI', 'Mass-weighted cloud ice fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + + call history_add_field ('QCSEDTEN','Cloud water mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('QISEDTEN','Cloud ice mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + + call history_add_field ('PRAO', 'Accretion of cloud water by rain', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRCO', 'Autoconversion of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCCO', 'Immersion freezing of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCTO', 'Contact freezing of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + + call history_add_field ('MNUCCDO', 'Homogeneous and heterogeneous nucleation from vapor', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + + call history_add_field ('MNUCCDOhet', 'Heterogeneous nucleation from vapor', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MSACWIO', 'Conversion of cloud water from rime-splintering', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PSACWSO', 'Accretion of cloud water by snow', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('BERGSO', 'Conversion of cloud water to snow from bergeron', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('BERGO', 'Conversion of cloud water to cloud ice from bergeron','lev', 'avg', 'kg kg-1 s-1') !subcyc + + call history_add_field ('MELTO', 'Melting of cloud ice', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MELTSTOT', 'Melting of snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUDEPO', 'Deposition Nucleation', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('HOMOO', 'Homogeneous freezing of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QCRESO', 'Residual condensation term for cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRCIO', 'Autoconversion of cloud ice to snow', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRAIO', 'Accretion of cloud ice to snow', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QIRESO', 'Residual deposition term for cloud ice', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCRO', 'Heterogeneous freezing of rain to snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCRIO', 'Heterogeneous freezing of rain to ice', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRACSO', 'Accretion of rain by snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('VAPDEPSO', 'Vapor deposition onto snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MELTSDT', 'Latent heating rate due to melting of snow', 'trop_cld_lev', 'avg', 'W kg-1') !subcyc + + call history_add_field ('FRZRDT', 'Latent heating rate due to homogeneous freezing of rain', 'trop_cld_lev', 'avg', & + 'W kg-1') !subcyc + call history_add_field ('QRSEDTEN', 'Rain mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('QSSEDTEN', 'Snow mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('NNUCCCO', 'Number Tendency due to Immersion freezing of cloud water', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCTO', 'Number Tendency due to Contact freezing of cloud water', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCDO', 'Number Tendency due to Ice nucleation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUDEPO', 'Number Tendency due to Deposition Nucleation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NHOMO', 'Number Tendency due to Homogeneous freezing of cloud water', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCRO', 'Number Tendency due to heterogeneous freezing of rain to snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCRIO', 'Number Tendency due to Heterogeneous freezing of rain to ice', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NSACWIO', 'Number Tendency due to Ice Multiplication- Rime-splintering', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRAO', 'Number Tendency due to Accretion of cloud water by rain', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPSACWSO', 'Number Tendency due to Accretion of cloud water by snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRAIO', 'Number Tendency due to Accretion of cloud ice to snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRACSO', 'Number Tendency due to Accretion of rain by snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRCO', 'Number Tendency due to Autoconversion of cloud water [to rain]','trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRCIO', 'Number Tendency due to Autoconversion of cloud ice to snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NCSEDTEN', 'Number Tendency due to cloud liquid sedimentation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NISEDTEN', 'Number Tendency due to cloud ice sedimentation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + + call history_add_field ('NRSEDTEN', 'Number Tendency due to rain sedimentation', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NSSEDTEN', 'Number Tendency due to snow sedimentation', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMELTO', 'Number Tendency due to Melting of cloud ice', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMELTS', 'Number Tendency due to Melting of snow', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + +! CACNOTE +! if (trim(micro_mg_warm_rain) == 'kk2000') then + call history_add_field ('qctend_KK2000', 'cloud liquid mass tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nctend_KK2000', 'cloud number mass tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('qrtend_KK2000', 'rain mass tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nrtend_KK2000', 'rain number tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc +! end if + +! CACNOTE +! if (trim(micro_mg_warm_rain) == 'sb2001') then + call history_add_field ('qctend_SB2001', 'cloud liquid mass tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nctend_SB2001', 'cloud liquid number tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('qrtend_SB2001', 'rain mass tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nrtend_SB2001', 'rain number tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc +! end if + + call history_add_field ('LAMC', 'Size distribution parameter lambda for liquid', 'trop_cld_lev', 'avg', 'unitless') !subcyc + call history_add_field ('LAMR', 'Size distribution parameter lambda for rain', 'trop_cld_lev', 'avg', 'unitless') !subcyc + call history_add_field ('PGAM', 'Size distribution parameter mu (pgam) for liquid', 'trop_cld_lev', 'avg', 'unitless') !subcyc + call history_add_field ('N0R', 'Size distribution parameter n0 for rain', 'trop_cld_lev', 'avg', 'unitless') !subcyc + +! CACNOTE +! if (micro_mg_version > 2) then + call history_add_field ('NMELTG', 'Number Tendency due to Melting of graupel', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NGSEDTEN', 'Number Tendency due to graupel sedimentation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('PSACRO', 'Collisions between rain & snow (Graupel collecting snow)', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PRACGO', 'Change in q collection rain by graupel', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PSACWGO', 'Change in q collection droplets by graupel', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PGSACWO', 'Q conversion to graupel due to collection droplets by snow','lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PGRACSO', 'Q conversion to graupel due to collection rain by snow', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + + call history_add_field ('PRDGO', 'Deposition of graupel', 'lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QMULTGO', 'Q change due to ice mult droplets/graupel', 'lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QMULTRGO', 'Q change due to ice mult rain/graupel', 'lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QGSEDTEN', 'Graupel/Hail mixing ratio tendency from sedimentation', 'trop_cld_lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('NPRACGO', 'Change N collection rain by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NSCNGO', 'Change N conversion to graupel due to collection droplets by snow','lev', & + 'avg', '# kg-1 s-1' ) !subcyc + call history_add_field ('NGRACSO', 'Change N conversion to graupel due to collection rain by snow', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMULTGO', 'Ice mult due to acc droplets by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMULTRGO', 'Ice mult due to acc rain by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NPSACWGO', 'Change N collection droplets by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('CLDFGRAU', 'Cloud fraction adjusted for graupel', 'lev', & + 'avg', '1') !subcyc + call history_add_field ('MELTGTOT', 'Melting of graupel', 'trop_cld_lev', & + 'avg', 'kg kg-1 s-1') !subcyc +! end if + + + call history_add_field ('RBFRAC', 'Fraction of sky covered by a potential rainbow', horiz_only, 'avg', 'Fraction') !subcyc + call history_add_field ('RBFREQ', 'Potential rainbow frequency', horiz_only, 'avg', 'Frequency') !subcyc + call history_add_field( 'rbSZA', 'solar zenith angle', horiz_only, 'inst', 'degrees') !subcyc + + ! History variables for CAM5 microphysics + call history_add_field ('MPDT', 'Heating tendency - Morrison microphysics', 'lev', 'avg', 'W kg-1') !subcyc + call history_add_field ('MPDQ', 'Q tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDLIQ', 'CLDLIQ tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDICE', 'CLDICE tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDNLIQ', 'NUMLIQ tendency - Morrison microphysics', 'lev', 'avg', 'kg-1 s-1') !subcyc + call history_add_field ('MPDNICE', 'NUMICE tendency - Morrison microphysics', 'lev', 'avg', 'kg-1 s-1') !subcyc + call history_add_field ('MPDW2V', 'Water <--> Vapor tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDW2I', 'Water <--> Ice tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDW2P', 'Water <--> Precip tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDI2V', 'Ice <--> Vapor tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDI2W', 'Ice <--> Water tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDI2P', 'Ice <--> Precip tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('ICWNC', 'Prognostic in-cloud water number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('ICINC', 'Prognostic in-cloud ice number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('EFFLIQ_IND','Prognostic droplet effective radius (indirect effect)','lev', 'avg','Micron') !subcyc + + call history_add_field ('CDNUMC', 'Vertically-integrated droplet concentration', horiz_only, 'avg', & + '1 m-2') !subcyc + call history_add_field ('MPICLWPI', 'Vertically-integrated in-cloud Initial Liquid WP (Before Micro)', horiz_only, 'avg', & + 'kg m-2') !subcyc + call history_add_field ('MPICIWPI', 'Vertically-integrated in-cloud Initial Ice WP (Before Micro)', horiz_only, 'avg', & + 'kg m-2') !subcyc + + + ! This is only if the coldpoint temperatures are being adjusted. + ! NOTE: Some fields related to these and output later are added in tropopause.F90. +!CACNOTE +! if (micro_mg_adjust_cpt) then + call history_add_field ('TROPF_TADJ', 'Temperatures after cold point adjustment', 'lev', 'avg', 'K') !subcyc + call history_add_field ('TROPF_RHADJ','Relative Hunidity after cold point adjustment', 'lev', 'avg', 'K') !subcyc + call history_add_field ('TROPF_CDT', 'Cold point temperature adjustment', horiz_only, 'avg', 'K') !subcyc + call history_add_field ('TROPF_CDZ', 'Distance of coldpoint from coldest model level', horiz_only, 'avg', 'm') !subcyc +! end if + + + ! Averaging for cloud particle number and size + call history_add_field ('AWNC', 'Average cloud water number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('AWNI', 'Average cloud ice number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('AREL', 'Average droplet effective radius', 'lev', 'avg', 'Micron') !subcyc + call history_add_field ('AREI', 'Average ice effective radius', 'lev', 'avg', 'Micron') !subcyc + ! Frequency arrays for above + call history_add_field ('FREQL', 'Fractional occurrence of liquid', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQI', 'Fractional occurrence of ice', 'lev', 'avg', 'fraction') !subcyc + + + ! Average cloud top particle size and number (liq, ice) and frequency + call history_add_field ('ACTREL', 'Average Cloud Top droplet effective radius', horiz_only, 'avg', 'Micron') !subcyc + call history_add_field ('ACTREI', 'Average Cloud Top ice effective radius', horiz_only, 'avg', 'Micron') !subcyc + call history_add_field ('ACTNL', 'Average Cloud Top droplet number', horiz_only, 'avg', 'm-3') !subcyc + call history_add_field ('ACTNI', 'Average Cloud Top ice number', horiz_only, 'avg', 'm-3') !subcyc + + call history_add_field ('FCTL', 'Fractional occurrence of cloud top liquid', horiz_only, 'avg', 'fraction') !subcyc + call history_add_field ('FCTI', 'Fractional occurrence of cloud top ice', horiz_only, 'avg', 'fraction') !subcyc + + ! New frequency arrays for mixed phase and supercooled liquid (only and mixed) for (a) Cloud Top and (b) everywhere.. + call history_add_field ('FREQM', 'Fractional occurrence of mixed phase', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQSL', 'Fractional occurrence of only supercooled liquid', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQSLM', 'Fractional occurrence of super cooled liquid with ice','lev', 'avg', 'fraction') !subcyc + + call history_add_field ('FCTM', 'Fractional occurrence of cloud top mixed phase', horiz_only, 'avg', & + 'fraction') !subcyc + call history_add_field ('FCTSL', 'Fractional occurrence of cloud top only supercooled liquid', horiz_only, 'avg', & + 'fraction') !subcyc + call history_add_field ('FCTSLM', 'Fractional occurrence of cloud top super cooled liquid with ice',horiz_only, 'avg', & + 'fraction') !subcyc + + call history_add_field ('LS_FLXPRC', 'ls stratiform gbm interface rain+snow flux', 'ilev', 'avg', 'kg m-2 s-1') !subcyc + call history_add_field ('LS_FLXSNW', 'ls stratiform gbm interface snow flux', 'ilev', 'avg', 'kg m-2 s-1') !subcyc + + call history_add_field ('REL', 'MG REL stratiform cloud effective radius liquid', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('REI', 'MG REI stratiform cloud effective radius ice', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('LS_REFFRAIN', 'ls stratiform rain effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('LS_REFFSNOW','ls stratiform snow effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('CV_REFFLIQ', 'convective cloud liq effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('CV_REFFICE', 'convective cloud ice effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('MG_SADICE', 'MG surface area density ice', 'lev', 'avg', 'cm2 cm-3') !subcyc + call history_add_field ('MG_SADSNOW', 'MG surface area density snow', 'lev', 'avg', 'cm2 cm-3') !subcyc + + ! diagnostic precip + call history_add_field ('QRAIN', 'Diagnostic grid-mean rain mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('QSNOW', 'Diagnostic grid-mean snow mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('NRAIN', 'Diagnostic grid-mean rain number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('NSNOW', 'Diagnostic grid-mean snow number conc', 'lev', 'avg', 'm-3') !subcyc + + ! size of precip + call history_add_field ('RERCLD', 'Diagnostic effective radius of Liquid Cloud and Rain', 'lev', 'avg', 'm') !subcyc + call history_add_field ('DSNOW', 'Diagnostic grid-mean snow diameter', 'lev', 'avg', 'm') !subcyc + + ! diagnostic radar reflectivity, cloud-averaged + call history_add_field ('REFL', '94 GHz radar reflectivity', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('AREFL', 'Average 94 GHz radar reflectivity', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('FREFL', 'Fractional occurrence of radar reflectivity', 'lev', 'avg', 'fraction') !subcyc + + call history_add_field ('CSRFL', '94 GHz radar reflectivity (CloudSat thresholds)', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('ACSRFL', 'Average 94 GHz radar reflectivity (CloudSat thresholds)', 'lev', 'avg', 'DBz') !subcyc + + call history_add_field ('FCSRFL', 'Fractional occurrence of radar reflectivity (CloudSat thresholds)', 'lev', 'avg', & + 'fraction') !subcyc + + call history_add_field ('AREFLZ', 'Average 94 GHz radar reflectivity', 'lev', 'avg', 'mm6 m-3') !subcyc + + ! 10cm (rain) radar reflectivity + call history_add_field ('REFL10CM', '10cm (Rain) radar reflectivity (Dbz)', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('REFLZ10CM', '10cm (Rain) radar reflectivity (Z units)', 'lev', 'avg', 'mm6 m-3') !subcyc + + ! Aerosol information + call history_add_field ('NCAL', 'Number Concentation Activated for Liquid', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('NCAI', 'Number Concentation Activated for Ice', 'lev', 'avg', 'm-3') !subcyc + + ! Average rain and snow mixing ratio (Q), number (N) and diameter (D), with frequency + call history_add_field ('AQRAIN', 'Average rain mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('AQSNOW', 'Average snow mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('ANRAIN', 'Average rain number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('ANSNOW', 'Average snow number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('ADRAIN', 'Average rain effective Diameter', 'lev', 'avg', 'm') !subcyc + call history_add_field ('ADSNOW', 'Average snow effective Diameter', 'lev', 'avg', 'm') !subcyc + call history_add_field ('FREQR', 'Fractional occurrence of rain', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQS', 'Fractional occurrence of snow', 'lev', 'avg', 'fraction') !subcyc + + ! precipitation efficiency & other diagnostic fields + call history_add_field('PE' , 'Stratiform Precipitation Efficiency (precip/cmeliq)', horiz_only, 'avg', & + '1') !subcyc + call history_add_field('APRL' , 'Average Stratiform Precip Rate over efficiency calculation', horiz_only, 'avg', & + 'm s-1') !subcyc + + call history_add_field('PEFRAC', 'Fraction of timesteps precip efficiency reported', horiz_only, 'avg', '1') !subcyc + call history_add_field('VPRCO' , 'Vertical average of autoconversion rate', horiz_only, 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field('VPRAO' , 'Vertical average of accretion rate', horiz_only, 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field('RACAU' , 'Accretion/autoconversion ratio from vertical average',horiz_only, 'avg', 'kg kg-1 s-1') !subcyc + + call history_add_field('UMR','Mass-weighted rain fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + +! CACNOTE +! if (micro_mg_version > 2) then + call history_add_field('UMG', 'Mass-weighted graupel/hail fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + call history_add_field('FREQG', 'Fractional occurrence of Graupel', 'lev', 'avg', 'fraction') !subcyc + call history_add_field('LS_REFFGRAU','ls stratiform graupel/hail effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field('AQGRAU', 'Average graupel/hail mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field('ANGRAU', 'Average graupel/hail number conc', 'lev', 'avg', 'm-3') !subcyc +! end if + + + ! qc limiter (only output in versions 1.5 and later) + call history_add_field('QCRAT', 'Qc Limiter: Fraction of qc tendency applied', 'lev', 'avg', 'fraction') !subcyc + +end subroutine pumas_diagnostics_init + + +end module pumas_diagnostics diff --git a/schemes/sima_diagnostics/pumas_diagnostics.F90-keep_for_run b/schemes/sima_diagnostics/pumas_diagnostics.F90-keep_for_run new file mode 100644 index 00000000..92a661a3 --- /dev/null +++ b/schemes/sima_diagnostics/pumas_diagnostics.F90-keep_for_run @@ -0,0 +1,2150 @@ +REVIEWERS - This is a work in progress. Please save reviews until a future PR + +!CACNOTE - All outfld calls to history_out_field are converted + - All history_add_field calls are done + - Except the constituent history_add_field needs to be changed - see CACNOTE + - Need to replace "#" in units? + - need to line up calls +!!!---------------------------------------------- + +module pumas_diagnostics + + use ccpp_kinds, only: kind_phys + + implicit none + private + save + + public :: pumas_diagnostics_init ! init routine +! public :: pumas_diagnostics_run ! main routine + +CONTAINS + +!> \section arg_table_pumas_diagnostics_init Argument Table +!! \htmlinclude pumas_diagnostics_init.html +subroutine pumas_diagnostics_init(errmsg, errflg) + + use cam_history, only: history_add_field + use cam_history_support, only: horiz_only + + character(len=512), intent(out) :: errmsg + integer, intent(out) :: errflg + + ! Local variables: + + errmsg = '' + errflg = 0 + + ! NOTE -subcyc comments below mean that the original CAM code had "sampled_on_subcycle=.true." in the old outfld call + ! Will use this for guidance during future developmen + +!CACNOTE - come back to this - did not convert get the constituent info yet + +! do m = 1, ncnst +! call cnst_get_ind(cnst_names(m), mm) +! if ( any(mm == (/ ixcldliq, ixcldice, ixrain, ixsnow, ixgraupel /)) ) then +! mass mixing ratios +! call history_add_field(cnst_name(mm), cnst_longname(mm), 'lev', 'avg', 'kg kg-1') !subcyc +! call history_add_field(sflxnam(mm), trim(cnst_name(mm))//' surface flux', horiz_only, 'avg', 'kg m-2 s-1') !subcyc +! else if ( any(mm == (/ ixnumliq, ixnumice, ixnumrain, ixnumsnow, ixnumgraupel /)) ) then +! ! number concentrations +! call history_add_field(cnst_name(mm), cnst_longname(mm), 'lev', 'avg', 'kg-1') !subcyc +! call history_add_field(sflxnam(mm), trim(cnst_name(mm))//' surface flux', horiz_only, 'avg', '1 m-2 s-1') !subcyc +! else +! call endrun( "micro_pumas_cam_init: & +! &Could not call history_add_field for constituent with unknown units.") +! endif +! end do + + call history_add_field(apcnst(ixcldliq), trim(cnst_name(ixcldliq))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(apcnst(ixcldice), trim(cnst_name(ixcldice))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(bpcnst(ixcldliq), trim(cnst_name(ixcldliq))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(bpcnst(ixcldice), trim(cnst_name(ixcldice))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + + call history_add_field(apcnst(ixrain), trim(cnst_name(ixrain))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(apcnst(ixsnow), trim(cnst_name(ixsnow))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(bpcnst(ixrain), trim(cnst_name(ixrain))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(bpcnst(ixsnow), trim(cnst_name(ixsnow))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + + if (micro_mg_version > 2) then + call history_add_field(apcnst(ixgraupel), trim(cnst_name(ixgraupel))//' after physics', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field(bpcnst(ixgraupel), trim(cnst_name(ixgraupel))//' before physics','lev', 'avg', 'kg kg-1') !subcyc + end if + + call history_add_field ('CME', 'Rate of cond-evap within the cloud', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRODPREC', 'Rate of conversion of condensate to precip','lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('EVAPPREC', 'Rate of evaporation of falling precip', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('EVAPSNOW', 'Rate of evaporation of falling snow', 'trop_cld_lev','avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('HPROGCLD', 'Heating from prognostic clouds', 'lev', 'avg', 'W kg-1' ) !subcyc + call history_add_field ('FICE', 'Fractional ice content within cloud', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('CLDFSNOW', 'Cloud fraction adjusted for snow', 'lev', 'avg', '1' ) !subcyc + call history_add_field ('ICWMRST', 'Prognostic in-stratus water mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('ICIMRST', 'Prognostic in-stratus ice mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + + ! MG microphysics diagnostics + call history_add_field ('QCSEVAP', 'Rate of evaporation of falling cloud water', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QISEVAP', 'Rate of sublimation of falling cloud ice', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QVRES', 'Rate of residual condensation term', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('CMEIOUT', 'Rate of deposition/sublimation of cloud ice', 'trop_cld_lev', 'avg', 'kg kg-1/s') !subcyc + call history_add_field ('VTRMC', 'Mass-weighted cloud water fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + call history_add_field ('VTRMI', 'Mass-weighted cloud ice fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + + call history_add_field ('QCSEDTEN','Cloud water mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('QISEDTEN','Cloud ice mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + + call history_add_field ('PRAO', 'Accretion of cloud water by rain', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRCO', 'Autoconversion of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCCO', 'Immersion freezing of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCTO', 'Contact freezing of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + + call history_add_field ('MNUCCDO', 'Homogeneous and heterogeneous nucleation from vapor', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + + call history_add_field ('MNUCCDOhet', 'Heterogeneous nucleation from vapor', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MSACWIO', 'Conversion of cloud water from rime-splintering', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PSACWSO', 'Accretion of cloud water by snow', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('BERGSO', 'Conversion of cloud water to snow from bergeron', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('BERGO', 'Conversion of cloud water to cloud ice from bergeron','lev', 'avg', 'kg kg-1 s-1') !subcyc + + call history_add_field ('MELTO', 'Melting of cloud ice', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MELTSTOT', 'Melting of snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUDEPO', 'Deposition Nucleation', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('HOMOO', 'Homogeneous freezing of cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QCRESO', 'Residual condensation term for cloud water', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRCIO', 'Autoconversion of cloud ice to snow', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRAIO', 'Accretion of cloud ice to snow', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QIRESO', 'Residual deposition term for cloud ice', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCRO', 'Heterogeneous freezing of rain to snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MNUCCRIO', 'Heterogeneous freezing of rain to ice', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('PRACSO', 'Accretion of rain by snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('VAPDEPSO', 'Vapor deposition onto snow', 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MELTSDT', 'Latent heating rate due to melting of snow', 'trop_cld_lev', 'avg', 'W kg-1') !subcyc + + call history_add_field ('FRZRDT', 'Latent heating rate due to homogeneous freezing of rain', 'trop_cld_lev', 'avg', & + 'W kg-1') !subcyc + call history_add_field ('QRSEDTEN', 'Rain mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('QSSEDTEN', 'Snow mixing ratio tendency from sedimentation', 'trop_cld_lev', 'avg', & + 'kg kg-1 s-1'' !subcyc + call history_add_field ('NNUCCCO', 'Number Tendency due to Immersion freezing of cloud water', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCTO', 'Number Tendency due to Contact freezing of cloud water', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCDO', 'Number Tendency due to Ice nucleation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1'') !subcyc + call history_add_field ('NNUDEPO', 'Number Tendency due to Deposition Nucleation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NHOMO', 'Number Tendency due to Homogeneous freezing of cloud water', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCRO', 'Number Tendency due to heterogeneous freezing of rain to snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NNUCCRIO', 'Number Tendency due to Heterogeneous freezing of rain to ice', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NSACWIO', 'Number Tendency due to Ice Multiplication- Rime-splintering', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRAO', 'Number Tendency due to Accretion of cloud water by rain', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPSACWSO', 'Number Tendency due to Accretion of cloud water by snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRAIO', 'Number Tendency due to Accretion of cloud ice to snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRACSO', 'Number Tendency due to Accretion of rain by snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRCO', 'Number Tendency due to Autoconversion of cloud water [to rain]','trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NPRCIO', 'Number Tendency due to Autoconversion of cloud ice to snow', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NCSEDTEN', 'Number Tendency due to cloud liquid sedimentation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NISEDTEN', 'Number Tendency due to cloud ice sedimentation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + + call history_add_field ('NRSEDTEN', 'Number Tendency due to rain sedimentation', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NSSEDTEN', 'Number Tendency due to snow sedimentation', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMELTO', 'Number Tendency due to Melting of cloud ice', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMELTS', 'Number Tendency due to Melting of snow', 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + + if (trim(micro_mg_warm_rain) == 'kk2000') then + call history_add_field ('qctend_KK2000', 'cloud liquid mass tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nctend_KK2000', 'cloud number mass tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('qrtend_KK2000', 'rain mass tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nrtend_KK2000', 'rain number tendency due to autoconversion accretion from KK2000', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + end if + + if (trim(micro_mg_warm_rain) == 'sb2001') then + call history_add_field ('qctend_SB2001', 'cloud liquid mass tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nctend_SB2001', 'cloud liquid number tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('qrtend_SB2001', 'rain mass tendency due to autoconversion accretion from SB2001'), & + 'trop_cld_lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('nrtend_SB2001', 'rain number tendency due to autoconversion accretion from SB2001', & + 'trop_cld_lev', 'avg', '# kg-1 s-1') !subcyc + end if + + call history_add_field ('LAMC', 'Size distribution parameter lambda for liquid', 'trop_cld_lev', 'avg', 'unitless') !subcyc + call history_add_field ('LAMR', 'Size distribution parameter lambda for rain', 'trop_cld_lev', 'avg', 'unitless') !subcyc + call history_add_field ('PGAM', 'Size distribution parameter mu (pgam) for liquid', 'trop_cld_lev', 'avg', 'unitless') !subcyc + call history_add_field ('N0R', 'Size distribution parameter n0 for rain', 'trop_cld_lev', 'avg', 'unitless') !subcyc + + if (micro_mg_version > 2) then + call history_add_field ('NMELTG', 'Number Tendency due to Melting of graupel', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('NGSEDTEN', 'Number Tendency due to graupel sedimentation', 'trop_cld_lev', 'avg', & + '# kg-1 s-1') !subcyc + call history_add_field ('PSACRO', 'Collisions between rain & snow (Graupel collecting snow)', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PRACGO', 'Change in q collection rain by graupel', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PSACWGO', 'Change in q collection droplets by graupel', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PGSACWO', 'Q conversion to graupel due to collection droplets by snow','lev', 'avg', & + 'kg kg-1 s-1') !subcyc + call history_add_field ('PGRACSO', 'Q conversion to graupel due to collection rain by snow', 'lev', 'avg', & + 'kg kg-1 s-1') !subcyc + + call history_add_field ('PRDGO', 'Deposition of graupel', 'lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QMULTGO', 'Q change due to ice mult droplets/graupel', 'lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QMULTRGO', 'Q change due to ice mult rain/graupel', 'lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('QGSEDTEN', 'Graupel/Hail mixing ratio tendency from sedimentation', 'trop_cld_lev', & + 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('NPRACGO', 'Change N collection rain by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NSCNGO', 'Change N conversion to graupel due to collection droplets by snow','lev', & + 'avg', '# kg-1 s-1' ) !subcyc + call history_add_field ('NGRACSO', 'Change N conversion to graupel due to collection rain by snow', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMULTGO', 'Ice mult due to acc droplets by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NMULTRGO', 'Ice mult due to acc rain by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('NPSACWGO', 'Change N collection droplets by graupel', 'lev', & + 'avg', '# kg-1 s-1') !subcyc + call history_add_field ('CLDFGRAU', 'Cloud fraction adjusted for graupel', 'lev', & + 'avg', '1') !subcyc + call history_add_field ('MELTGTOT', 'Melting of graupel', 'trop_cld_lev', & + 'avg', 'kg kg-1 s-1') !subcyc + end if + + + call history_add_field ('RBFRAC', 'Fraction of sky covered by a potential rainbow', horiz_only, 'avg', 'Fraction') !subcyc + call history_add_field ('RBFREQ', 'Potential rainbow frequency', horiz_only, 'avg', 'Frequency') !subcyc + call history_add_field( 'rbSZA', 'solar zenith angle', horiz_only, 'inst', 'degrees') !subcyc + + ! History variables for CAM5 microphysics + call history_add_field ('MPDT', 'Heating tendency - Morrison microphysics', 'lev', 'avg', 'W kg-1') !subcyc + call history_add_field ('MPDQ', 'Q tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDLIQ', 'CLDLIQ tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDICE', 'CLDICE tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDNLIQ', 'NUMLIQ tendency - Morrison microphysics', 'lev', 'avg', 'kg-1 s-1') !subcyc + call history_add_field ('MPDNICE', 'NUMICE tendency - Morrison microphysics'), 'lev', 'avg', 'kg-1 s-1') !subcyc + call history_add_field ('MPDW2V', 'Water <--> Vapor tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDW2I', 'Water <--> Ice tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDW2P', 'Water <--> Precip tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDI2V', 'Ice <--> Vapor tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDI2W', 'Ice <--> Water tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('MPDI2P', 'Ice <--> Precip tendency - Morrison microphysics', 'lev', 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field ('ICWNC', 'Prognostic in-cloud water number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('ICINC', 'Prognostic in-cloud ice number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('EFFLIQ_IND','Prognostic droplet effective radius (indirect effect)','lev', 'avg','Micron') !subcyc + + call history_add_field ('CDNUMC', 'Vertically-integrated droplet concentration', horiz_only, 'avg', & + '1 m-2') !subcyc + call history_add_field ('MPICLWPI', 'Vertically-integrated in-cloud Initial Liquid WP (Before Micro)', horiz_only, 'avg', & + 'kg m-2') !subcyc + call history_add_field ('MPICIWPI', 'Vertically-integrated in-cloud Initial Ice WP (Before Micro)', horiz_only, 'avg', & + 'kg m-2') !subcyc + + + ! This is only if the coldpoint temperatures are being adjusted. + ! NOTE: Some fields related to these and output later are added in tropopause.F90. + if (micro_mg_adjust_cpt) then + call history_add_field ('TROPF_TADJ', 'Temperatures after cold point adjustment', 'lev', 'avg', 'K') !subcyc + call history_add_field ('TROPF_RHADJ','Relative Hunidity after cold point adjustment', 'lev', 'avg', 'K') !subcyc + call history_add_field ('TROPF_CDT', 'Cold point temperature adjustment', horiz_only, 'avg', 'K') !subcyc + call history_add_field ('TROPF_CDZ', 'Distance of coldpoint from coldest model level', horiz_only, 'avg', 'm') !subcyc + end if + + + ! Averaging for cloud particle number and size + call history_add_field ('AWNC', 'Average cloud water number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('AWNI', 'Average cloud ice number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('AREL', 'Average droplet effective radius', 'lev', 'avg', 'Micron') !subcyc + call history_add_field ('AREI', 'Average ice effective radius', 'lev', 'avg', 'Micron') !subcyc + ! Frequency arrays for above + call history_add_field ('FREQL', 'Fractional occurrence of liquid', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQI', 'Fractional occurrence of ice', 'lev', 'avg', 'fraction') !subcyc + + + ! Average cloud top particle size and number (liq, ice) and frequency + call history_add_field ('ACTREL', 'Average Cloud Top droplet effective radius', horiz_only, 'avg', 'Micron') !subcyc + call history_add_field ('ACTREI', 'Average Cloud Top ice effective radius', horiz_only, 'avg', 'Micron') !subcyc + call history_add_field ('ACTNL', 'Average Cloud Top droplet number', horiz_only, 'avg', 'm-3') !subcyc + call history_add_field ('ACTNI', 'Average Cloud Top ice number', horiz_only, 'avg', 'm-3') !subcyc + + call history_add_field ('FCTL', 'Fractional occurrence of cloud top liquid', horiz_only, 'avg', 'fraction') !subcyc + call history_add_field ('FCTI', 'Fractional occurrence of cloud top ice', horiz_only, 'avg', 'fraction') !subcyc + + ! New frequency arrays for mixed phase and supercooled liquid (only and mixed) for (a) Cloud Top and (b) everywhere.. + call history_add_field ('FREQM', 'Fractional occurrence of mixed phase', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQSL', 'Fractional occurrence of only supercooled liquid', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQSLM', 'Fractional occurrence of super cooled liquid with ice','lev', 'avg', 'fraction') !subcyc + + call history_add_field ('FCTM', 'Fractional occurrence of cloud top mixed phase', horiz_only, 'avg', & + 'fraction') !subcyc + call history_add_field ('FCTSL', 'Fractional occurrence of cloud top only supercooled liquid', horiz_only, 'avg', & + 'fraction') !subcyc + call history_add_field ('FCTSLM', 'Fractional occurrence of cloud top super cooled liquid with ice',horiz_only, 'avg', & + 'fraction') !subcyc + + call history_add_field ('LS_FLXPRC', 'ls stratiform gbm interface rain+snow flux', 'ilev', 'avg', 'kg m-2 s-1') !subcyc + call history_add_field ('LS_FLXSNW', 'ls stratiform gbm interface snow flux', 'ilev', 'avg', 'kg m-2 s-1') !subcyc + + call history_add_field ('REL', 'MG REL stratiform cloud effective radius liquid', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('REI', 'MG REI stratiform cloud effective radius ice', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('LS_REFFRAIN', 'ls stratiform rain effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('LS_REFFSNOW','ls stratiform snow effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('CV_REFFLIQ', 'convective cloud liq effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field ('CV_REFFICE', 'convective cloud ice effective radius, , 'lev' 'avg', 'micron') !subcyc + call history_add_field ('MG_SADICE', 'MG surface area density ice', 'lev', 'avg', 'cm2 cm-3') !subcyc + call history_add_field ('MG_SADSNOW', 'MG surface area density snow', 'lev', 'avg', 'cm2 cm-3') !subcyc + + ! diagnostic precip + call history_add_field ('QRAIN', 'Diagnostic grid-mean rain mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('QSNOW', 'Diagnostic grid-mean snow mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('NRAIN', 'Diagnostic grid-mean rain number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('NSNOW', 'Diagnostic grid-mean snow number conc', 'lev', 'avg', 'm-3') !subcyc + + ! size of precip + call history_add_field ('RERCLD', 'Diagnostic effective radius of Liquid Cloud and Rain', 'lev', 'avg', 'm') !subcyc + call history_add_field ('DSNOW', 'Diagnostic grid-mean snow diameter', 'lev', 'avg', 'm') !subcyc + + ! diagnostic radar reflectivity, cloud-averaged + call history_add_field ('REFL', '94 GHz radar reflectivity', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('AREFL', 'Average 94 GHz radar reflectivity', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('FREFL', 'Fractional occurrence of radar reflectivity', 'lev', 'avg', 'fraction') !subcyc + + call history_add_field ('CSRFL', '94 GHz radar reflectivity (CloudSat thresholds)', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('ACSRFL', 'Average 94 GHz radar reflectivity (CloudSat thresholds)', 'lev', 'avg', 'DBz') !subcyc + + call history_add_field ('FCSRFL', 'Fractional occurrence of radar reflectivity (CloudSat thresholds)', 'lev', 'avg', & + 'fraction') !subcyc + + call history_add_field ('AREFLZ', 'Average 94 GHz radar reflectivity', 'lev', 'avg', 'mm6 m-3') !subcyc + + ! 10cm (rain) radar reflectivity + call history_add_field ('REFL10CM', '10cm (Rain) radar reflectivity (Dbz)', 'lev', 'avg', 'DBz') !subcyc + call history_add_field ('REFLZ10CM', '10cm (Rain) radar reflectivity (Z units)', 'lev', 'avg', 'mm6 m-3') !subcyc + + ! Aerosol information + call history_add_field ('NCAL', 'Number Concentation Activated for Liquid', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('NCAI', 'Number Concentation Activated for Ice', 'lev', 'avg', 'm-3') !subcyc + + ! Average rain and snow mixing ratio (Q), number (N) and diameter (D), with frequency + call history_add_field ('AQRAIN', 'Average rain mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('AQSNOW', 'Average snow mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field ('ANRAIN', 'Average rain number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('ANSNOW', 'Average snow number conc', 'lev', 'avg', 'm-3') !subcyc + call history_add_field ('ADRAIN', 'Average rain effective Diameter', 'lev', 'avg', 'm') !subcyc + call history_add_field ('ADSNOW', 'Average snow effective Diameter', 'lev', 'avg', 'm') !subcyc + call history_add_field ('FREQR', 'Fractional occurrence of rain', 'lev', 'avg', 'fraction') !subcyc + call history_add_field ('FREQS', 'Fractional occurrence of snow', 'lev', 'avg', 'fraction') !subcyc + + ! precipitation efficiency & other diagnostic fields + call history_add_field('PE' , 'Stratiform Precipitation Efficiency (precip/cmeliq)', horiz_only, 'avg', & + '1') !subcyc + call history_add_field('APRL' , 'Average Stratiform Precip Rate over efficiency calculation', horiz_only, 'avg', & + 'm s-1') !subcyc + + call history_add_field('PEFRAC', 'Fraction of timesteps precip efficiency reported', horiz_only, 'avg', '1') !subcyc + call history_add_field('VPRCO' , 'Vertical average of autoconversion rate', horiz_only, 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field('VPRAO' , 'Vertical average of accretion rate', horiz_only, 'avg', 'kg kg-1 s-1') !subcyc + call history_add_field('RACAU' , 'Accretion/autoconversion ratio from vertical average',horiz_only, 'avg', 'kg kg-1 s-1') !subcyc + + call history_add_field('UMR','Mass-weighted rain fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + + if (micro_mg_version > 2) then + call history_add_field('UMG', 'Mass-weighted graupel/hail fallspeed', 'trop_cld_lev', 'avg', 'm s-1') !subcyc + call history_add_field('FREQG', 'Fractional occurrence of Graupel', 'lev', 'avg', 'fraction') !subcyc + call history_add_field('LS_REFFGRAU','ls stratiform graupel/hail effective radius', 'lev', 'avg', 'micron') !subcyc + call history_add_field('AQGRAU', 'Average graupel/hail mixing ratio', 'lev', 'avg', 'kg kg-1') !subcyc + call history_add_field('ANGRAU', 'Average graupel/hail number conc', 'lev', 'avg', 'm-3') !subcyc + end if + + + ! qc limiter (only output in versions 1.5 and later) + call history_add_field('QCRAT', 'Qc Limiter: Fraction of qc tendency applied', 'lev', 'avg', 'fraction') !subcyc + +end subroutine pumas_diagnostics_init + +#if 1 +!=============================================================================== + +subroutine pumas_diagnostics_run(state, ptend, dtime, pbuf) + + +!> \section arg_table_pumas_diagnostics_run Argument Table +!! \htmlinclude pumas_diagnostics_run.html +subroutine pumas_diagnostics_run(proc_rates, qcsinksum_rate1ord, naai, npccn, rndst, nacon, tlat, qvlat, qctend, qitend, & + nctend, nitend, qrtend, qstend, nrtend, nstend, qgtend, ngtend, effc, effc_fn, effi, sadice, sadsnow, & + prect, preci, nevapr, am_evp_st, prain, cmeout, deffi, pgamrad, lamcrad, qsout, dsout, qgout, ngout, & + dgout, lflx, iflx, gflx, rflx, sflx, qrout, reff_rain, reff_snow, reff_grau, nrout, nsout, refl, & + arefl, areflz, frefl, csrfl, acsrfl, fcsrfl, refl10cm, reflz10cm, rercld, ncai, ncal, qrout2, qsout2, & + nrout2, nsout2, drout2, dsout2, qgout2, ngout2, dgout2, freqg, freqs, freqr, nfice, qcrat, proc_rates, & + errstring, tnd_qsnow, tnd_nsnow, re_ice, prer_evap, frzimm, frzcnt, frzdep, errmsg, errflg) + + use cam_history, only: history_in_field + + type (proc_rates_type), intent(inout) :: proc_rates + + real(kind_phys), intent(in) :: qcsinksum_rate1ord(:,:) ! 1st order rate for direct cw to precip conversion + real(kind_phys), intent(in) :: tlat(:,:) ! latent heating rate (W/kg) + real(kind_phys), intent(in) :: qvlat(:,:) ! microphysical tendency qv (1/s) + real(kind_phys), intent(in) :: qctend(:,:) ! microphysical tendency qc (1/s) + real(kind_phys), intent(in) :: qitend(:,:) ! microphysical tendency qi (1/s) + real(kind_phys), intent(in) :: nctend(:,:) ! microphysical tendency nc (1/(kg*s)) + real(kind_phys), intent(in) :: nitend(:,:) ! microphysical tendency ni (1/(kg*s)) + + real(kind_phys), intent(in) :: qrtend(:,:) ! microphysical tendency qr (1/s) + real(kind_phys), intent(in) :: qstend(:,:) ! microphysical tendency qs (1/s) + real(kind_phys), intent(in) :: nrtend(:,:) ! microphysical tendency nr (1/(kg*s)) + real(kind_phys), intent(in) :: nstend(:,:) ! microphysical tendency ns (1/(kg*s)) + real(kind_phys), intent(in) :: qgtend(:,:) ! microphysical tendency qg (1/s) + real(kind_phys), intent(in) :: ngtend(:,:) ! microphysical tendency ng (1/(kg*s)) + + real(kind_phys), intent(in) :: effc(:,:) ! droplet effective radius (micron) + real(kind_phys), intent(in) :: effc_fn(:,:) ! droplet effective radius, assuming nc = 1.e8 kg-1 + real(kind_phys), intent(in) :: effi(:,:) ! cloud ice effective radius (micron) + real(kind_phys), intent(in) :: sadice(:,:) ! cloud ice surface area density (cm2/cm3) + real(kind_phys), intent(in) :: sadsnow(:,:) ! cloud snow surface area density (cm2/cm3) + real(kind_phys), intent(in) :: prect(:) ! surface precip rate (m/s) + real(kind_phys), intent(in) :: preci(:) ! surface ice/snow precip rate (m/s) + real(kind_phys), intent(in) :: nevapr(:,:) ! evaporation rate of rain + snow (kg/kg/s) + real(kind_phys), intent(in) :: am_evp_st(:,:) ! stratiform evaporation area (frac) + real(kind_phys), intent(in) :: prain(:,:) ! production of rain + snow (kg/kg/s) + real(kind_phys), intent(in) :: cmeout(:,:) ! Rate of cond-evap of ice (kg/kg/s) + real(kind_phys), intent(in) :: deffi(:,:) ! ice effective diameter for optics (radiation) (micron) + real(kind_phys), intent(in) :: pgamrad(:,:) ! ice gamma parameter for optics (radiation) (no units) + real(kind_phys), intent(in) :: lamcrad(:,:) ! slope of droplet distribution for optics (radiation) (1/m) + real(kind_phys), intent(in) :: qsout(:,:) ! snow mixing ratio (kg/kg) + real(kind_phys), intent(in) :: dsout(:,:) ! snow diameter (m) + real(kind_phys), intent(in) :: lflx(:,:) ! grid-box average liquid condensate flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: iflx(:,:) ! grid-box average ice condensate flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: rflx(:,:) ! grid-box average rain flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: sflx(:,:) ! grid-box average snow flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: gflx(:,:) ! grid-box average graupel/hail flux (kg m^-2 s^-1) + + real(kind_phys), intent(in) :: qrout(:,:) ! grid-box average rain mixing ratio (kg/kg) + real(kind_phys), intent(in) :: reff_rain(:,:) ! rain effective radius (micron) + real(kind_phys), intent(in) :: reff_snow(:,:) ! snow effective radius (micron) + real(kind_phys), intent(in) :: reff_grau(:,:) ! graupel effective radius (micron) + + real(kind_phys), intent(in) :: nrout(:,:) ! rain number concentration (1/m3) + real(kind_phys), intent(in) :: nsout(:,:) ! snow number concentration (1/m3) + real(kind_phys), intent(in) :: refl(:,:) ! analytic radar reflectivity (94GHZ, cloud radar) (dBZ) + real(kind_phys), intent(in) :: arefl(:,:) ! average reflectivity will zero points inside valid range (dBZ) + real(kind_phys), intent(in) :: areflz(:,:) ! average reflectivity in z. (mm6 m-3) + real(kind_phys), intent(in) :: frefl(:,:) ! fractional occurrence of radar reflectivity + real(kind_phys), intent(in) :: csrfl(:,:) ! cloudsat reflectivity (dBZ) + real(kind_phys), intent(in) :: acsrfl(:,:) ! cloudsat average (dBZ) + real(kind_phys), intent(in) :: fcsrfl(:,:) ! cloudsat fractional occurrence of radar reflectivity + real(kind_phys), intent(in) :: refl10cm(:,:) ! 10cm (rain) analytic radar reflectivity (dBZ) + real(kind_phys), intent(in) :: reflz10cm(:,:) ! 10cm (rain) analytic radar reflectivity (mm6 m-3) + real(kind_phys), intent(in) :: rercld(:,:) ! effective radius calculation for rain + cloud + real(kind_phys), intent(in) :: ncai(:,:) ! input number conc of ice nuclei available (1/m3) + real(kind_phys), intent(in) :: ncal(:,:) ! input number conc of CCN (1/m3) + real(kind_phys), intent(in) :: qrout2(:,:) ! copy of qrin as used to compute drin2 + real(kind_phys), intent(in) :: qsout2(:,:) ! copy of qsin as used to compute dsin2 + real(kind_phys), intent(in) :: nrout2(:,:) ! copy of nrin as used to compute drin2 + real(kind_phys), intent(in) :: nsout2(:,:) ! copy of nsin as used to compute dsin2 + real(kind_phys), intent(in) :: drout2(:,:) ! mean rain particle diameter (m) + real(kind_phys), intent(in) :: dsout2(:,:) ! mean snow particle diameter (m) + real(kind_phys), intent(in) :: freqs(:,:) ! fractional occurrence of snow + real(kind_phys), intent(in) :: freqr(:,:) ! fractional occurrence of rain + real(kind_phys), intent(in) :: nfice(:,:) ! fraction of frozen water to total condensed water + real(kind_phys), intent(in) :: qcrat(:,:) ! limiter for qc process rates (1=no limit --> 0. no qc) + real(kind_phys), intent(in) :: qgout(:,:) ! graupel/hail mixing ratio (kg/kg) + real(kind_phys), intent(in) :: dgout(:,:) ! graupel/hail diameter (m) + real(kind_phys), intent(in) :: ngout(:,:) ! graupel/hail number concentration (1/m3) + real(kind_phys), intent(in) :: qgout2(:,:) ! copy of qgin as used to compute dgin2 + real(kind_phys), intent(in) :: ngout2(:,:) ! copy of ngin as used to compute dgin2 + real(kind_phys), intent(in) :: dgout2(:,:) ! mean graupel/hail particle diameter (m) + real(kind_phys), intent(in) :: freqg(:,:) ! fractional occurrence of graupel + real(kind_phys), intent(in) :: prer_evap(:,:) ! evaporation rate of rain (kg/kg/s) + + ! CCPP error handling variables + character(len=512), intent(in) :: errmsg + integer, intent(in) :: errflg + + errmsg = '' + errflg = 0 + + +! KATES HACKATHON NOTES +!! The calls for history_out_field are in the pumas_diagnostcis.F90 file, but also with all of the other pumas code. +!! Those calls need to be hooked up to the parameters in the call list here. +!! There is an issue with subcolumn/grid scale I'm not sure how to address the grid averaging that is done after the +!! pumas_tend function call. + + + !------------------------------------------------------------------------------- + + lchnk = state%lchnk + ncol = state%ncol + psetcols = state%psetcols + ngrdcol = state%ngrdcol + itim_old = pbuf_old_tim_idx() + nlev = pver - top_lev + 1 + + nan_array = nan + + ! Allocate the proc_rates DDT + ! IMPORTANT NOTE -- elements in proc_rates are dimensioned to the nlev dimension while + ! all the other arrays in this routine are dimensioned pver. This is required because + ! PUMAS only gets the top_lev:pver array subsection, and the proc_rates arrays + ! need to be the same levels. + call proc_rates%allocate(ncol, nlev, ncd, micro_mg_warm_rain, errstring) + + call handle_errmsg(errstring, subname="micro_pumas_cam_tend") + + + call phys_getopts(use_subcol_microp_out=use_subcol_microp) + + ! Set the col_type flag to grid or subcolumn dependent on the value of use_subcol_microp + call pbuf_col_type_index(use_subcol_microp, col_type=col_type) + + !----------------------- + ! These physics buffer fields are read only and not set in this parameterization + ! If these fields do not have subcolumn data, copy the grid to the subcolumn if subcolumns is turned on + ! If subcolumns is not turned on, then these fields will be grid data + + call pbuf_get_field(pbuf, naai_hom_idx, naai_hom, col_type=col_type, copy_if_needed=use_subcol_microp) + call pbuf_get_field(pbuf, relvar_idx, relvar, col_type=col_type, copy_if_needed=use_subcol_microp) + call pbuf_get_field(pbuf, accre_enhan_idx, accre_enhan, col_type=col_type, copy_if_needed=use_subcol_microp) + call pbuf_get_field(pbuf, cmeliq_idx, cmeliq, col_type=col_type, copy_if_needed=use_subcol_microp) + + call pbuf_get_field(pbuf, cld_idx, cld, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), & + col_type=col_type, copy_if_needed=use_subcol_microp) + call pbuf_get_field(pbuf, concld_idx, concld, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), & + col_type=col_type, copy_if_needed=use_subcol_microp) + call pbuf_get_field(pbuf, ast_idx, ast, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), & + col_type=col_type, copy_if_needed=use_subcol_microp) + + ! Get convective precip for rainbows + if (prec_dp_idx > 0) then + call pbuf_get_field(pbuf, prec_dp_idx, prec_dp, col_type=col_type, copy_if_needed=use_subcol_microp) + else + nullify(prec_dp) + end if + if (prec_sh_idx > 0) then + call pbuf_get_field(pbuf, prec_sh_idx, prec_sh, col_type=col_type, copy_if_needed=use_subcol_microp) + else + nullify(prec_sh) + end if + +! Merge Precipitation rates (multi-process) + if (associated(prec_dp) .and. associated(prec_sh)) then + precc(:ncol) = prec_dp(:ncol) + prec_sh(:ncol) + else if (associated(prec_dp)) then + precc(:ncol) = prec_dp(:ncol) + else if (associated(prec_sh)) then + precc(:ncol) = prec_sh(:ncol) + else + precc(:ncol) = 0._r8 + end if + + if (do_cldice) then + ! If we ARE prognosing tendencies, then just point to an array of NaN fields to have + ! something for PUMAS to use in call + tnd_qsnow => nan_array + tnd_nsnow => nan_array + re_ice => nan_array + end if + + if (.not. use_hetfrz_classnuc) then + ! Needed to satisfy gnu compiler with optional argument - set to an array of Nan fields + frzimm => nan_array + frzcnt => nan_array + frzdep => nan_array + end if + + if (qsatfac_idx > 0) then + call pbuf_get_field(pbuf, qsatfac_idx, qsatfac, col_type=col_type, copy_if_needed=use_subcol_microp) + else + allocate(qsatfac(ncol,pver),stat=ierr) + call handle_allocate_error(ierr, 'micro_pumas_cam_tend', 'qsatfac') + qsatfac = 1._r8 + end if + + ! initialize tendency variables + preci = 0._r8 + prect = 0._r8 + + + !----------------------- + ! These physics buffer fields are calculated and set in this parameterization + ! If subcolumns is turned on, then these fields will be calculated on a subcolumn grid, otherwise they will be a normal grid + + call pbuf_get_field(pbuf, prec_str_idx, prec_str, col_type=col_type) + call pbuf_get_field(pbuf, snow_str_idx, snow_str, col_type=col_type) + call pbuf_get_field(pbuf, prec_pcw_idx, prec_pcw, col_type=col_type) + call pbuf_get_field(pbuf, snow_pcw_idx, snow_pcw, col_type=col_type) + call pbuf_get_field(pbuf, prec_sed_idx, prec_sed, col_type=col_type) + call pbuf_get_field(pbuf, snow_sed_idx, snow_sed, col_type=col_type) + call pbuf_get_field(pbuf, dei_idx, dei, col_type=col_type) + call pbuf_get_field(pbuf, mu_idx, mu, col_type=col_type) + call pbuf_get_field(pbuf, lambdac_idx, lambdac, col_type=col_type) + call pbuf_get_field(pbuf, des_idx, des, col_type=col_type) + call pbuf_get_field(pbuf, ls_flxprc_idx, mgflxprc, col_type=col_type) + call pbuf_get_field(pbuf, ls_flxsnw_idx, mgflxsnw, col_type=col_type) + call pbuf_get_field(pbuf, ls_mrprc_idx, mgmrprc, col_type=col_type) + call pbuf_get_field(pbuf, ls_mrsnw_idx, mgmrsnw, col_type=col_type) + call pbuf_get_field(pbuf, cv_reffliq_idx, cvreffliq, col_type=col_type) + call pbuf_get_field(pbuf, cv_reffice_idx, cvreffice, col_type=col_type) + call pbuf_get_field(pbuf, iciwpst_idx, iciwpst, col_type=col_type) + call pbuf_get_field(pbuf, iclwpst_idx, iclwpst, col_type=col_type) + call pbuf_get_field(pbuf, icswp_idx, icswp, col_type=col_type) + call pbuf_get_field(pbuf, rel_idx, rel, col_type=col_type) + call pbuf_get_field(pbuf, rei_idx, rei, col_type=col_type) + call pbuf_get_field(pbuf, wsedl_idx, wsedl, col_type=col_type) + call pbuf_get_field(pbuf, qme_idx, qme, col_type=col_type) + call pbuf_get_field(pbuf, bergso_idx, bergstot, col_type=col_type) + + ! Assign the pointer values to the non-pointer proc_rates element + proc_rates%bergstot(:ncol,1:nlev) = bergstot(:ncol,top_lev:pver) + + if (degrau_idx > 0) call pbuf_get_field(pbuf, degrau_idx, degrau, col_type=col_type) + if (icgrauwp_idx > 0) call pbuf_get_field(pbuf, icgrauwp_idx, icgrauwp, col_type=col_type) + if (cldfgrau_idx > 0) call pbuf_get_field(pbuf, cldfgrau_idx, cldfgrau, col_type=col_type) + + call pbuf_get_field(pbuf, cldo_idx, cldo, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cldfsnow_idx, cldfsnow, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_t_idx, CC_t, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_qv_idx, CC_qv, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_ql_idx, CC_ql, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_qi_idx, CC_qi, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_nl_idx, CC_nl, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_ni_idx, CC_ni, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + call pbuf_get_field(pbuf, cc_qlst_idx, CC_qlst, start=(/1,1,itim_old/), kount=(/psetcols,pver,1/), col_type=col_type) + + if (rate1_cw2pr_st_idx > 0) then + call pbuf_get_field(pbuf, rate1_cw2pr_st_idx, rate1ord_cw2pr_st, col_type=col_type) + end if + + !----------------------- + ! These are only on the grid regardless of whether subcolumns are turned on or not + call pbuf_get_field(pbuf, ls_reffrain_idx, mgreffrain_grid) + call pbuf_get_field(pbuf, ls_reffsnow_idx, mgreffsnow_grid) + call pbuf_get_field(pbuf, acpr_idx, acprecl_grid) + call pbuf_get_field(pbuf, acgcme_idx, acgcme_grid) + call pbuf_get_field(pbuf, acnum_idx, acnum_grid) + call pbuf_get_field(pbuf, cmeliq_idx, cmeliq_grid) + call pbuf_get_field(pbuf, ast_idx, ast_grid, start=(/1,1,itim_old/), kount=(/pcols,pver,1/)) + + call pbuf_get_field(pbuf, evprain_st_idx, evprain_st_grid) + call pbuf_get_field(pbuf, evpsnow_st_idx, evpsnow_st_grid) +!!!!! CACNOTE? call pbuf_get_field(pbuf, am_evp_st_idx, am_evp_st_grid) + + !----------------------------------------------------------------------- + ! ... Calculate cosine of zenith angle + ! then cast back to angle (radians) + !----------------------------------------------------------------------- + + zen_angle(:) = 0.0_r8 + rlats(:) = 0.0_r8 + rlons(:) = 0.0_r8 + calday = get_curr_calday() + call get_rlat_all_p( lchnk, ncol, rlats ) + call get_rlon_all_p( lchnk, ncol, rlons ) + call zenith( calday, rlats, rlons, zen_angle, ncol ) + where (zen_angle(:) <= 1.0_r8 .and. zen_angle(:) >= -1.0_r8) + zen_angle(:) = acos( zen_angle(:) ) + elsewhere + zen_angle(:) = 0.0_r8 + end where + + sza(:) = zen_angle(:) * rad2deg + call history_out_field( 'rbSZA', sza) + + !------------------------------------------------------------------------------------- + ! Microphysics assumes 'liquid stratus frac = ice stratus frac + ! = max( liquid stratus frac, ice stratus frac )'. + alst_mic => ast + aist_mic => ast + + ! Output initial in-cloud LWP (before microphysics) + + iclwpi = 0._r8 + iciwpi = 0._r8 + + do i = 1, ncol + do k = top_lev, pver + iclwpi(i) = iclwpi(i) + & + min(state%q(i,k,ixcldliq) / max(mincld,ast(i,k)),0.005_r8) & + * state%pdel(i,k) / gravit + iciwpi(i) = iciwpi(i) + & + min(state%q(i,k,ixcldice) / max(mincld,ast(i,k)),0.005_r8) & + * state%pdel(i,k) / gravit + end do + end do + + cldo(:ncol,top_lev:pver)=ast(:ncol,top_lev:pver) + + ! Initialize local state from input. + call physics_state_copy(state, state_loc) + + ! Because of the of limited vertical resolution, there can be a signifcant + ! warm bias at the cold point tropopause, which can create a wet bias in the + ! stratosphere. For the microphysics only, update the cold point temperature, with + ! an estimate of the coldest point between the model layers. + if (micro_mg_adjust_cpt) then + cp_rh(:ncol, :pver) = 0._r8 + cp_dt(:ncol) = 0._r8 + cp_dz(:ncol) = 0._r8 + + !REMOVECAM - no longer need this when CAM is retired and pcols no longer exists + troplev(:) = 0 + cp_z(:) = 0._r8 + cp_t(:) = 0._r8 + !REMOVECAM_END + call tropopause_find_cam(state_loc, troplev, primary=TROP_ALG_CPP, backup=TROP_ALG_NONE, & + tropZ=cp_z, tropT=cp_t) + + do i = 1, ncol + + ! Update statistics and output results. + if (troplev(i) .ne. NOTFOUND) then + cp_dt(i) = cp_t(i) - state_loc%t(i,troplev(i)) + cp_dz(i) = cp_z(i) - state_loc%zm(i,troplev(i)) + + ! NOTE: This change in temperature is just for the microphysics + ! and should not be added to any tendencies or used to update + ! any states + state_loc%t(i,troplev(i)) = state_loc%t(i,troplev(i)) + cp_dt(i) + end if + end do + + ! Output all of the statistics related to the cold point + ! tropopause adjustment. Th cold point information itself is + ! output in tropopause.F90. + call history_out_field("TROPF_TADJ", state_loc%t) + call history_out_field("TROPF_CDT", cp_dt) + call history_out_field("TROPF_CDZ", cp_dz) + end if + + ! Initialize ptend for output. + lq = .false. + lq(ixq) = .true. + lq(ixcldliq) = .true. + lq(ixcldice) = .true. + lq(ixnumliq) = .true. + lq(ixnumice) = .true. + lq(ixrain) = .true. + lq(ixsnow) = .true. + lq(ixnumrain) = .true. + lq(ixnumsnow) = .true. + if (micro_mg_version > 2) then + lq(ixgraupel) = .true. + lq(ixnumgraupel) = .true. + end if + + ! the name 'cldwat' triggers special tests on cldliq + ! and cldice in physics_update + call physics_ptend_init(ptend, psetcols, "cldwat", ls=.true., lq=lq) + + if (micro_mg_version > 2) then + state_loc_graup(:ncol,:) = state_loc%q(:ncol,:,ixgraupel) + state_loc_numgraup(:ncol,:) = state_loc%q(:ncol,:,ixnumgraupel) + else + state_loc_graup(:ncol,:) = 0._r8 + state_loc_numgraup(:ncol,:) = 0._r8 + end if + + ! Zero out diagnostic rainbow arrays + rbfreq = 0._r8 + rbfrac = 0._r8 + + ! Zero out values above top_lev before passing into _tend for some pbuf variables that are inputs + naai(:ncol,:top_lev-1) = 0._r8 + npccn(:ncol,:top_lev-1) = 0._r8 + + ! The null value for qsatfac is 1, not zero + qsatfac(:ncol,:top_lev-1) = 1._r8 + + ! Zero out values above top_lev for all output variables + ! Note that elements in proc_rates do not have the extra levels as they are dimensioned to be nlev instead of pver + tlat(:ncol,:top_lev-1)=0._r8 + qvlat(:ncol,:top_lev-1)=0._r8 + qcten(:ncol,:top_lev-1)=0._r8 + qiten(:ncol,:top_lev-1)=0._r8 + ncten(:ncol,:top_lev-1)=0._r8 + niten(:ncol,:top_lev-1)=0._r8 + qrten(:ncol,:top_lev-1)=0._r8 + qsten(:ncol,:top_lev-1)=0._r8 + nrten(:ncol,:top_lev-1)=0._r8 + nsten(:ncol,:top_lev-1)=0._r8 + qgten(:ncol,:top_lev-1)=0._r8 + ngten(:ncol,:top_lev-1)=0._r8 + rel(:ncol,:top_lev-1)=0._r8 + rel_fn_dum(:ncol,:top_lev-1)=0._r8 + rei(:ncol,:top_lev-1)=0._r8 + sadice(:ncol,:top_lev-1)=0._r8 + sadsnow(:ncol,:top_lev-1)=0._r8 + prect(:ncol)=0._r8 + preci(:ncol)=0._r8 + nevapr(:ncol,:top_lev-1)=0._r8 + am_evp_st(:ncol,:top_lev-1)=0._r8 + prain(:ncol,:top_lev-1)=0._r8 + cmeice(:ncol,:top_lev-1)=0._r8 + dei(:ncol,:top_lev-1)=0._r8 + mu(:ncol,:top_lev-1)=0._r8 + lambdac(:ncol,:top_lev-1)=0._r8 + qsout(:ncol,:top_lev-1)=0._r8 + des(:ncol,:top_lev-1)=0._r8 + qgout(:ncol,:top_lev-1)=0._r8 + ngout(:ncol,:top_lev-1)=0._r8 + dgout(:ncol,:top_lev-1)=0._r8 + cflx(:ncol,:top_lev-1)=0._r8 + iflx(:ncol,:top_lev-1)=0._r8 + gflx(:ncol,:top_lev-1)=0._r8 + rflx(:ncol,:top_lev-1)=0._r8 + sflx(:ncol,:top_lev-1)=0._r8 + qrout(:ncol,:top_lev-1)=0._r8 + reff_rain_dum(:ncol,:top_lev-1)=0._r8 + reff_snow_dum(:ncol,:top_lev-1)=0._r8 + reff_grau_dum(:ncol,:top_lev-1)=0._r8 + nrout(:ncol,:top_lev-1)=0._r8 + nsout(:ncol,:top_lev-1)=0._r8 + refl(:ncol,:top_lev-1)=0._r8 + arefl(:ncol,:top_lev-1)=0._r8 + areflz(:ncol,:top_lev-1)=0._r8 + frefl(:ncol,:top_lev-1)=0._r8 + csrfl(:ncol,:top_lev-1)=0._r8 + acsrfl(:ncol,:top_lev-1)=0._r8 + fcsrfl(:ncol,:top_lev-1)=0._r8 + refl10cm(:ncol,:top_lev-1)=-9999._r8 + reflz10cm(:ncol,:top_lev-1)=0._r8 + rercld(:ncol,:top_lev-1)=0._r8 + ncai(:ncol,:top_lev-1)=0._r8 + ncal(:ncol,:top_lev-1)=0._r8 + qrout2(:ncol,:top_lev-1)=0._r8 + qsout2(:ncol,:top_lev-1)=0._r8 + nrout2(:ncol,:top_lev-1)=0._r8 + nsout2(:ncol,:top_lev-1)=0._r8 + qgout2(:ncol,:top_lev-1)=0._r8 + ngout2(:ncol,:top_lev-1)=0._r8 + dgout2(:ncol,:top_lev-1)=0._r8 + freqg(:ncol,:top_lev-1)=0._r8 + freqs(:ncol,:top_lev-1)=0._r8 + freqr(:ncol,:top_lev-1)=0._r8 + nfice(:ncol,:top_lev-1)=0._r8 + qcrat(:ncol,:top_lev-1)=0._r8 + tnd_qsnow(:ncol,:top_lev-1)=0._r8 + tnd_nsnow(:ncol,:top_lev-1)=0._r8 + re_ice(:ncol,:top_lev-1)=0._r8 + prer_evap(:ncol,:top_lev-1)=0._r8 + frzimm(:ncol,:top_lev-1)=0._r8 + frzcnt(:ncol,:top_lev-1)=0._r8 + frzdep(:ncol,:top_lev-1)=0._r8 + + do it = 1, num_steps + + call micro_pumas_tend( & + ncol, nlev, dtime/num_steps,& + state_loc%t(:ncol,top_lev:), state_loc%q(:ncol,top_lev:,ixq), & + state_loc%q(:ncol,top_lev:,ixcldliq), state_loc%q(:ncol,top_lev:,ixcldice), & + state_loc%q(:ncol,top_lev:,ixnumliq), state_loc%q(:ncol,top_lev:,ixnumice), & + state_loc%q(:ncol,top_lev:,ixrain), state_loc%q(:ncol,top_lev:,ixsnow), & + state_loc%q(:ncol,top_lev:,ixnumrain), state_loc%q(:ncol,top_lev:,ixnumsnow), & + state_loc_graup(:ncol,top_lev:), state_loc_numgraup(:ncol,top_lev:), & + relvar(:ncol,top_lev:), accre_enhan(:ncol,top_lev:), & + state_loc%pmid(:ncol,top_lev:), state_loc%pdel(:ncol,top_lev:), state_loc%pint(:ncol,top_lev:), & + ast(:ncol,top_lev:), alst_mic(:ncol,top_lev:), aist_mic(:ncol,top_lev:), qsatfac(:ncol,top_lev:), & + rate1cld(:ncol,top_lev:), & + naai(:ncol,top_lev:), npccn(:ncol,top_lev:), & + rndst(:ncol,top_lev:,:), nacon(:ncol,top_lev:,:), & + tlat(:ncol,top_lev:), qvlat(:ncol,top_lev:), & + qcten(:ncol,top_lev:), qiten(:ncol,top_lev:), & + ncten(:ncol,top_lev:), niten(:ncol,top_lev:), & + qrten(:ncol,top_lev:), qsten(:ncol,top_lev:), & + nrten(:ncol,top_lev:), nsten(:ncol,top_lev:), & + qgten(:ncol,top_lev:), ngten(:ncol,top_lev:), & + rel(:ncol,top_lev:), rel_fn_dum(:ncol,top_lev:), rei(:ncol,top_lev:), & + sadice(:ncol,top_lev:), sadsnow(:ncol,top_lev:), & + prect(:ncol), preci(:ncol), & + nevapr(:ncol,top_lev:), am_evp_st(:ncol,top_lev:), & + prain(:ncol,top_lev:), & + cmeice(:ncol,top_lev:), dei(:ncol,top_lev:), & + mu(:ncol,top_lev:), lambdac(:ncol,top_lev:), & + qsout(:ncol,top_lev:), des(:ncol,top_lev:), & + qgout(:ncol,top_lev:), ngout(:ncol,top_lev:), dgout(:ncol,top_lev:), & + cflx(:ncol,top_lev:), iflx(:ncol,top_lev:), & + gflx(:ncol,top_lev:), & + rflx(:ncol,top_lev:), sflx(:ncol,top_lev:), qrout(:ncol,top_lev:), & + reff_rain_dum(:ncol,top_lev:), reff_snow_dum(:ncol,top_lev:), reff_grau_dum(:ncol,top_lev:), & + nrout(:ncol,top_lev:), nsout(:ncol,top_lev:), & + refl(:ncol,top_lev:), arefl(:ncol,top_lev:), areflz(:ncol,top_lev:), & + frefl(:ncol,top_lev:), csrfl(:ncol,top_lev:), acsrfl(:ncol,top_lev:), & + fcsrfl(:ncol,top_lev:), & + refl10cm(:ncol,top_lev:), reflz10cm(:ncol,top_lev:), rercld(:ncol,top_lev:), & + ncai(:ncol,top_lev:), ncal(:ncol,top_lev:), & + qrout2(:ncol,top_lev:), qsout2(:ncol,top_lev:), & + nrout2(:ncol,top_lev:), nsout2(:ncol,top_lev:), & + drout_dum(:ncol,top_lev:), dsout2_dum(:ncol,top_lev:), & + qgout2(:ncol,top_lev:), ngout2(:ncol,top_lev:), dgout2(:ncol,top_lev:), freqg(:ncol,top_lev:), & + freqs(:ncol,top_lev:), freqr(:ncol,top_lev:), & + nfice(:ncol,top_lev:), qcrat(:ncol,top_lev:), & + proc_rates, & + errstring, & + tnd_qsnow(:ncol,top_lev:),tnd_nsnow(:ncol,top_lev:),re_ice(:ncol,top_lev:),& + prer_evap(:ncol,top_lev:), & + frzimm(:ncol,top_lev:), frzcnt(:ncol,top_lev:), frzdep(:ncol,top_lev:) ) + + call handle_errmsg(errstring, subname="micro_pumas_cam_tend") + + call physics_ptend_init(ptend_loc, psetcols, "micro_pumas", & + ls=.true., lq=lq) + + ! Set local tendency. + ptend_loc%s(:ncol,top_lev:) = tlat(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixq) = qvlat(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixcldliq) = qcten(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixcldice) = qiten(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixnumliq) = ncten(:ncol,top_lev:) + + if (do_cldice) then + ptend_loc%q(:ncol,top_lev:,ixnumice) = niten(:ncol,top_lev:) + else + ! In this case, the tendency should be all 0. + if (any(niten(:ncol,:) /= 0._r8)) then + call endrun("micro_pumas_cam:ERROR - MG microphysics is configured not to prognose cloud ice,"// & + " but micro_pumas_tend has ice number tendencies.") + end if + ptend_loc%q(:ncol,:,ixnumice) = 0._r8 + end if + + ptend_loc%q(:ncol,top_lev:,ixrain) = qrten(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixsnow) = qsten(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixnumrain) = nrten(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixnumsnow) = nsten(:ncol,top_lev:) + + if (micro_mg_version > 2) then + ptend_loc%q(:ncol,top_lev:,ixgraupel) = qgten(:ncol,top_lev:) + ptend_loc%q(:ncol,top_lev:,ixnumgraupel) = ngten(:ncol,top_lev:) + end if + + ! Sum into overall ptend + call physics_ptend_sum(ptend_loc, ptend, ncol) + + ! Update local state + call physics_update(state_loc, ptend_loc, dtime/num_steps) + + if (trim(micro_mg_warm_rain) == 'tau') then + proc_rates%amk_c(:ncol,:,:) = proc_rates%amk_c(:ncol,:,:)/num_steps + proc_rates%ank_c(:ncol,:,:) = proc_rates%ank_c(:ncol,:,:)/num_steps + proc_rates%amk_r(:ncol,:,:) = proc_rates%amk_r(:ncol,:,:)/num_steps + proc_rates%ank_r(:ncol,:,:) = proc_rates%ank_r(:ncol,:,:)/num_steps + proc_rates%amk(:ncol,:,:) = proc_rates%amk(:ncol,:,:)/num_steps + proc_rates%ank(:ncol,:,:) = proc_rates%ank(:ncol,:,:)/num_steps + proc_rates%amk_out(:ncol,:,:) = proc_rates%amk_out(:ncol,:,:)/num_steps + end if + + end do + + ! Divide ptend by substeps. + call physics_ptend_scale(ptend, 1._r8/num_steps, ncol) + + ! Check to make sure that the microphysics code is respecting the flags that control + ! whether MG should be prognosing cloud ice and cloud liquid or not. + if (.not. do_cldice) then + if (any(ptend%q(:ncol,top_lev:pver,ixcldice) /= 0.0_r8)) & + call endrun("micro_pumas_cam:ERROR - MG microphysics is configured not to prognose cloud ice,"// & + " but micro_pumas_tend has ice mass tendencies.") + if (any(ptend%q(:ncol,top_lev:pver,ixnumice) /= 0.0_r8)) & + call endrun("micro_pumas_cam:ERROR - MG microphysics is configured not to prognose cloud ice,"// & + " but micro_pumas_tend has ice number tendencies.") + end if + if (.not. do_cldliq) then + if (any(ptend%q(:ncol,top_lev:pver,ixcldliq) /= 0.0_r8)) & + call endrun("micro_pumas_cam:ERROR - MG microphysics is configured not to prognose cloud liquid,"// & + " but micro_pumas_tend has liquid mass tendencies.") + if (any(ptend%q(:ncol,top_lev:pver,ixnumliq) /= 0.0_r8)) & + call endrun("micro_pumas_cam:ERROR - MG microphysics is configured not to prognose cloud liquid,"// & + " but micro_pumas_tend has liquid number tendencies.") + end if + + mnuccdohet = 0._r8 + do k=top_lev,pver + do i=1,ncol + if (naai(i,k) > 0._r8) then + mnuccdohet(i,k) = proc_rates%mnuccdtot(i,k-top_lev+1) - (naai_hom(i,k)/naai(i,k))*proc_rates%mnuccdtot(i,k-top_lev+1) + end if + end do + end do + + mgflxprc(:ncol,top_lev:pverp) = rflx(:ncol,top_lev:pverp) + sflx(:ncol,top_lev:pverp) + mgflxsnw(:ncol,top_lev:pverp) = sflx(:ncol,top_lev:pverp) + + !add condensate fluxes for MG2 (ice and snow already added for MG1) + if (micro_mg_version >= 2) then + mgflxprc(:ncol,top_lev:pverp) = mgflxprc(:ncol,top_lev:pverp)+ iflx(:ncol,top_lev:pverp) + cflx(:ncol,top_lev:pverp) + mgflxsnw(:ncol,top_lev:pverp) = mgflxsnw(:ncol,top_lev:pverp) + iflx(:ncol,top_lev:pverp) + end if + + !add graupel fluxes for MG3 to snow flux + if (micro_mg_version >= 3) then + mgflxprc(:ncol,top_lev:pverp) = mgflxprc(:ncol,top_lev:pverp)+gflx(:ncol,top_lev:pverp) + mgflxsnw(:ncol,top_lev:pverp) = mgflxsnw(:ncol,top_lev:pverp)+gflx(:ncol,top_lev:pverp) + end if + + mgmrprc(:ncol,top_lev:pver) = qrout(:ncol,top_lev:pver) + qsout(:ncol,top_lev:pver) + mgmrsnw(:ncol,top_lev:pver) = qsout(:ncol,top_lev:pver) + + !! calculate effective radius of convective liquid and ice using dcon and deicon (not used by code, not useful for COSP) + !! hard-coded as average of hard-coded values used for deep/shallow convective detrainment (near line 1502/1505) + cvreffliq(:ncol,top_lev:pver) = 9.0_r8 + cvreffice(:ncol,top_lev:pver) = 37.0_r8 + + ! Reassign rate1 if modal aerosols + if (rate1_cw2pr_st_idx > 0) then + rate1ord_cw2pr_st(:ncol,top_lev:pver) = rate1cld(:ncol,top_lev:pver) + end if + + ! Sedimentation velocity for liquid stratus cloud droplet + wsedl(:ncol,top_lev:pver) = proc_rates%vtrmc(:ncol,1:nlev) + + ! Microphysical tendencies for use in the macrophysics at the next time step + CC_T(:ncol,top_lev:pver) = tlat(:ncol,top_lev:pver)/cpair + CC_qv(:ncol,top_lev:pver) = qvlat(:ncol,top_lev:pver) + CC_ql(:ncol,top_lev:pver) = qcten(:ncol,top_lev:pver) + CC_qi(:ncol,top_lev:pver) = qiten(:ncol,top_lev:pver) + CC_nl(:ncol,top_lev:pver) = ncten(:ncol,top_lev:pver) + CC_ni(:ncol,top_lev:pver) = niten(:ncol,top_lev:pver) + CC_qlst(:ncol,top_lev:pver) = qcten(:ncol,top_lev:pver)/max(0.01_r8,alst_mic(:ncol,top_lev:pver)) + + ! Net micro_pumas_cam condensation rate + qme(:ncol,:top_lev-1) = 0._r8 + qme(:ncol,top_lev:pver) = cmeliq(:ncol,top_lev:pver) + proc_rates%cmeitot(:ncol,1:nlev) + + ! For precip, accumulate only total precip in prec_pcw and snow_pcw variables. + ! Other precip output variables are set to 0 + ! Do not subscript by ncol here, because in physpkg we divide the whole + ! array and need to avoid an FPE due to uninitialized data. + prec_pcw = prect + snow_pcw = preci + prec_sed = 0._r8 + snow_sed = 0._r8 + prec_str = prec_pcw + prec_sed + snow_str = snow_pcw + snow_sed + + icecldf(:ncol,top_lev:pver) = ast(:ncol,top_lev:pver) + liqcldf(:ncol,top_lev:pver) = ast(:ncol,top_lev:pver) + + ! ------------------------------------------------------------ ! + ! Compute in cloud ice and liquid mixing ratios ! + ! Note that 'iclwp, iciwp' are used for radiation computation. ! + ! ------------------------------------------------------------ ! + + icinc = 0._r8 + icwnc = 0._r8 + iciwpst = 0._r8 + iclwpst = 0._r8 + icswp = 0._r8 + cldfsnow = 0._r8 + if (micro_mg_version > 2) then + icgrauwp = 0._r8 + cldfgrau = 0._r8 + end if + + do k = top_lev, pver + do i = 1, ncol + ! Limits for in-cloud mixing ratios consistent with MG microphysics + ! in-cloud mixing ratio maximum limit of 0.005 kg/kg + icimrst(i,k) = min( state_loc%q(i,k,ixcldice) / max(mincld,icecldf(i,k)),0.005_r8 ) + icwmrst(i,k) = min( state_loc%q(i,k,ixcldliq) / max(mincld,liqcldf(i,k)),0.005_r8 ) + icinc(i,k) = state_loc%q(i,k,ixnumice) / max(mincld,icecldf(i,k)) * & + state_loc%pmid(i,k) / (287.15_r8*state_loc%t(i,k)) + icwnc(i,k) = state_loc%q(i,k,ixnumliq) / max(mincld,liqcldf(i,k)) * & + state_loc%pmid(i,k) / (287.15_r8*state_loc%t(i,k)) + ! Calculate micro_pumas_cam cloud water paths in each layer + ! Note: uses stratiform cloud fraction! + iciwpst(i,k) = min(state_loc%q(i,k,ixcldice)/max(mincld,ast(i,k)),0.005_r8) * state_loc%pdel(i,k) / gravit + iclwpst(i,k) = min(state_loc%q(i,k,ixcldliq)/max(mincld,ast(i,k)),0.005_r8) * state_loc%pdel(i,k) / gravit + + ! ------------------------------ ! + ! Adjust cloud fraction for snow ! + ! ------------------------------ ! + cldfsnow(i,k) = cld(i,k) + ! If cloud and only ice ( no convective cloud or ice ), then set to 0. + if( ( cldfsnow(i,k) .gt. 1.e-4_r8 ) .and. & + ( concld(i,k) .lt. 1.e-4_r8 ) .and. & + ( state_loc%q(i,k,ixcldliq) .lt. 1.e-10_r8 ) ) then + cldfsnow(i,k) = 0._r8 + end if + ! If no cloud and snow, then set to 0.25 + if( ( cldfsnow(i,k) .le. 1.e-4_r8 ) .and. ( qsout(i,k) .gt. 1.e-6_r8 ) ) then + cldfsnow(i,k) = 0.25_r8 + end if + ! Calculate in-cloud snow water path + icswp(i,k) = qsout(i,k) / max( mincld, cldfsnow(i,k) ) * state_loc%pdel(i,k) / gravit + + ! --------------------------------- ! + ! Adjust cloud fraction for graupel ! + ! --------------------------------- ! + if (micro_mg_version > 2) then + cldfgrau(i,k) = cld(i,k) + ! If cloud and only ice ( no convective cloud or ice ), then set to 0. + if( ( cldfgrau(i,k) .gt. 1.e-4_r8 ) .and. & + ( concld(i,k) .lt. 1.e-4_r8 ) .and. & + ( state_loc%q(i,k,ixcldliq) .lt. 1.e-10_r8 ) ) then + cldfgrau(i,k) = 0._r8 + end if + ! If no cloud and graupel, then set to 0.25 + if( ( cldfgrau(i,k) .le. 1.e-4_r8 ) .and. ( qgout(i,k) .gt. 1.e-9_r8 ) ) then + cldfgrau(i,k) = 0.25_r8 + end if + + ! Calculate in-cloud snow water path + icgrauwp(i,k) = qgout(i,k) / max( 1.e-2_r8, cldfgrau(i,k) ) * state_loc%pdel(i,k) / gravit + end if + + end do + end do + + ! Calculate cloud fraction for prognostic precip sizes. + ! Cloud fraction for purposes of precipitation is maximum cloud + ! fraction out of all the layers that the precipitation may be + ! falling down from. + cldmax(:ncol,top_lev:) = max(mincld, ast(:ncol,top_lev:)) + do k = top_lev+1, pver + where (state_loc%q(:ncol,k-1,ixrain) >= qsmall .or. & + state_loc%q(:ncol,k-1,ixsnow) >= qsmall) + cldmax(:ncol,k) = max(cldmax(:ncol,k-1), cldmax(:ncol,k)) + end where + end do + + !Copy pbuf field from proc_rates back to pbuf pointer + bergstot(:ncol,top_lev:) = proc_rates%bergstot(:ncol,1:nlev) + bergstot(:ncol,1:top_lev-1) = 0._r8 + + ! ------------------------------------------------------ ! + ! ------------------------------------------------------ ! + ! All code from here to the end is on grid columns only ! + ! ------------------------------------------------------ ! + ! ------------------------------------------------------ ! + + ! Average the fields which are needed later in this paramterization to be on the grid + if (use_subcol_microp) then + call subcol_field_avg(prec_str, ngrdcol, lchnk, prec_str_grid) + call subcol_field_avg(iclwpst, ngrdcol, lchnk, iclwpst_grid) + call subcol_field_avg(cvreffliq, ngrdcol, lchnk, cvreffliq_grid) + call subcol_field_avg(cvreffice, ngrdcol, lchnk, cvreffice_grid) + call subcol_field_avg(mgflxprc, ngrdcol, lchnk, mgflxprc_grid) + call subcol_field_avg(mgflxsnw, ngrdcol, lchnk, mgflxsnw_grid) + call subcol_field_avg(qme, ngrdcol, lchnk, qme_grid) + call subcol_field_avg(nevapr, ngrdcol, lchnk, nevapr_grid) + call subcol_field_avg(prain, ngrdcol, lchnk, prain_grid) + call subcol_field_avg(proc_rates%evapsnow, ngrdcol, lchnk, evpsnow_st_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%bergstot, ngrdcol, lchnk, bergso_grid(:,top_lev:)) + + call subcol_field_avg(am_evp_st, ngrdcol, lchnk, am_evp_st_grid) + + ! Average fields which are not in pbuf + call subcol_field_avg(qrout, ngrdcol, lchnk, qrout_grid) + call subcol_field_avg(qsout, ngrdcol, lchnk, qsout_grid) + call subcol_field_avg(nsout, ngrdcol, lchnk, nsout_grid) + call subcol_field_avg(nrout, ngrdcol, lchnk, nrout_grid) + call subcol_field_avg(cld, ngrdcol, lchnk, cld_grid) + call subcol_field_avg(proc_rates%qcrestot, ngrdcol, lchnk, qcreso_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%melttot, ngrdcol, lchnk, melto_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%mnuccctot, ngrdcol, lchnk, mnuccco_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%mnuccttot, ngrdcol, lchnk, mnuccto_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%bergtot, ngrdcol, lchnk, bergo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%homotot, ngrdcol, lchnk, homoo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%msacwitot, ngrdcol, lchnk, msacwio_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%psacwstot, ngrdcol, lchnk, psacwso_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%cmeitot, ngrdcol, lchnk, cmeiout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qirestot, ngrdcol, lchnk, qireso_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%prcitot, ngrdcol, lchnk, prcio_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%praitot, ngrdcol, lchnk, praio_grid(:,top_lev:)) + call subcol_field_avg(icwmrst, ngrdcol, lchnk, icwmrst_grid) + call subcol_field_avg(icimrst, ngrdcol, lchnk, icimrst_grid) + call subcol_field_avg(liqcldf, ngrdcol, lchnk, liqcldf_grid) + call subcol_field_avg(icecldf, ngrdcol, lchnk, icecldf_grid) + call subcol_field_avg(icwnc, ngrdcol, lchnk, icwnc_grid) + call subcol_field_avg(icinc, ngrdcol, lchnk, icinc_grid) + call subcol_field_avg(state_loc%pdel, ngrdcol, lchnk, pdel_grid) + call subcol_field_avg(proc_rates%pratot, ngrdcol, lchnk, prao_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%prctot, ngrdcol, lchnk, prco_grid(:,top_lev:)) + + call subcol_field_avg(state_loc%q(:,:,ixnumliq), ngrdcol, lchnk, nc_grid(:,top_lev:)) + call subcol_field_avg(state_loc%q(:,:,ixnumice), ngrdcol, lchnk, ni_grid(:,top_lev:)) + + call subcol_field_avg(proc_rates%qcsedten, ngrdcol, lchnk, qcsedtenout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qisedten, ngrdcol, lchnk, qisedtenout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%vtrmc, ngrdcol, lchnk, vtrmcout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%vtrmi, ngrdcol, lchnk, vtrmiout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qcsevap, ngrdcol, lchnk, qcsevapout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qisevap, ngrdcol, lchnk, qisevapout_grid(:,top_lev:)) + + call subcol_field_avg(cldmax, ngrdcol, lchnk, cldmax_grid) + + call subcol_field_avg(state_loc%q(:,:,ixrain), ngrdcol, lchnk, qr_grid) + call subcol_field_avg(state_loc%q(:,:,ixnumrain), ngrdcol, lchnk, nr_grid) + call subcol_field_avg(state_loc%q(:,:,ixsnow), ngrdcol, lchnk, qs_grid) + call subcol_field_avg(state_loc%q(:,:,ixnumsnow), ngrdcol, lchnk, ns_grid) + call subcol_field_avg(proc_rates%qrsedten, ngrdcol, lchnk, qrsedtenout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qssedten, ngrdcol, lchnk, qssedtenout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%umr, ngrdcol, lchnk, umrout_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%ums, ngrdcol, lchnk, umsout_grid(:,top_lev:)) + + if (micro_mg_version > 2) then + call subcol_field_avg(state_loc%q(:,:,ixgraupel), ngrdcol, lchnk, qg_grid) + call subcol_field_avg(state_loc%q(:,:,ixnumgraupel), ngrdcol, lchnk, ng_grid) + call subcol_field_avg(proc_rates%psacrtot, ngrdcol, lchnk, psacro_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%pracgtot, ngrdcol, lchnk, pracgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%psacwgtot, ngrdcol, lchnk, psacwgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%pgsacwtot, ngrdcol, lchnk, pgsacwo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%pgracstot, ngrdcol, lchnk, pgracso_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%prdgtot, ngrdcol, lchnk, prdgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qmultgtot, ngrdcol, lchnk, qmultgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%qmultrgtot, ngrdcol, lchnk, qmultrgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%npracgtot, ngrdcol, lchnk, npracgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%nscngtot, ngrdcol, lchnk, nscngo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%ngracstot, ngrdcol, lchnk, ngracso_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%nmultgtot, ngrdcol, lchnk, nmultgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%nmultrgtot, ngrdcol, lchnk, nmultrgo_grid(:,top_lev:)) + call subcol_field_avg(proc_rates%npsacwgtot, ngrdcol, lchnk, npsacwgo_grid(:,top_lev:)) + end if + + else + qcreso_grid(:ncol,:top_lev-1) = 0._r8 + melto_grid(:ncol,:top_lev-1) = 0._r8 + mnuccco_grid(:ncol,:top_lev-1) = 0._r8 + mnuccto_grid(:ncol,:top_lev-1) = 0._r8 + bergo_grid(:ncol,:top_lev-1) = 0._r8 + homoo_grid(:ncol,:top_lev-1) = 0._r8 + msacwio_grid(:ncol,:top_lev-1) = 0._r8 + psacwso_grid(:ncol,:top_lev-1) = 0._r8 + cmeiout_grid(:ncol,:top_lev-1) = 0._r8 + qireso_grid(:ncol,:top_lev-1) = 0._r8 + prcio_grid(:ncol,:top_lev-1) = 0._r8 + praio_grid(:ncol,:top_lev-1) = 0._r8 + prao_grid(:ncol,:top_lev-1) = 0._r8 + prco_grid(:ncol,:top_lev-1) = 0._r8 + qcsedtenout_grid(:ncol,:top_lev-1) = 0._r8 + qisedtenout_grid(:ncol,:top_lev-1) = 0._r8 + vtrmcout_grid(:ncol,:top_lev-1) = 0._r8 + vtrmiout_grid(:ncol,:top_lev-1) = 0._r8 + qcsevapout_grid(:ncol,:top_lev-1) = 0._r8 + qisevapout_grid(:ncol,:top_lev-1) = 0._r8 + qrsedtenout_grid(:ncol,:top_lev-1) = 0._r8 + qssedtenout_grid(:ncol,:top_lev-1) = 0._r8 + umrout_grid(:ncol,:top_lev-1) = 0._r8 + umsout_grid(:ncol,:top_lev-1) = 0._r8 + psacro_grid(:ncol,:top_lev-1) = 0._r8 + pracgo_grid(:ncol,:top_lev-1) = 0._r8 + psacwgo_grid(:ncol,:top_lev-1) = 0._r8 + pgsacwo_grid(:ncol,:top_lev-1) = 0._r8 + pgracso_grid(:ncol,:top_lev-1) = 0._r8 + prdgo_grid(:ncol,:top_lev-1) = 0._r8 + qmultgo_grid(:ncol,:top_lev-1) = 0._r8 + qmultrgo_grid(:ncol,:top_lev-1) = 0._r8 + npracgo_grid(:ncol,:top_lev-1) = 0._r8 + nscngo_grid(:ncol,:top_lev-1) = 0._r8 + ngracso_grid(:ncol,:top_lev-1) = 0._r8 + nmultgo_grid(:ncol,:top_lev-1) = 0._r8 + nmultrgo_grid(:ncol,:top_lev-1) = 0._r8 + npsacwgo_grid(:ncol,:top_lev-1) = 0._r8 + bergso_grid(:ncol,:top_lev-1) = 0._r8 + + ! These pbuf fields need to be assigned. There is no corresponding subcol_field_avg + ! as they are reset before being used, so it would be a needless calculation + lambdac_grid => lambdac + mu_grid => mu + rel_grid => rel + rei_grid => rei + sadice_grid => sadice + sadsnow_grid => sadsnow + dei_grid => dei + des_grid => des + degrau_grid => degrau + + ! fields already on grids, so just assign + prec_str_grid => prec_str + iclwpst_grid => iclwpst + cvreffliq_grid => cvreffliq + cvreffice_grid => cvreffice + mgflxprc_grid => mgflxprc + mgflxsnw_grid => mgflxsnw + qme_grid => qme + nevapr_grid => nevapr + prain_grid => prain + + bergso_grid(:ncol,top_lev:) = proc_rates%bergstot + am_evp_st_grid = am_evp_st + + evpsnow_st_grid(:ncol,top_lev:) = proc_rates%evapsnow + qrout_grid = qrout + qsout_grid = qsout + nsout_grid = nsout + nrout_grid = nrout + cld_grid = cld + qcreso_grid(:ncol,top_lev:) = proc_rates%qcrestot + melto_grid(:ncol,top_lev:) = proc_rates%melttot + mnuccco_grid(:ncol,top_lev:) = proc_rates%mnuccctot + mnuccto_grid(:ncol,top_lev:) = proc_rates%mnuccttot + bergo_grid(:ncol,top_lev:) = proc_rates%bergtot + homoo_grid(:ncol,top_lev:) = proc_rates%homotot + msacwio_grid(:ncol,top_lev:) = proc_rates%msacwitot + psacwso_grid(:ncol,top_lev:) = proc_rates%psacwstot + cmeiout_grid(:ncol,top_lev:) = proc_rates%cmeitot + qireso_grid(:ncol,top_lev:) = proc_rates%qirestot + prcio_grid(:ncol,top_lev:) = proc_rates%prcitot + praio_grid(:ncol,top_lev:) = proc_rates%praitot + icwmrst_grid = icwmrst + icimrst_grid = icimrst + liqcldf_grid = liqcldf + icecldf_grid = icecldf + icwnc_grid = icwnc + icinc_grid = icinc + pdel_grid = state_loc%pdel + prao_grid(:ncol,top_lev:) = proc_rates%pratot + prco_grid(:ncol,top_lev:) = proc_rates%prctot + + nc_grid = state_loc%q(:,:,ixnumliq) + ni_grid = state_loc%q(:,:,ixnumice) + + qcsedtenout_grid(:ncol,top_lev:) = proc_rates%qcsedten + qisedtenout_grid(:ncol,top_lev:) = proc_rates%qisedten + vtrmcout_grid(:ncol,top_lev:) = proc_rates%vtrmc + vtrmiout_grid(:ncol,top_lev:) = proc_rates%vtrmi + qcsevapout_grid(:ncol,top_lev:) = proc_rates%qcsevap + qisevapout_grid(:ncol,top_lev:) = proc_rates%qisevap + + cldmax_grid = cldmax + + qr_grid = state_loc%q(:,:,ixrain) + nr_grid = state_loc%q(:,:,ixnumrain) + qs_grid = state_loc%q(:,:,ixsnow) + ns_grid = state_loc%q(:,:,ixnumsnow) + qrsedtenout_grid(:ncol,top_lev:) = proc_rates%qrsedten + qssedtenout_grid(:ncol,top_lev:) = proc_rates%qssedten + umrout_grid(:ncol,top_lev:) = proc_rates%umr + umsout_grid(:ncol,top_lev:) = proc_rates%ums + +! Zero out terms for budgets if not mg3.... + psacwgo_grid = 0._r8 + pgsacwo_grid = 0._r8 + qmultgo_grid = 0._r8 + + if (micro_mg_version > 2) then + qg_grid = state_loc%q(:,:,ixgraupel) + ng_grid = state_loc%q(:,:,ixnumgraupel) + psacro_grid(:ncol,top_lev:) = proc_rates%psacrtot + pracgo_grid(:ncol,top_lev:) = proc_rates%pracgtot + psacwgo_grid(:ncol,top_lev:) = proc_rates%psacwgtot + pgsacwo_grid(:ncol,top_lev:) = proc_rates%pgsacwtot + pgracso_grid(:ncol,top_lev:) = proc_rates%pgracstot + prdgo_grid(:ncol,top_lev:) = proc_rates%prdgtot + qmultgo_grid(:ncol,top_lev:) = proc_rates%qmultgtot + qmultrgo_grid(:ncol,top_lev:) = proc_rates%qmultrgtot + npracgo_grid(:ncol,top_lev:) = proc_rates%npracgtot + nscngo_grid(:ncol,top_lev:) = proc_rates%nscngtot + ngracso_grid(:ncol,top_lev:) = proc_rates%ngracstot + nmultgo_grid(:ncol,top_lev:) = proc_rates%nmultgtot + nmultrgo_grid(:ncol,top_lev:) = proc_rates%nmultrgtot + npsacwgo_grid(:ncol,top_lev:) = proc_rates%npsacwgtot + end if + + + end if + + ! If on subcolumns, average the rest of the pbuf fields which were modified on subcolumns but are not used further in + ! this parameterization (no need to assign in the non-subcolumn case -- the else step) + if (use_subcol_microp) then + call subcol_field_avg(snow_str, ngrdcol, lchnk, snow_str_grid) + call subcol_field_avg(prec_pcw, ngrdcol, lchnk, prec_pcw_grid) + call subcol_field_avg(snow_pcw, ngrdcol, lchnk, snow_pcw_grid) + call subcol_field_avg(prec_sed, ngrdcol, lchnk, prec_sed_grid) + call subcol_field_avg(snow_sed, ngrdcol, lchnk, snow_sed_grid) + call subcol_field_avg(cldo, ngrdcol, lchnk, cldo_grid) + call subcol_field_avg(mgmrprc, ngrdcol, lchnk, mgmrprc_grid) + call subcol_field_avg(mgmrsnw, ngrdcol, lchnk, mgmrsnw_grid) + call subcol_field_avg(wsedl, ngrdcol, lchnk, wsedl_grid) + call subcol_field_avg(cc_t, ngrdcol, lchnk, cc_t_grid) + call subcol_field_avg(cc_qv, ngrdcol, lchnk, cc_qv_grid) + call subcol_field_avg(cc_ql, ngrdcol, lchnk, cc_ql_grid) + call subcol_field_avg(cc_qi, ngrdcol, lchnk, cc_qi_grid) + call subcol_field_avg(cc_nl, ngrdcol, lchnk, cc_nl_grid) + call subcol_field_avg(cc_ni, ngrdcol, lchnk, cc_ni_grid) + call subcol_field_avg(cc_qlst, ngrdcol, lchnk, cc_qlst_grid) + call subcol_field_avg(iciwpst, ngrdcol, lchnk, iciwpst_grid) + call subcol_field_avg(icswp, ngrdcol, lchnk, icswp_grid) + call subcol_field_avg(cldfsnow, ngrdcol, lchnk, cldfsnow_grid) + + if (micro_mg_version > 2) then + call subcol_field_avg(icgrauwp, ngrdcol, lchnk, icgrauwp_grid) + call subcol_field_avg(cldfgrau, ngrdcol, lchnk, cldfsnow_grid) + end if + + if (rate1_cw2pr_st_idx > 0) then + call subcol_field_avg(rate1ord_cw2pr_st, ngrdcol, lchnk, rate1ord_cw2pr_st_grid) + end if + + end if + + ! ------------------------------------- ! + ! Size distribution calculation ! + ! ------------------------------------- ! + + ! Calculate rho (on subcolumns if turned on) for size distribution + ! parameter calculations and average it if needed + ! + ! State instead of state_loc to preserve answers for MG1 (and in any + ! case, it is unlikely to make much difference). + rho(:ncol,top_lev:) = state%pmid(:ncol,top_lev:) / & + (rair*state%t(:ncol,top_lev:)) + if (use_subcol_microp) then + call subcol_field_avg(rho, ngrdcol, lchnk, rho_grid) + else + rho_grid = rho + end if + + ! Effective radius for cloud liquid, fixed number. + mu_grid = 0._r8 + lambdac_grid = 0._r8 + rel_fn_grid = 10._r8 + + ncic_grid = 1.e8_r8 + + do k = top_lev, pver + !$acc data copyin (mg_liq_props,icwmrst_grid(:ngrdcol,k),rho_grid(:ngrdcol,k)) & + !$acc copy (ncic_grid(:ngrdcol,k)) & + !$acc copyout (mu_grid(:ngrdcol,k),lambdac_grid(:ngrdcol,k)) + call size_dist_param_liq(mg_liq_props, icwmrst_grid(:ngrdcol,k), & + ncic_grid(:ngrdcol,k), rho_grid(:ngrdcol,k), & + mu_grid(:ngrdcol,k), lambdac_grid(:ngrdcol,k), ngrdcol) + !$acc end data + end do + + where (icwmrst_grid(:ngrdcol,top_lev:) > qsmall) + rel_fn_grid(:ngrdcol,top_lev:) = & + (mu_grid(:ngrdcol,top_lev:) + 3._r8)/ & + lambdac_grid(:ngrdcol,top_lev:)/2._r8 * 1.e6_r8 + end where + + ! Effective radius for cloud liquid, and size parameters + ! mu_grid and lambdac_grid. + mu_grid = 0._r8 + lambdac_grid = 0._r8 + rel_grid = 10._r8 + + ! Calculate ncic on the grid + ncic_grid(:ngrdcol,top_lev:) = nc_grid(:ngrdcol,top_lev:) / & + max(mincld,liqcldf_grid(:ngrdcol,top_lev:)) + + do k = top_lev, pver + !$acc data copyin (mg_liq_props,icwmrst_grid(:ngrdcol,k), rho_grid(:ngrdcol,k)) & + !$acc copy (ncic_grid(:ngrdcol,k)) & + !$acc copyout (mu_grid(:ngrdcol,k),lambdac_grid(:ngrdcol,k)) + call size_dist_param_liq(mg_liq_props, icwmrst_grid(:ngrdcol,k), & + ncic_grid(:ngrdcol,k), rho_grid(:ngrdcol,k), & + mu_grid(:ngrdcol,k), lambdac_grid(:ngrdcol,k), ngrdcol) + !$acc end data + end do + + where (icwmrst_grid(:ngrdcol,top_lev:) >= qsmall) + rel_grid(:ngrdcol,top_lev:) = & + (mu_grid(:ngrdcol,top_lev:) + 3._r8) / & + lambdac_grid(:ngrdcol,top_lev:)/2._r8 * 1.e6_r8 + elsewhere + ! Deal with the fact that size_dist_param_liq sets mu_grid to -100 + ! wherever there is no cloud. + mu_grid(:ngrdcol,top_lev:) = 0._r8 + end where + + ! Rain/snow effective diameter. + drout2_grid = 0._r8 + reff_rain_grid = 0._r8 + des_grid = 0._r8 + dsout2_grid = 0._r8 + reff_snow_grid = 0._r8 + reff_grau_grid = 0._r8 + + ! Prognostic precipitation + + where (qr_grid(:ngrdcol,top_lev:) >= 1.e-7_r8) + drout2_grid(:ngrdcol,top_lev:) = avg_diameter( & + qr_grid(:ngrdcol,top_lev:), & + nr_grid(:ngrdcol,top_lev:) * rho_grid(:ngrdcol,top_lev:), & + rho_grid(:ngrdcol,top_lev:), rhow) + + reff_rain_grid(:ngrdcol,top_lev:) = drout2_grid(:ngrdcol,top_lev:) * & + shapeparam * micron2meter + end where + + where (qs_grid(:ngrdcol,top_lev:) >= 1.e-7_r8) + dsout2_grid(:ngrdcol,top_lev:) = avg_diameter( & + qs_grid(:ngrdcol,top_lev:), & + ns_grid(:ngrdcol,top_lev:) * rho_grid(:ngrdcol,top_lev:), & + rho_grid(:ngrdcol,top_lev:), rhosn) + + des_grid(:ngrdcol,top_lev:) = dsout2_grid(:ngrdcol,top_lev:) *& + 3._r8 * rhosn/rhows + + reff_snow_grid(:ngrdcol,top_lev:) = dsout2_grid(:ngrdcol,top_lev:) * & + shapeparam * micron2meter + end where + + +! Graupel/Hail size distribution Placeholder + if (micro_mg_version > 2) then + degrau_grid = 0._r8 + where (qg_grid(:ngrdcol,top_lev:) >= 1.e-7_r8) + dgout2_grid(:ngrdcol,top_lev:) = avg_diameter( & + qg_grid(:ngrdcol,top_lev:), & + ng_grid(:ngrdcol,top_lev:) * rho_grid(:ngrdcol,top_lev:), & + rho_grid(:ngrdcol,top_lev:), rhog) + + reff_grau_grid(:ngrdcol,top_lev:) = dgout2_grid(:ngrdcol,top_lev:) * & + 1.5_r8 * 1.e6_r8 + degrau_grid(:ngrdcol,top_lev:) = dgout2_grid(:ngrdcol,top_lev:) *& + 3._r8 * rhog/rhows + end where + end if + + ! Effective radius and diameter for cloud ice. + rei_grid = 25._r8 + + niic_grid(:ngrdcol,top_lev:) = ni_grid(:ngrdcol,top_lev:) / & + max(mincld,icecldf_grid(:ngrdcol,top_lev:)) + + do k = top_lev, pver + !$acc data copyin (mg_ice_props, icimrst_grid(:ngrdcol,k)) & + !$acc copy (niic_grid(:ngrdcol,k)) & + !$acc copyout (rei_grid(:ngrdcol,k)) + call size_dist_param_basic(mg_ice_props,icimrst_grid(:ngrdcol,k), & + niic_grid(:ngrdcol,k),rei_grid(:ngrdcol,k),ngrdcol) + !$acc end data + end do + + where (icimrst_grid(:ngrdcol,top_lev:) >= qsmall) + rei_grid(:ngrdcol,top_lev:) = 1.5_r8/rei_grid(:ngrdcol,top_lev:) & + * 1.e6_r8 + elsewhere + rei_grid(:ngrdcol,top_lev:) = 25._r8 + end where + + dei_grid = rei_grid * rhoi/rhows * 2._r8 + + ! Limiters for low cloud fraction. + do k = top_lev, pver + do i = 1, ngrdcol + ! Convert snow effective diameter to microns + des_grid(i,k) = des_grid(i,k) * 1.e6_r8 + if ( ast_grid(i,k) < 1.e-4_r8 ) then + mu_grid(i,k) = mucon + lambdac_grid(i,k) = (mucon + 1._r8)/dcon + dei_grid(i,k) = deicon + end if + end do + end do + + mgreffrain_grid(:ngrdcol,top_lev:pver) = reff_rain_grid(:ngrdcol,top_lev:pver) + mgreffsnow_grid(:ngrdcol,top_lev:pver) = reff_snow_grid(:ngrdcol,top_lev:pver) + + ! ------------------------------------- ! + ! Precipitation efficiency Calculation ! + ! ------------------------------------- ! + + !----------------------------------------------------------------------- + ! Liquid water path + + ! Compute liquid water paths, and column condensation + tgliqwp_grid(:ngrdcol) = 0._r8 + tgcmeliq_grid(:ngrdcol) = 0._r8 + do k = top_lev, pver + do i = 1, ngrdcol + tgliqwp_grid(i) = tgliqwp_grid(i) + iclwpst_grid(i,k)*cld_grid(i,k) + + if (cmeliq_grid(i,k) > 1.e-12_r8) then + !convert cmeliq to right units: kgh2o/kgair/s * kgair/m2 / kgh2o/m3 = m/s + tgcmeliq_grid(i) = tgcmeliq_grid(i) + cmeliq_grid(i,k) * & + (pdel_grid(i,k) / gravit) / rhoh2o + end if + end do + end do + + ! note: 1e-6 kgho2/kgair/s * 1000. pa / (9.81 m/s2) / 1000 kgh2o/m3 = 1e-7 m/s + ! this is 1ppmv of h2o in 10hpa + ! alternatively: 0.1 mm/day * 1.e-4 m/mm * 1/86400 day/s = 1.e-9 + + !----------------------------------------------------------------------- + ! precipitation efficiency calculation (accumulate cme and precip) + + minlwp = 0.01_r8 !minimum lwp threshold (kg/m3) + + ! zero out precip efficiency and total averaged precip + pe_grid(:ngrdcol) = 0._r8 + tpr_grid(:ngrdcol) = 0._r8 + pefrac_grid(:ngrdcol) = 0._r8 + + ! accumulate precip and condensation + do i = 1, ngrdcol + + acgcme_grid(i) = acgcme_grid(i) + tgcmeliq_grid(i) + acprecl_grid(i) = acprecl_grid(i) + prec_str_grid(i) + acnum_grid(i) = acnum_grid(i) + 1 + + ! if LWP is zero, then 'end of cloud': calculate precip efficiency + if (tgliqwp_grid(i) < minlwp) then + if (acprecl_grid(i) > 5.e-8_r8) then + tpr_grid(i) = max(acprecl_grid(i)/acnum_grid(i), 1.e-15_r8) + if (acgcme_grid(i) > 1.e-10_r8) then + pe_grid(i) = min(max(acprecl_grid(i)/acgcme_grid(i), 1.e-15_r8), 1.e5_r8) + pefrac_grid(i) = 1._r8 + end if + end if + + ! reset counters +! if (pe_grid(i) /= 0._r8 .and. (pe_grid(i) < 1.e-8_r8 .or. pe_grid(i) > 1.e3_r8)) then +! write (iulog,*) 'PE_grid:ANOMALY pe_grid, acprecl_grid, acgcme_grid, tpr_grid, acnum_grid ', & +! pe_grid(i),acprecl_grid(i), acgcme_grid(i), tpr_grid(i), acnum_grid(i) +! endif + + acprecl_grid(i) = 0._r8 + acgcme_grid(i) = 0._r8 + acnum_grid(i) = 0 + end if ! end LWP zero conditional + + ! if never find any rain....(after 10^3 timesteps...) + if (acnum_grid(i) > 1000) then + acnum_grid(i) = 0 + acprecl_grid(i) = 0._r8 + acgcme_grid(i) = 0._r8 + end if + + end do + + !----------------------------------------------------------------------- + ! vertical average of non-zero accretion, autoconversion and ratio. + ! vars: vprco_grid(i),vprao_grid(i),racau_grid(i),cnt_grid + + vprao_grid = 0._r8 + cnt_grid = 0 + do k = top_lev, pver + vprao_grid(:ngrdcol) = vprao_grid(:ngrdcol) + prao_grid(:ngrdcol,k) + where (prao_grid(:ngrdcol,k) /= 0._r8) cnt_grid(:ngrdcol) = cnt_grid(:ngrdcol) + 1 + end do + + where (cnt_grid > 0) vprao_grid = vprao_grid/cnt_grid + + vprco_grid = 0._r8 + cnt_grid = 0 + do k = top_lev, pver + vprco_grid(:ngrdcol) = vprco_grid(:ngrdcol) + prco_grid(:ngrdcol,k) + where (prco_grid(:ngrdcol,k) /= 0._r8) cnt_grid(:ngrdcol) = cnt_grid(:ngrdcol) + 1 + end do + + where (cnt_grid > 0) + vprco_grid = vprco_grid/cnt_grid + racau_grid = vprao_grid/vprco_grid + elsewhere + racau_grid = 0._r8 + end where + + racau_grid = min(racau_grid, 1.e10_r8) + +!----------------------------------------------------------------------- +! Diagnostic Rainbow Calculation. Seriously. +!----------------------------------------------------------------------- + + do i = 1, ngrdcol + + top_idx = pver + convmx = 0._r8 + frlow = 0._r8 + cldmx = 0._r8 + cldtot = maxval(ast(i,top_lev:)) + +! Find levels in surface layer + do k = top_lev, pver + if (state%pmid(i,k) > rb_pmin) then + top_idx = min(k,top_idx) + end if + end do + +!For all fractional precip calculated below, use maximum in surface layer. +!For convective precip, base on convective cloud area + convmx = maxval(concld(i,top_idx:)) +!For stratiform precip, base on precip fraction + cldmx= maxval(freqr(i,top_idx:)) +! Combine and use maximum of strat or conv fraction + frlow= max(cldmx,convmx) + +!max precip + rmax=maxval(qrout_grid(i,top_idx:)) + +! Stratiform precip mixing ratio OR some convective precip +! (rval = true if any sig precip) + + rval = ((precc(i) > rb_rcmin) .or. (rmax > rb_rmin)) + +!Now can find conditions for a rainbow: +! Maximum cloud cover (CLDTOT) < 0.5 +! 48 < SZA < 90 +! freqr (below rb_pmin) > 0.25 +! Some rain (liquid > 1.e-6 kg/kg, convective precip > 1.e-7 m/s + + if ((cldtot < 0.5_r8) .and. (sza(i) > 48._r8) .and. (sza(i) < 90._r8) .and. rval) then + +!Rainbow 'probability' (area) derived from solid angle theory +!as the fraction of the hemisphere for a spherical cap with angle phi=sza-48. +! This is only valid between 48 < sza < 90 (controlled for above). + + rbfrac(i) = max(0._r8,(1._r8-COS((sza(i)-48._r8)*deg2rad))/2._r8) * frlow + rbfreq(i) = 1.0_r8 + end if + + end do ! end column loop for rainbows + + call history_out_field('RBFRAC', rbfrac) ! subcols + call history_out_field('RBFREQ', rbfreq) ! subcols + + + ! --------------------- ! + ! History Output Fields ! + ! --------------------- ! + + ! Column droplet concentration + cdnumc_grid(:ngrdcol) = sum(nc_grid(:ngrdcol,top_lev:pver) * & + pdel_grid(:ngrdcol,top_lev:pver)/gravit, dim=2) + + ! Averaging for new output fields + efcout_grid = 0._r8 + efiout_grid = 0._r8 + ncout_grid = 0._r8 + niout_grid = 0._r8 + freql_grid = 0._r8 + freqi_grid = 0._r8 + icwmrst_grid_out = 0._r8 + icimrst_grid_out = 0._r8 + freqm_grid = 0._r8 + freqsl_grid = 0._r8 + freqslm_grid = 0._r8 + + do k = top_lev, pver + do i = 1, ngrdcol + if ( liqcldf_grid(i,k) > 0.01_r8 .and. icwmrst_grid(i,k) > 5.e-5_r8 ) then + efcout_grid(i,k) = rel_grid(i,k) * liqcldf_grid(i,k) + ncout_grid(i,k) = icwnc_grid(i,k) * liqcldf_grid(i,k) + freql_grid(i,k) = liqcldf_grid(i,k) + icwmrst_grid_out(i,k) = icwmrst_grid(i,k) + end if + if ( icecldf_grid(i,k) > 0.01_r8 .and. icimrst_grid(i,k) > 1.e-6_r8 ) then + efiout_grid(i,k) = rei_grid(i,k) * icecldf_grid(i,k) + niout_grid(i,k) = icinc_grid(i,k) * icecldf_grid(i,k) + freqi_grid(i,k) = icecldf_grid(i,k) + icimrst_grid_out(i,k) = icimrst_grid(i,k) + end if + + ! Supercooled liquid + if (freql_grid(i,k) > 0.01_r8 .and. freqi_grid(i,k) > 0.01_r8 ) then + freqm_grid(i,k)=min(liqcldf_grid(i,k),icecldf_grid(i,k)) + end if + if (freql_grid(i,k) > 0.01_r8 .and. freqi_grid(i,k) < 0.01_r8 .and. state_loc%t(i,k) < tmelt ) then + freqsl_grid(i,k)=liqcldf_grid(i,k) + end if + if (freql_grid(i,k) > 0.01_r8 .and. freqi_grid(i,k) > 0.01_r8 .and. state_loc%t(i,k) < tmelt ) then + freqslm_grid(i,k)=liqcldf_grid(i,k) + end if + + end do + end do + + ! Cloud top effective radius and number. + fcti_grid = 0._r8 + fctl_grid = 0._r8 + ctrel_grid = 0._r8 + ctrei_grid = 0._r8 + ctnl_grid = 0._r8 + ctni_grid = 0._r8 + fctm_grid = 0._r8 + fctsl_grid = 0._r8 + fctslm_grid= 0._r8 + + do i = 1, ngrdcol + do k = top_lev, pver + if ( liqcldf_grid(i,k) > 0.01_r8 .and. icwmrst_grid(i,k) > 1.e-7_r8 ) then + ctrel_grid(i) = rel_grid(i,k) * liqcldf_grid(i,k) + ctnl_grid(i) = icwnc_grid(i,k) * liqcldf_grid(i,k) + fctl_grid(i) = liqcldf_grid(i,k) + + ! Cloud Top Mixed phase, supercooled liquid only and supercooled liquid mixed + if (freqi_grid(i,k) > 0.01_r8) then + fctm_grid(i)=min(liqcldf_grid(i,k),icecldf_grid(i,k)) + end if + if (freqi_grid(i,k) < 0.01_r8 .and. state_loc%t(i,k) < tmelt ) then + fctsl_grid(i)=liqcldf_grid(i,k) + end if + if (freqi_grid(i,k) > 0.01_r8 .and. state_loc%t(i,k) < tmelt ) then + fctslm_grid(i)=liqcldf_grid(i,k) + end if + + exit + end if + + if ( icecldf_grid(i,k) > 0.01_r8 .and. icimrst_grid(i,k) > 1.e-7_r8 ) then + ctrei_grid(i) = rei_grid(i,k) * icecldf_grid(i,k) + ctni_grid(i) = icinc_grid(i,k) * icecldf_grid(i,k) + fcti_grid(i) = icecldf_grid(i,k) + exit + end if + end do + end do + + ! Evaporation of stratiform precipitation fields for UNICON + evprain_st_grid(:ngrdcol,:pver) = nevapr_grid(:ngrdcol,:pver) - evpsnow_st_grid(:ngrdcol,:pver) + do k = top_lev, pver + do i = 1, ngrdcol + evprain_st_grid(i,k) = max(evprain_st_grid(i,k), 0._r8) + evpsnow_st_grid(i,k) = max(evpsnow_st_grid(i,k), 0._r8) + end do + end do + + ! Assign the values to the pbuf pointers if they exist in pbuf + if (qrain_idx > 0) qrout_grid_ptr = qrout_grid + if (qsnow_idx > 0) qsout_grid_ptr = qsout_grid + if (nrain_idx > 0) nrout_grid_ptr = nrout_grid + if (nsnow_idx > 0) nsout_grid_ptr = nsout_grid + if (qcsedten_idx > 0) qcsedtenout_grid_ptr = qcsedtenout_grid + if (qrsedten_idx > 0) qrsedtenout_grid_ptr = qrsedtenout_grid + if (qisedten_idx > 0) qisedtenout_grid_ptr = qisedtenout_grid + if (qssedten_idx > 0) qssedtenout_grid_ptr = qssedtenout_grid + if (vtrmc_idx > 0) vtrmcout_grid_ptr = vtrmcout_grid + if (umr_idx > 0) umrout_grid_ptr = umrout_grid + if (vtrmi_idx > 0) vtrmiout_grid_ptr = vtrmiout_grid + if (ums_idx > 0) umsout_grid_ptr = umsout_grid + if (qcsevap_idx > 0 ) qcsevapout_grid_ptr = qcsevapout_grid + if (qisevap_idx > 0 ) qisevapout_grid_ptr = qisevapout_grid + + ! --------------------------------------------- ! + ! General outfield calls for microphysics ! + ! --------------------------------------------- ! + + ! Output a handle of variables which are calculated on the fly + + ftem_grid = 0._r8 + + ftem_grid(:ngrdcol,top_lev:pver) = qcreso_grid(:ngrdcol,top_lev:pver) + call history_out_field( 'MPDW2V', ftem_grid) + + ftem_grid(:ngrdcol,top_lev:pver) = melto_grid(:ngrdcol,top_lev:pver) - mnuccco_grid(:ngrdcol,top_lev:pver)& + - mnuccto_grid(:ngrdcol,top_lev:pver) - bergo_grid(:ngrdcol,top_lev:pver) - homoo_grid(:ngrdcol,top_lev:pver)& + - msacwio_grid(:ngrdcol,top_lev:pver) + call history_out_field( 'MPDW2I', ftem_grid) + + if (micro_mg_version > 2) then + ftem_grid(:ngrdcol,top_lev:pver) = -prao_grid(:ngrdcol,top_lev:pver) - prco_grid(:ngrdcol,top_lev:pver)& + - psacwso_grid(:ngrdcol,top_lev:pver) - bergso_grid(:ngrdcol,top_lev:pver)& + - psacwgo_grid(:ngrdcol,top_lev:pver) - pgsacwo_grid(:ngrdcol,top_lev:pver) + else + ftem_grid(:ngrdcol,top_lev:pver) = -prao_grid(:ngrdcol,top_lev:pver) - prco_grid(:ngrdcol,top_lev:pver)& + - psacwso_grid(:ngrdcol,top_lev:pver) - bergso_grid(:ngrdcol,top_lev:pver) + endif + + call history_out_field( 'MPDW2P', ftem_grid) + + ftem_grid(:ngrdcol,top_lev:pver) = cmeiout_grid(:ngrdcol,top_lev:pver) + qireso_grid(:ngrdcol,top_lev:pver) + call history_out_field( 'MPDI2V', ftem_grid) + + if (micro_mg_version > 2) then + ftem_grid(:ngrdcol,top_lev:pver) = -melto_grid(:ngrdcol,top_lev:pver) + mnuccco_grid(:ngrdcol,top_lev:pver) & + + mnuccto_grid(:ngrdcol,top_lev:pver) + bergo_grid(:ngrdcol,top_lev:pver) + homoo_grid(:ngrdcol,top_lev:pver)& + + msacwio_grid(:ngrdcol,top_lev:pver)& + - qmultgo_grid(:ngrdcol,top_lev:pver) + else + ftem_grid(:ngrdcol,top_lev:pver) = -melto_grid(:ngrdcol,top_lev:pver) + mnuccco_grid(:ngrdcol,top_lev:pver) & + + mnuccto_grid(:ngrdcol,top_lev:pver) + bergo_grid(:ngrdcol,top_lev:pver) + homoo_grid(:ngrdcol,top_lev:pver)& + + msacwio_grid(:ngrdcol,top_lev:pver) + endif + + call history_out_field( 'MPDI2W', ftem_grid) + + ftem_grid(:ngrdcol,top_lev:pver) = -prcio_grid(:ngrdcol,top_lev:pver) - praio_grid(:ngrdcol,top_lev:pver) + call history_out_field( 'MPDI2P', ftem_grid) + + ! Output fields which have not been averaged already, averaging if use_subcol_microp is true + if (trim(micro_mg_warm_rain) == 'tau' .or. trim(micro_mg_warm_rain) == 'emulated') then + call history_out_field('scale_qc', proc_rates%scale_qc) ! subcols + call history_out_field('scale_nc', proc_rates%scale_nc) ! subcols + call history_out_field('scale_qr', proc_rates%scale_qr) ! subcols + call history_out_field('scale_nr', proc_rates%scale_nr) ! subcols + call history_out_field('amk_c', proc_rates%amk_c) ! subcols + call history_out_field('ank_c', proc_rates%ank_c) ! subcols + call history_out_field('amk_r', proc_rates%amk_r) ! subcols + call history_out_field('ank_r', proc_rates%ank_r) ! subcols + call history_out_field('amk', proc_rates%amk) ! subcols + call history_out_field('ank', proc_rates%ank) ! subcols + call history_out_field('amk_out', proc_rates%amk_out) ! subcols + call history_out_field('ank_out', proc_rates%ank_out) ! subcols + call history_out_field('QC_TAU_out', proc_rates%qc_out_TAU) ! subcols + call history_out_field('NC_TAU_out', proc_rates%nc_out_TAU) ! subcols + call history_out_field('QR_TAU_out', proc_rates%qr_out_TAU) ! subcols + call history_out_field('NR_TAU_out', proc_rates%nr_out_TAU) ! subcols + call history_out_field('qctend_TAU', proc_rates%qctend_TAU) ! subcols + call history_out_field('nctend_TAU', proc_rates%nctend_TAU) ! subcols + call history_out_field('qrtend_TAU', proc_rates%qrtend_TAU) ! subcols + call history_out_field('nrtend_TAU', proc_rates%nrtend_TAU) ! subcols + call history_out_field('gmnnn_lmnnn_TAU', proc_rates%gmnnn_lmnnn_TAU) ! subcols + call history_out_field('ML_fixer', proc_rates%ML_fixer) ! subcols + call history_out_field('qc_fixer', proc_rates%qc_fixer) ! subcols + call history_out_field('nc_fixer', proc_rates%nc_fixer) ! subcols + call history_out_field('qr_fixer', proc_rates%qr_fixer) ! subcols + call history_out_field('nr_fixer', proc_rates%nr_fixer) ! subcols + call history_out_field('QC_TAU_in', proc_rates%qc_in_TAU) ! subcols + call history_out_field('NC_TAU_in', proc_rates%nc_in_TAU) ! subcols + call history_out_field('QR_TAU_in', proc_rates%qr_in_TAU) ! subcols + call history_out_field('NR_TAU_in', proc_rates%nr_in_TAU) ! subcols + end if + + if (trim(micro_mg_warm_rain) == 'sb2001') then + call history_out_field('qctend_SB2001', proc_rates%qctend_SB2001) ! subcols + call history_out_field('nctend_SB2001', proc_rates%nctend_SB2001) ! subcols + call history_out_field('qrtend_SB2001', proc_rates%qrtend_SB2001) ! subcols + call history_out_field('nrtend_SB2001', proc_rates%nrtend_SB2001) ! subcols + end if + if (trim(micro_mg_warm_rain) == 'kk2000') then + call history_out_field('qctend_KK2000', proc_rates%qctend_KK2000) ! subcols + call history_out_field('nctend_KK2000', proc_rates%nctend_KK2000) ! subcols + call history_out_field('qrtend_KK2000', proc_rates%qrtend_KK2000) ! subcols + call history_out_field('nrtend_KK2000', proc_rates%nrtend_KK2000) ! subcols + end if + call history_out_field('LAMC', proc_rates%lamc_out) ! subcols + call history_out_field('LAMR', proc_rates%lamr_out) ! subcols + call history_out_field('PGAM', proc_rates%pgam_out) ! subcols + call history_out_field('N0R', proc_rates%n0r_out) ! subcols + + call history_out_field('MPICLWPI', iclwpi) ! subcols + call history_out_field('MPICIWPI', iciwpi) ! subcols + call history_out_field('REFL', refl) ! subcols + call history_out_field('AREFL', arefl) ! subcols + call history_out_field('AREFLZ', areflz) ! subcols + call history_out_field('FREFL', frefl) ! subcols + call history_out_field('CSRFL', csrfl) ! subcols + call history_out_field('ACSRFL', acsrfl) ! subcols + call history_out_field('FCSRFL', fcsrfl) ! subcols + call history_out_field('REFL10CM', refl10cm) ! subcols + call history_out_field('REFLZ10CM', reflz10cm) ! subcols + call history_out_field('RERCLD', rercld) ! subcols + call history_out_field('NCAL', ncal) ! subcols + call history_out_field('NCAI', ncai) ! subcols + call history_out_field('AQRAIN', qrout2) ! subcols + call history_out_field('AQSNOW', qsout2) ! subcols + call history_out_field('ANRAIN', nrout2) ! subcols + call history_out_field('ANSNOW', nsout2) ! subcols + call history_out_field('FREQR', freqr) ! subcols + call history_out_field('FREQS', freqs) ! subcols + call history_out_field('MPDT', tlat) ! subcols + call history_out_field('MPDQ', qvlat) ! subcols + call history_out_field('MPDLIQ', qcten) ! subcols + call history_out_field('MPDICE', qiten) ! subcols + call history_out_field('MPDNLIQ', ncten) ! subcols + call history_out_field('MPDNICE', niten) ! subcols + call history_out_field('EVAPSNOW', proc_rates%evapsnow) ! subcols + call history_out_field('QCSEVAP', proc_rates%qcsevap) ! subcols + call history_out_field('QISEVAP', proc_rates%qisevap) ! subcols + call history_out_field('QVRES', proc_rates%qvres) ! subcols + call history_out_field('VTRMC', proc_rates%vtrmc) ! subcols + call history_out_field('VTRMI', proc_rates%vtrmi) ! subcols + call history_out_field('QCSEDTEN', proc_rates%qcsedten) ! subcols + call history_out_field('QISEDTEN', proc_rates%qisedten) ! subcols + call history_out_field('QRSEDTEN', proc_rates%qrsedten) ! subcols + call history_out_field('QSSEDTEN', proc_rates%qssedten) ! subcols + call history_out_field('MNUCCRIO', proc_rates%mnuccritot) ! subcols + call history_out_field('MNUDEPO', proc_rates%mnudeptot) ! subcols + call history_out_field('MELTSTOT', proc_rates%meltstot) ! subcols + call history_out_field('MNUCCDO', proc_rates%mnuccdtot) ! subcols + call history_out_field('MNUCCDOhet', mnuccdohet) ! subcols + call history_out_field('MNUCCRO', proc_rates%mnuccrtot) ! subcols + call history_out_field('PRACSO', proc_rates%pracstot ) ! subcols + call history_out_field('VAPDEPSO', proc_rates%vapdepstot) ! subcols + call history_out_field('MELTSDT', proc_rates%meltsdttot) ! subcols + call history_out_field('FRZRDT', proc_rates%frzrdttot ) ! subcols + call history_out_field('FICE', nfice) ! subcols + call history_out_field('CLDFSNOW', cldfsnow) ! subcols + call history_out_field ('NNUCCCO', proc_rates%nnuccctot ) ! subcols + call history_out_field ('NNUCCTO', proc_rates%nnuccttot ) ! subcols + call history_out_field ('NNUCCDO', proc_rates%nnuccdtot ) ! subcols + call history_out_field ('NNUDEPO', proc_rates%nnudeptot ) ! subcols + call history_out_field ('NHOMO', proc_rates%nhomotot ) ! subcols + call history_out_field ('NNUCCRO', proc_rates%nnuccrtot ) ! subcols + call history_out_field ('NNUCCRIO', proc_rates%nnuccritot ) ! subcols + call history_out_field ('NSACWIO', proc_rates%nsacwitot ) ! subcols + call history_out_field ('NPRAO', proc_rates%npratot ) ! subcols + call history_out_field ('NPSACWSO', proc_rates%npsacwstot ) ! subcols + call history_out_field ('NPRAIO', proc_rates%npraitot ) ! subcols + call history_out_field ('NPRACSO', proc_rates%npracstot ) ! subcols + call history_out_field ('NPRCO', proc_rates%nprctot ) ! subcols + call history_out_field ('NPRCIO', proc_rates%nprcitot ) ! subcols + call history_out_field ('NCSEDTEN', proc_rates%ncsedten ) ! subcols + call history_out_field ('NISEDTEN', proc_rates%nisedten ) ! subcols + call history_out_field ('NRSEDTEN', proc_rates%nrsedten ) ! subcols + call history_out_field ('NSSEDTEN', proc_rates%nssedten ) ! subcols + call history_out_field ('NMELTO', proc_rates%nmelttot ) ! subcols + call history_out_field ('NMELTS', proc_rates%nmeltstot ) ! subcols + + call history_out_field('UMR', proc_rates%umr) ! subcols + call history_out_field('UMS', proc_rates%ums) ! subcols + + call history_out_field('QCRAT', qcrat) ! subcols + + if (micro_mg_version > 2) then + call history_out_field('UMG', proc_rates%umg) ! subcols + call history_out_field('QGSEDTEN', proc_rates%qgsedten) ! subcols + call history_out_field('FREQG', freqg) ! subcols + call history_out_field('AQGRAU', qgout2) ! subcols + call history_out_field('ANGRAU', ngout2) ! subcols + call history_out_field('CLDFGRAU', cldfgrau) ! subcols + call history_out_field('MELTGTOT', proc_rates%meltgtot) ! subcols + call history_out_field('NMELTG', proc_rates%nmeltgtot) ! subcols + call history_out_field('NGSEDTEN', proc_rates%ngsedten ) ! subcols + + end if + + ! Example subcolumn history_out_field call + if (use_subcol_microp) then + call history_out_field('FICE_SCOL', nfice) ! subcols + call history_out_field('MPDLIQ_SCOL', ptend%q(:,:,ixcldliq)) ! subcols + call history_out_field('MPDICE_SCOL', qiten) ! subcols + end if + + ! Output fields which are already on the grid + call history_out_field('QRAIN', qrout_grid) + call history_out_field('QSNOW', qsout_grid) + call history_out_field('NRAIN', nrout_grid) + call history_out_field('NSNOW', nsout_grid) + call history_out_field('CV_REFFLIQ', cvreffliq_grid) + call history_out_field('CV_REFFICE', cvreffice_grid) + call history_out_field('LS_FLXPRC', mgflxprc_grid) + call history_out_field('LS_FLXSNW', mgflxsnw_grid) + call history_out_field('CME', qme_grid) + call history_out_field('PRODPREC', prain_grid) + call history_out_field('EVAPPREC', nevapr_grid) + call history_out_field('QCRESO', qcreso_grid) + call history_out_field('LS_REFFRAIN', mgreffrain_grid) + call history_out_field('LS_REFFSNOW', mgreffsnow_grid) + call history_out_field('DSNOW', des_grid) + call history_out_field('ADRAIN', drout2_grid) + call history_out_field('ADSNOW', dsout2_grid) + call history_out_field('PE', pe_grid) + call history_out_field('PEFRAC', pefrac_grid) + call history_out_field('APRL', tpr_grid) + call history_out_field('VPRAO', vprao_grid) + call history_out_field('VPRCO', vprco_grid) + call history_out_field('RACAU', racau_grid) + call history_out_field('AREL', efcout_grid) + call history_out_field('AREI', efiout_grid) + call history_out_field('AWNC' , ncout_grid) + call history_out_field('AWNI' , niout_grid) + call history_out_field('FREQL', freql_grid) + call history_out_field('FREQI', freqi_grid) + call history_out_field('ACTREL', ctrel_grid) + call history_out_field('ACTREI', ctrei_grid) + call history_out_field('ACTNL', ctnl_grid) + call history_out_field('ACTNI', ctni_grid) + call history_out_field('FCTL', fctl_grid) + call history_out_field('FCTI', fcti_grid) + call history_out_field('ICINC', icinc_grid) + call history_out_field('ICWNC', icwnc_grid) + call history_out_field('EFFLIQ_IND', rel_fn_grid) + call history_out_field('CDNUMC', cdnumc_grid) + call history_out_field('REL', rel_grid) + call history_out_field('REI', rei_grid) + call history_out_field('MG_SADICE', sadice_grid) + call history_out_field('MG_SADSNOW', sadsnow_grid) + call history_out_field('ICIMRST', icimrst_grid_out) + call history_out_field('ICWMRST', icwmrst_grid_out) + call history_out_field('CMEIOUT', cmeiout_grid) + call history_out_field('PRAO', prao_grid) + call history_out_field('PRCO', prco_grid) + call history_out_field('MNUCCCO', mnuccco_grid) + call history_out_field('MNUCCTO', mnuccto_grid) + call history_out_field('MSACWIO', msacwio_grid) + call history_out_field('PSACWSO', psacwso_grid) + call history_out_field('BERGSO', bergso_grid) + call history_out_field('BERGO', bergo_grid) + call history_out_field('MELTO', melto_grid) + call history_out_field('HOMOO', homoo_grid) + call history_out_field('PRCIO', prcio_grid) + call history_out_field('PRAIO', praio_grid) + call history_out_field('QIRESO', qireso_grid) + call history_out_field('FREQM', freqm_grid) + call history_out_field('FREQSL', freqsl_grid) + call history_out_field('FREQSLM', freqslm_grid) + call history_out_field('FCTM', fctm_grid) + call history_out_field('FCTSL', fctsl_grid) + call history_out_field('FCTSLM', fctslm_grid) + + if (micro_mg_version > 2) then + call history_out_field('PRACGO', pracgo_grid) + call history_out_field('PSACRO', psacro_grid) + call history_out_field('PSACWGO', psacwgo_grid) + call history_out_field('PGSACWO', pgsacwo_grid) + call history_out_field('PGRACSO', pgracso_grid) + call history_out_field('PRDGO', prdgo_grid) + call history_out_field('QMULTGO', qmultgo_grid) + call history_out_field('QMULTRGO', qmultrgo_grid) + call history_out_field('LS_REFFGRAU', reff_grau_grid) + call history_out_field ('NPRACGO', npracgo_grid) + call history_out_field ('NSCNGO', nscngo_grid) + call history_out_field ('NGRACSO', ngracso_grid) + call history_out_field ('NMULTGO', nmultgo_grid) + call history_out_field ('NMULTRGO', nmultrgo_grid) + call history_out_field ('NPSACWGO', npsacwgo_grid) + end if + + if (micro_mg_adjust_cpt) then + cp_rh(:ncol, :pver) = 0._r8 + + do i = 1, ncol + + ! Calculate the RH including any T change that we make. + do k = top_lev, pver + call qsat(state_loc%t(i,k), state_loc%pmid(i,k), es, qs) + cp_rh(i,k) = state_loc%q(i, k, ixq) / qs * 100._r8 + end do + end do + + call history_out_field("TROPF_RHADJ", cp_rh) + end if + + ! deallocate the temporary pbuf grid variable which was allocated if subcolumns are not used + if (.not. use_subcol_microp) then + deallocate(bergso_grid) + end if + + ! deallocate the proc_rates DDT + call proc_rates%deallocate(micro_mg_warm_rain) + + ! ptend_loc is deallocated in physics_update above + call physics_state_dealloc(state_loc) + + if (qsatfac_idx <= 0) then + deallocate(qsatfac) + end if + +end subroutine pumas_diagnostics_run +#end if + +end module pumas_diagnostics diff --git a/schemes/sima_diagnostics/pumas_diagnostics_calling.F90 b/schemes/sima_diagnostics/pumas_diagnostics_calling.F90 new file mode 100644 index 00000000..623d0ec1 --- /dev/null +++ b/schemes/sima_diagnostics/pumas_diagnostics_calling.F90 @@ -0,0 +1,143 @@ +REVIEWERS - This is a work in progress. Please save reviews until a future PR + +module pumas_diagnostics_calling + + use ccpp_kinds, only: kind_phys + + implicit none + private + save + + public :: pumas_diagnostics_init ! init routine + public :: pumas_diagnostics_run ! main routine + +CONTAINS + + + + !> \section arg_table_pumas_diagnostics_init Argument Table + !! \htmlinclude pumas_diagnostics_init.html + subroutine pumas_diagnostics_init(errmsg, errflg) + use cam_history, only: history_add_field + use cam_history_support, only: horiz_only + + character(len=512), intent(out) :: errmsg + integer, intent(out) :: errflg + + ! Local variables: + + errmsg = '' + errflg = 0 + + + + end subroutine pumas_diagnostics_init + + !> \section arg_table_pumas_diagnostics_run Argument Table + !! \htmlinclude pumas_diagnostics_run.html + subroutine pumas_diagnostics_run(proc_rates,qcsinksum_rate1ord,naai,npccn,rndst,nacon,tlat,qvlat,qctend,qitend,nctend, & + nitend,qrtend,qstend, & + nrtend,nstend,qgtend,ngtend,effc,effc_fn,effi,sadice,sadsnow,prect,preci,nevapr,am_evp_st, & + prain,cmeout,deffi,pgamrad,lamcrad,qsout,dsout,qgout,ngout,dgout,lflx,iflx,gflx,rflx,sflx, & + qrout,reff_rain,reff_snow,reff_grau,nrout,nsout,refl,arefl,areflz,frefl,csrfl,acsrfl,fcsrfl,& + refl10cm, reflz10cm,rercld,ncai,ncal,qrout2,qsout2,nrout2,nsout2,drout2,dsout2,qgout2, & + ngout2,dgout2, & + freqg,freqs,freqr,nfice,qcrat,prer_evap, & + errmsg, errflg) + + use cam_history, only: history_in_field + + type (proc_rates_type), intent(inout) :: proc_rates + + real(kind_phys), intent(in) :: qcsinksum_rate1ord(:,:) ! 1st order rate for direct cw to precip conversion + real(kind_phys), intent(in) :: tlat(:,:) ! latent heating rate (W/kg) + real(kind_phys), intent(in) :: qvlat(:,:) ! microphysical tendency qv (1/s) + real(kind_phys), intent(in) :: qctend(:,:) ! microphysical tendency qc (1/s) + real(kind_phys), intent(in) :: qitend(:,:) ! microphysical tendency qi (1/s) + real(kind_phys), intent(in) :: nctend(:,:) ! microphysical tendency nc (1/(kg*s)) + real(kind_phys), intent(in) :: nitend(:,:) ! microphysical tendency ni (1/(kg*s)) + + real(kind_phys), intent(in) :: qrtend(:,:) ! microphysical tendency qr (1/s) + real(kind_phys), intent(in) :: qstend(:,:) ! microphysical tendency qs (1/s) + real(kind_phys), intent(in) :: nrtend(:,:) ! microphysical tendency nr (1/(kg*s)) + real(kind_phys), intent(in) :: nstend(:,:) ! microphysical tendency ns (1/(kg*s)) + real(kind_phys), intent(in) :: qgtend(:,:) ! microphysical tendency qg (1/s) + real(kind_phys), intent(in) :: ngtend(:,:) ! microphysical tendency ng (1/(kg*s)) + + real(kind_phys), intent(in) :: effc(:,:) ! droplet effective radius (micron) + real(kind_phys), intent(in) :: effc_fn(:,:) ! droplet effective radius, assuming nc = 1.e8 kg-1 + real(kind_phys), intent(in) :: effi(:,:) ! cloud ice effective radius (micron) + real(kind_phys), intent(in) :: sadice(:,:) ! cloud ice surface area density (cm2/cm3) + real(kind_phys), intent(in) :: sadsnow(:,:) ! cloud snow surface area density (cm2/cm3) + real(kind_phys), intent(in) :: prect(:) ! surface precip rate (m/s) + real(kind_phys), intent(in) :: preci(:) ! surface ice/snow precip rate (m/s) + real(kind_phys), intent(in) :: nevapr(:,:) ! evaporation rate of rain + snow (kg/kg/s) + real(kind_phys), intent(in) :: am_evp_st(:,:) ! stratiform evaporation area (frac) + real(kind_phys), intent(in) :: prain(:,:) ! production of rain + snow (kg/kg/s) + real(kind_phys), intent(in) :: cmeout(:,:) ! Rate of cond-evap of ice (kg/kg/s) + real(kind_phys), intent(in) :: deffi(:,:) ! ice effective diameter for optics (radiation) (micron) + real(kind_phys), intent(in) :: pgamrad(:,:) ! ice gamma parameter for optics (radiation) (no units) + real(kind_phys), intent(in) :: lamcrad(:,:) ! slope of droplet distribution for optics (radiation) (1/m) + real(kind_phys), intent(in) :: qsout(:,:) ! snow mixing ratio (kg/kg) + real(kind_phys), intent(in) :: dsout(:,:) ! snow diameter (m) + real(kind_phys), intent(in) :: lflx(:,:) ! grid-box average liquid condensate flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: iflx(:,:) ! grid-box average ice condensate flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: rflx(:,:) ! grid-box average rain flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: sflx(:,:) ! grid-box average snow flux (kg m^-2 s^-1) + real(kind_phys), intent(in) :: gflx(:,:) ! grid-box average graupel/hail flux (kg m^-2 s^-1) + + real(kind_phys), intent(in) :: qrout(:,:) ! grid-box average rain mixing ratio (kg/kg) + real(kind_phys), intent(in) :: reff_rain(:,:) ! rain effective radius (micron) + real(kind_phys), intent(in) :: reff_snow(:,:) ! snow effective radius (micron) + real(kind_phys), intent(in) :: reff_grau(:,:) ! graupel effective radius (micron) + + real(kind_phys), intent(in) :: nrout(:,:) ! rain number concentration (1/m3) + real(kind_phys), intent(in) :: nsout(:,:) ! snow number concentration (1/m3) + real(kind_phys), intent(in) :: refl(:,:) ! analytic radar reflectivity (94GHZ, cloud radar) (dBZ) + real(kind_phys), intent(in) :: arefl(:,:) ! average reflectivity will zero points inside valid range (dBZ) + real(kind_phys), intent(in) :: areflz(:,:) ! average reflectivity in z. (mm6 m-3) + real(kind_phys), intent(in) :: frefl(:,:) ! fractional occurrence of radar reflectivity + real(kind_phys), intent(in) :: csrfl(:,:) ! cloudsat reflectivity (dBZ) + real(kind_phys), intent(in) :: acsrfl(:,:) ! cloudsat average (dBZ) + real(kind_phys), intent(in) :: fcsrfl(:,:) ! cloudsat fractional occurrence of radar reflectivity + real(kind_phys), intent(in) :: refl10cm(:,:) ! 10cm (rain) analytic radar reflectivity (dBZ) + real(kind_phys), intent(in) :: reflz10cm(:,:) ! 10cm (rain) analytic radar reflectivity (mm6 m-3) + real(kind_phys), intent(in) :: rercld(:,:) ! effective radius calculation for rain + cloud + real(kind_phys), intent(in) :: ncai(:,:) ! input number conc of ice nuclei available (1/m3) + real(kind_phys), intent(in) :: ncal(:,:) ! input number conc of CCN (1/m3) + real(kind_phys), intent(in) :: qrout2(:,:) ! copy of qrin as used to compute drin2 + real(kind_phys), intent(in) :: qsout2(:,:) ! copy of qsin as used to compute dsin2 + real(kind_phys), intent(in) :: nrout2(:,:) ! copy of nrin as used to compute drin2 + real(kind_phys), intent(in) :: nsout2(:,:) ! copy of nsin as used to compute dsin2 + real(kind_phys), intent(in) :: drout2(:,:) ! mean rain particle diameter (m) + real(kind_phys), intent(in) :: dsout2(:,:) ! mean snow particle diameter (m) + real(kind_phys), intent(in) :: freqs(:,:) ! fractional occurrence of snow + real(kind_phys), intent(in) :: freqr(:,:) ! fractional occurrence of rain + real(kind_phys), intent(in) :: nfice(:,:) ! fraction of frozen water to total condensed water + real(kind_phys), intent(in) :: qcrat(:,:) ! limiter for qc process rates (1=no limit --> 0. no qc) + real(kind_phys), intent(in) :: qgout(:,:) ! graupel/hail mixing ratio (kg/kg) + real(kind_phys), intent(in) :: dgout(:,:) ! graupel/hail diameter (m) + real(kind_phys), intent(in) :: ngout(:,:) ! graupel/hail number concentration (1/m3) + real(kind_phys), intent(in) :: qgout2(:,:) ! copy of qgin as used to compute dgin2 + real(kind_phys), intent(in) :: ngout2(:,:) ! copy of ngin as used to compute dgin2 + real(kind_phys), intent(in) :: dgout2(:,:) ! mean graupel/hail particle diameter (m) + real(kind_phys), intent(in) :: freqg(:,:) ! fractional occurrence of graupel + real(kind_phys), intent(in) :: prer_evap(:,:) ! evaporation rate of rain (kg/kg/s) + + ! CCPP error handling variables + character(len=512), intent(in) :: errmsg + integer, intent(in) :: errflg + + errmsg = '' + errflg = 0 + +!!!!!!!! DIAGNOSTIC CODE GOES HERE !!!!!!!!! + +!! The calls for history_out_field are in the pumas_diagnostcis.F90 file, but also with all of the other pumas code. +!! Those calls need to be hooked up to the parameters in the call list here. +!! There is an issue with subcolumn/grid scale I'm not sure how to address the grid averaging that is done after the +!! pumas_tend function call. + + end subroutine pumas_diagnostics_run + +end module pumas_diagnostics_calling diff --git a/test/test_suites/suite_pumas.xml b/test/test_suites/suite_pumas.xml new file mode 100644 index 00000000..6ba84796 --- /dev/null +++ b/test/test_suites/suite_pumas.xml @@ -0,0 +1,16 @@ + + + + + + pumas_pre_main + + micro_pumas_tempfix + + micro_pumas_ccpp_dimensions_pre + + micro_pumas_ccpp + + micro_pumas_ccpp_dimensions_post + +