From 26fbbff75f8a4ee9f17722658a2c53afeca17d5c Mon Sep 17 00:00:00 2001 From: Haipeng Lin <hplin@ucar.edu> Date: Mon, 25 Nov 2024 11:35:51 -0500 Subject: [PATCH] Remove old suite definition files #166 --- suites/suite_adiabatic.xml | 10 +- suites/suite_cam4.xml | 202 ------------------- suites/suite_cam6.xml | 364 ---------------------------------- suites/suite_cam6_silhs.xml | 379 ------------------------------------ suites/suite_cam7.xml | 10 +- 5 files changed, 14 insertions(+), 951 deletions(-) delete mode 100644 suites/suite_cam4.xml delete mode 100644 suites/suite_cam6.xml delete mode 100644 suites/suite_cam6_silhs.xml diff --git a/suites/suite_adiabatic.xml b/suites/suite_adiabatic.xml index eda9d892..ae4af827 100644 --- a/suites/suite_adiabatic.xml +++ b/suites/suite_adiabatic.xml @@ -7,15 +7,19 @@ <!-- After gmean, output global mean energy diagnostics --> <scheme>check_energy_gmean_diagnostics</scheme> - <!-- Add global mean energy difference as heating (diff between gmean and save_teout) --> + <!-- + Global energy fixer (check_energy_fix) + Add global mean energy difference as heating (diff between gmean and save_teout) + --> <scheme>check_energy_zero_fluxes</scheme> <scheme>check_energy_fix</scheme> <scheme>apply_heating_rate</scheme> <scheme>geopotential_temp</scheme> - - <!-- Check that energy and water change matches the boundary fluxes --> + <!-- Check that energy and water change matches the boundary fluxes, update global energy --> <scheme>check_energy_scaling</scheme> <scheme>check_energy_chng</scheme> + <!-- Global energy fixer diagnostics (must run after check_energy_chng which updates global energies, but before zero_fluxes zeroes out boundary fluxes from energy fixer) --> + <scheme>check_energy_fix_diagnostics</scheme> <!-- Save current total energy from dycore for energy fixer in time step. This requires te_cur to be updated from check_energy_chng first. --> <scheme>check_energy_save_teout</scheme> diff --git a/suites/suite_cam4.xml b/suites/suite_cam4.xml deleted file mode 100644 index c7832514..00000000 --- a/suites/suite_cam4.xml +++ /dev/null @@ -1,202 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<suite name="cam4" version="1.0"> - <group name="physics_bc"> - <!--cam4: deep=ZM, shallow=Hack, macrop=RK, microp=RK, radiation=CAMRT, chem=none --> - <time_split> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. --> - <!-- Negative moisture/tracer check --> - <!-- **************************** --> - <scheme>qneg3</scheme> <!-- This scheme modifies the state directly. Combine with state check? --> - <!-- **************************** --> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. --> - <scheme>diag_state_b4_phys_write</scheme> <!-- Diagnostics --> - <!-- energy and momentum fixer --> - <!-- **************************** --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBF' --> - <scheme>check_energy_fix</scheme> <!-- Only matters if dycore is FV (called "LR" in physics) or SE --> - <scheme>check_energy_cam_update_pre_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations before "chng" call. --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_energy_cam_update_post_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations after "chng" call. --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBP' --> - <!-- **************************** --> - <scheme>diag_conv_tend_ini</scheme> <!-- Initalizes convective-scheme diagnostic outputs --> - <scheme>calc_dtcore</scheme> <!-- diagnostic calculation. Could likely be included in energy fixer scheme. --> - <!-- Dry adiabatic adjustment --> - <!-- **************************** --> - <!-- Technically only needs temperature and humidity as inputs --> - <scheme>dadadj_calc_update</scheme> <!-- Actual dry adiabatic adjustment scheme, with placeholders for CAM updates calculations --> - <!-- **************************** --> - <!-- Zhang-Macfarlane deep convection scheme --> - <!-- **************************** --> - <!-- Is ZM microphysics going to be supported? --> - <!-- Is initalization scheme required (it depends on numerous physics settings? --> - <scheme>zm_convr</scheme> <!-- Actual deep convection routine --> - <scheme>zm_convr_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>zm_conv_evap</scheme> <!-- Actual ZM rain evaporation scheme --> - <scheme>zm_conv_evap_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>momtran</scheme> <!-- Actual ZM momentum transport scheme --> - <scheme>momtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>convtran</scheme> <!-- Actual ZM convective transport scheme --> - <scheme>convtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <!-- Hack shallow convection scheme --> - <!-- **************************** --> - <scheme>cmfmca</scheme> <!-- Actual shallow convective scheme --> - <scheme>cmfmca_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>zm_conv_evap</scheme> <!-- Actual ZM rain evaporation scheme --> - <scheme>zm_conv_evap_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>sslt_rebin_adv</scheme> <!--Only matters if certain sea salt species are present in chemistry package--> - <!-- Rasch-Kristjansson stratiform cloud scheme --> - <!-- **************************** --> - <scheme>tropopause_find</scheme> <!-- Calculate tropopause height, but only if do_psrhmin is True --> - <scheme>cld_sediment_vel</scheme> <!-- Calculate cloud liquid and ice sedimentation velocities --> - <scheme>cld_sediment_tend</scheme> <!-- Calculate tendencies produced by cloud sedimentation --> - <scheme>rk_sed_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>add_conv_detrain_rliq</scheme> <!-- Add convectively-detrained cloud liquid to environment, and reserved liquid back to precipitaton (managed by host model?) --> - <scheme>cldfrc</scheme> <!-- Calculate cloud fraction --> - <scheme>cldfrc_rh2</scheme> <!-- Calculate cloud fraction with perturbed RH (is there a better way to do this, e.g. subcycle?) --> - <scheme>rhdfda_calc</scheme> <!-- Calculate "rhdfda", or the derivative d(RH)/da --> - <scheme>cldfrc_fice</scheme> <!-- Calculate ice cloud fraction --> - <scheme>strat_cond_repartition</scheme> <!-- Re-partition stratiform cloud ice and cloud liquid, and calculate relevant heating rates --> - <scheme>pcond</scheme> <!-- Actual RK macro/micro-physics scheme --> - <scheme>rk_pcond_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>cldfrc</scheme> <!-- Calculate cloud fraction --> - <scheme>cldfrc_diag_output</scheme> <!-- Calculate cloud fraction diagnostics and output them to history file --> - <scheme>cldefr</scheme> <!-- Calculate cloud liquid and ice particle effective radii, and output to history file/host model --> - <!-- **************************** --> - <scheme>convtran</scheme> <!-- Actual ZM convective transport scheme, for constituents in cnst_is_convtran2 --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>diag_phys_writeout</scheme> <!-- Calculate generic atmospheric physics diagnostics and output them to history file --> - <scheme>diag_conv</scheme> <!-- Calculate generic precipitation and convection diagnostics and output them to history file --> - <scheme>cloud_diagnostics_calc</scheme> <!-- Calculate generic cloud diagnostics and output them to history file --> - <!-- CAM-RT radiation scheme --> - <!-- **************************** --> - <scheme>calc_solar_zenith_ang</scheme> <!-- Calculate the solar zenith angle for the given time step --> - <scheme>group_day_night</scheme> <!-- Determine which columns are in the day-side, vs night-side --> - <scheme>calc_col_mean_co2</scheme> <!-- Calculate column mean CO2 values --> - <scheme>eccf_calc</scheme> <!-- Calculate "earth sun distance factor". --> - <scheme>tropopause_find</scheme> <!-- Calculate tropopause height --> - <scheme>calc_col_mean_o2</scheme> <!-- Calculate column mean O2 values --> - <scheme>aer_rad_props_sw</scheme> <!-- Gather/calculate aerosol shortwave optical properties --> - <scheme>radcswmx</scheme> <!-- Actual CAM-RT shortwave radiation parameterization --> - <scheme>rad_sw_diag_output</scheme> <!-- Calculate shortwave diagnostic variables, and output them to history file --> - <scheme>aer_rad_props_lw</scheme> <!-- Gather/calculate aerosol longwave optical properties --> - <scheme>radclwmx</scheme> <!-- Actual CAM-RT longwave radiation parameterization --> - <scheme>rad_lw_diag_output</scheme> <!-- Calculate longwave diagnostic variables, and output them to history file --> - <scheme>cloud_cover_diags_output</scheme> <!-- Calculate cloud cover diagnostic variables, and output them to history file --> - <scheme>rad_qdp_q_calc</scheme> <!-- Convert Q*dp to Q (potentially managed by registry/framework?) --> - <scheme>rad_data_write</scheme> <!-- Calculate additional radiation diagnostics, and output them to history file --> - <scheme>radheat_tend</scheme> <!-- Calculate net radiative heating tendencies --> - <scheme>radheat_diag_output</scheme> <!-- Calculate radiative heating diagnostic variables, and output them to history file --> - <scheme>rad_q_qdp_calc</scheme> <!-- Convert Q to Q*dp (potentially managed by registry/framework?) --> - <scheme>set_srf_net_sw</scheme> <!-- Add net shortwave surface flux to host model surface fluxes --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>tropopause_output</scheme> <!-- Calculate tropopause diagnostic variables, and output them to history file --> - <scheme>cam_export</scheme> <!-- Add various physics state variables to host model surface fluxes --> - <scheme>diag_export</scheme> <!-- Output various host model surface fluxes to history file --> - </time_split> - </group> - <group name="physics_ac"> - <!--cam6: diffusion=HB, chem=none --> - <time_split> - <scheme>flux_avg_run</scheme> <!-- Smooth/average surface fluxes, but only if phys_do_flux_avg is True --> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found --> - <scheme>calc_flx_net</scheme> <!-- Accumulate net surface fluxes, which is necessary for spectral dycores --> - <!-- Negative moisture/tracer check --> - <!-- **************************** --> - <scheme>qneg4</scheme> <!-- Modify surface moisture and heat fluxes to prevent negative moisture values, and output diagnostics --> - <scheme>aoa_tracers_timestep_tend</scheme> <!-- Calculate age of air tracer tendencies. Also output tendencies to history file --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>co2_cycle_set_ptend</scheme> <!-- Calculate CO2 tendencies. Only matters if co2_flag or co2_readFlux_aircraft is True --> - <!-- **************************** --> - <!-- Vertical diffusion --> - <!-- **************************** --> - <scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor --> - <scheme>tint_calc</scheme> <!-- Interpolate air temperature to layer interface levels --> - <scheme>ubc_get_vals</scheme> <!-- Calcuate upper-level boundary conditions (depends on chemistry and model-top choice) --> - <scheme>set_top_tint_val</scheme> <!-- Calculate air temperature at top interface level --> - <scheme>rhoi_calc</scheme> <!-- Interpolate air density and dry air density to layer interface levels --> - <scheme>compute_tms</scheme> <!-- Calculate Turbulent Mountain Stress (TMS) tendency --> - <scheme>tms_diag_output</scheme> <!-- Calculate TMS diangostic variables, and output them to history file --> - <scheme>compute_blj</scheme> <!-- Calculate Sub-Grid Orgraphic (SGO) drag via Beljaars parameterization --> - <scheme>blj_diag_output</scheme> <!-- Calculate SGO diagnostic variables, and output them to history file --> - <scheme>temp_to_potential_temp</scheme> <!-- Calculate potential temperature --> - <scheme>virtem</scheme> <!-- Calculate virtual temperature (managed by registry/framework?) --> - <scheme>calc_ustar</scheme> <!-- Calculate friction velocity --> - <scheme>calc_obklen</scheme> <!-- Calculate Obhukov length --> - <!-- Holtslag and Boville, 1991 PBL scheme --> - <!-- ++++++++++++++++++++++++++ --> - <scheme>trbintd</scheme> <!-- Calculate shear squared, brunt-viasala frequency, and Richardson number --> - <scheme>pblintd</scheme> <!-- Initialize time dependent variables that depend on PBL height --> - <scheme>austausch_atm</scheme> <!-- Calculate free atmosphere exchange coefficients --> - <scheme>austausch_pbl</scheme> <!-- Calculate PBL exchange coefficients (and assume kvq = kvh) --> - <!-- ++++++++++++++++++++++++++ --> - <scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False --> - <scheme>dse_top_calc</scheme> <!-- Calculate top-level dry static energy, but only if do_molec_diff is True and WACCM-X is False --> - <scheme>compute_molec_diff_wet</scheme> <!-- Calculate molecular diffusion of wet atmospheric constituents, if do_molec_diff is True --> - <scheme>compute_vdiff_wet</scheme> <!-- Calculate the vertical (eddy) diffusion of wet atmospheric constituents --> - <scheme>compute_molec_diff_dry</scheme> <!-- Calculate molecular diffusion of dry atmospheric constituents, if do_molec_diff is True --> - <scheme>compute_vdiff_dry</scheme> <!-- Calculate the vertical (eddy) diffusion of dry atmospheric constituents --> - <scheme>diff_flux_diag</scheme> <!-- Calculate diffusion variable diagnostics, if do_pbl_diags is False (is that correct?) --> - <scheme>diff_flux_tend_dry</scheme> <!-- Calculate vertical diffusion tendencies for "dry" quantities, and send them back to host model --> - <scheme>set_wet_to_dry</scheme> <!-- Convert mixing ratios from air + water vapor to dry air --> - <scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False --> - <scheme>diff_mass_check</scheme> <!-- Check mass conservation after vertical diffusion, and send error messages if check fails --> - <scheme>pbl_output</scheme> <!-- Write PBL diagnostic variables to history files --> - <!-- **************************** --> - <scheme>rayleigh_friction_tend</scheme> <!-- Calculate Rayleigh friction tendency --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>charge_balance</scheme> <!-- Enforce charge nuetrality, if chemistry simulates electrons --> - <!-- Gravit wave tendencies --> - <!-- **************************** --> - <!-- This interface depends heavily - on namelist inputs, with entire - blocks of code being used (or not) - depending on said namelist choices. - However, the general structure of these - code blocks is more or less the same, - so a "generic" scheme set is included - here, which will need to be expanded - out once "if-statement" like dependencies - can be added to suite definition files - like this one --> - <scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor --> - <scheme>gw_prof</scheme> <!-- Calculate layer interface densities and Brunt-Viasala frequencies (combine with other schemes?) --> - <!-- Generic gravity wave scheme order --> - <!-- +++++++++++++++++++++++++ --> - <scheme>effgw_calc</scheme> <!-- Calculate the efficiency of gravity wave momentum transfer --> - <scheme>gw_src_calc</scheme> <!-- Determine gravity wave sources --> - <scheme>gw_drag_prof</scheme> <!-- Solve for the drag profile with the gravity wave spectrum --> - <scheme>calc_taucd</scheme> <!-- Project stress into directional components --> - <scheme>egwdffi_tot_calc</scheme> <!-- add diffusion coefficients --> - <scheme>momentum_flux_calc</scheme> <!-- Calculate momentum fluxes/wind tendencies --> - <scheme>energy_change</scheme> <!-- Calculate atmospheric energy change --> - <scheme>energy_fixer</scheme> <!-- Ensure energy conservation --> - <scheme>gw_cam_update</scheme> <!-- Placeholder for CAM gravity wave updates and diagnostic output calculations --> - <!-- +++++++++++++++++++++++++ --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>lunar_tides_tend</scheme> <!-- Calculate horizontal wind tendencies due to M2 lunar tide, but only if apply_lunar_tides is True --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAP' --> - <scheme>nudging_timestep_tend</scheme> <!-- Apply nudging to horizontal winds, heat, and water vapor, and output diagnostics, but only if nudging is turned on. --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>set_dry_to_wet</scheme> <!-- Only matters if dycore is LR (still used?) or SE--> - <!-- Dry air mass adjuster --> <!-- Only matters if dycore is FV (LR), otherwise this calculation is purely diagnostic --> - <!-- **************************** --> - <scheme>qfac_state_adjust</scheme> <!-- Adjust state variables based off the change in water vapor --> - <scheme>geopotential_dse</scheme> <!-- Calculate the temperatue and geopotential height using pressure and dry static energy --> - <!-- **************************** --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAM' --> - <scheme>dtcore_reset</scheme> <!-- Reset "dtcore" variable to equal temperature --> - <scheme>diag_phys_tend_writeout</scheme> <!-- Calculate physics diagnostic variables, and output them to history file --> - </time_split> - </group> -</suite> diff --git a/suites/suite_cam6.xml b/suites/suite_cam6.xml deleted file mode 100644 index d995b70b..00000000 --- a/suites/suite_cam6.xml +++ /dev/null @@ -1,364 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<suite name="cam6" version="1.0"> - <group name="physics_bc"> - <!--cam6: deep=ZM, shallow=CLUBB, macrop=CLUBB, microp=MG2, radiation=RRTMG, chem=trop_mam4 --> - <time_split> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. --> - <scheme>clybry_fam_adj</scheme> <!-- Only matters if chemistry package with Cly and Bry is used --> - <!-- Negative moisture/tracer check --> - <!-- **************************** --> - <scheme>qneg</scheme> <!-- This scheme modifies the state directly. Combine with state check? --> - <!-- **************************** --> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. --> - <scheme>diag_state_b4_phys_write</scheme> <!-- Diagnostics --> - <!-- energy and momentum fixer --> - <!-- **************************** --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBF' --> - <scheme>check_energy_fix</scheme> <!-- Only matters if dycore is FV (called "LR" in physics) or SE--> - <scheme>check_energy_cam_update_pre_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations before "chng" call. --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_energy_cam_update_post_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations after "chng" call. --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBP' --> - <!-- **************************** --> - <scheme>diag_conv_tend_ini</scheme> <!-- Initalizes convective-scheme diagnostic outputs --> - <scheme>calc_dtcore</scheme> <!-- diagnostic calculation. Could likely be included in energy fixer scheme. --> - <!-- Dry adiabatic adjustment --> - <!-- **************************** --> - <!-- Technically only needs temperature and humidity as inputs --> - <scheme>dadadj_calc_update</scheme> <!-- Actual dry adiabatic adjustment scheme, with placeholders for CAM accumulation calculations --> - <!-- **************************** --> - <!-- Zhang-Macfarlane deep convection scheme --> - <!-- **************************** --> - <scheme>zm_convr</scheme> <!-- Actual deep convection routine --> - <scheme>zm_convr_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>zm_conv_evap</scheme> <!-- Actual ZM rain evaporation scheme --> - <scheme>zm_conv_evap_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>momtran</scheme> <!-- Actual ZM momentum transport scheme --> - <scheme>momtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>convtran</scheme> <!-- Actual ZM convective transport scheme, for constituents in cnst_is_convtran1 --> - <scheme>convtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>sslt_rebin_adv</scheme> <!-- Only matters if certain sea salt species are present in chemistry package--> - <subcycle loop="cloud_macmic_num_steps"> <!-- Cloud macrophysics-microphysics loop --> - <!-- CLUBB turbulence, convection, and macrophysics --> - <!-- **************************** --> - <!-- The commented-out schemes below are all included in the "clubb_input_prepare" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>set_dry_to_wet</scheme> Convert mixing ratios from dry air to air + water vapor - <scheme>grid_size</scheme> Calculate grid-cell size - <scheme>clubb_dtime_calc</scheme> Calculate CLUBB time-step as function of host model time-step - <scheme>exner_clubb</scheme> Calculate Exner function using CLUBB definition - <scheme>clubb_thermo_vars</scheme> Calculate various thermodynamic variables needed for CLUBB (Theta-V, Theta-L, etc.) - <scheme>tropopause_findChemTrop</scheme> Calculate tropopause height - <scheme>clubb_vertical_grid_create_inv</scheme> Create CLUBB vertical grids, which is in the opposite order of CAM - <scheme>clubb_thermo_vars_grid</scheme> Calculate additional thermodynamic variables that are on the CLUBB vertical grid - <scheme>clubb_calc_ustar</scheme> Only matters for single-column mode - <scheme>setup_grid_heights_api</scheme> Re-calculate CLUBB grid heights - <scheme>setup_parameters_api</scheme> Re-calculate grid-dependent CLUBB parameters - <scheme>zt2zm_convert</scheme> Transition variables on thermodynamic levels to momentum levels - <scheme>clubb_calc_input_vars</scheme> Calculate additional CLUBB input variables - +++++++++++++++++++++++++++++++ --> - <scheme>clubb_input_prepare</scheme> <!-- Prepare inputs for the "CLUBB" turbulence/convection/macrophysics scheme --> - <scheme>clubb_var_vert_inv</scheme> <!-- Change order of vertical levels for CLUBB input variables --> - <subcycle loop="clubb_time_substep"> <!-- CLUBB sub-step loop (number of iterations should be calculated in the "clubb_dtime_calc" scheme), CAM6 var = 'clubb_nadv' --> - <scheme>stats_begin_timestep_api</scheme> <!-- Only matters if "l_stats" is True --> - <scheme>advance_clubb_core_api</scheme> <!-- Actual CLUBB parameterization scheme --> - <scheme>update_xp2_mc_intr</scheme> <!-- Only matters if "do_rainturb" is True --> - <scheme>calculate_thlp2_rad_intr</scheme> <!-- Only matters if "do_cldcool" is True --> - <scheme>stats_end_timestep_clubb</scheme> <!-- Only matters if "l_stats" is True --> - </subcycle> - <!-- The commented-out schemes below are all included in the "clubb_output_prepare" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>zm2zt_convert</scheme> Transition variables on momentum levels to thermodynamic levels - <scheme>clubb_calc_output_vars</scheme> Calculate additional CLUBB output variables - +++++++++++++++++++++++++++++++ --> - <scheme>clubb_output_prepare</scheme> <!-- Prepare CLUBB outputs for use in the host model --> - <scheme>clubb_var_vert_rev</scheme> <!-- Change order of vertical levels for CLUBB output variables back to host model ordering --> - <scheme>clubb_upper_diss</scheme> <!-- CLUBB energy and total water mass fixer --> - <scheme>clubb_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>liquid_macro_tend</scheme> <!-- Only matters if "clubb_do_liqsupersat" is True--> - <scheme>liquid_macro_CAM_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>conv_cond_detrain_calc</scheme> <!-- Calculate the host model cloud condensate and energy tendencies produced by convective detrainment --> - <scheme>conv_cond_detrain_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>set_wet_to_dry</scheme> <!-- Convert mixing ratios from air + water vapor to dry air --> - <scheme>clubb_diag_output</scheme> <!-- Calculate numerous different CLUBB diagnostic variables, and output them to history file --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <partition gen="subcol_generator_name" avg="subcol_averager_name"> - <process_split> - <!-- MG aerosol microphysics --> - <!-- **************************** --> - <scheme>hetfrz_classnuc_cam_save_cbaero</scheme> <!-- Save copy of cloud-borne aerosols (only needed if use_hetfrz_classnuc is True) --> - <scheme>aero_get_num_mmr</scheme> <!-- Collect particle number and mass mixing ratios for each aerosol species, unless already managed by framework --> - <scheme>aero_calc_wsub</scheme> <!-- Calculate subgrid-scale vertical velocity --> - <scheme>nucleate_ice_cam_calc</scheme> <!-- Calculate ice nucleation --> - <scheme>lcldm_min_check</scheme> <!-- Check that low cloud fraction is above threshold --> - <scheme>aero_cam_drop_activate</scheme> <!-- Calculate droplet activation --> - <scheme>aero_cam_contact_freezing</scheme> <!-- Calculate contact freezing --> - <scheme>ndrop_bam_ccn</scheme> <!-- Calculate bulk CCN concentration (only needed if clim_modal_aero is False) --> - <scheme>hetfrz_classnuc_cam_calc</scheme> <!-- Calculate heterogeneous freezing (only needed if use_hetfrz_classnuc is True) --> - <scheme>microp_aero_diag_output</scheme> <!-- Output diagnostics from MG aerosol microphysics. --> - <!-- **************************** --> - <!-- MG cloud microphysics --> - <!-- **************************** --> - <scheme>micro_mg_get_cols3_0</scheme> <!-- Determine atmospheric columns used by the MG2 microphysics schemes --> - <scheme>calc_incloud_LWP</scheme> <!-- Calculate in-cloud Liquid Water Path (LWP) before MG2 is run --> - <scheme>micro_calc_tropopause</scheme> <!-- Calculate the cold-point tropopause for use by the microphysics --> - <scheme>micro_mg_tend3_0</scheme> <!-- Actual MG2 cloud micro-physics parameterization scheme --> - <scheme>mg_calc_outputs</scheme> <!-- Calculate additional MG2 output variables and diagnostics --> - <scheme>calc_atm_density</scheme> <!-- Calculate atmospheric density --> - <!-- This section of code could likely be grouped together as one scheme (at least partially)--> - <!-- +++++++++++++++++++++++++ --> - <scheme>size_dist_param_liq</scheme> <!-- Calculate size distribution of cloud droplets --> - <scheme>micro_eff_radius_liq</scheme> <!-- Calculate the effective radius of a given cloud droplet distribution --> - <scheme>size_dist_param_liq_const</scheme> <!-- Calculate size distribution of cloud droplets assuming a constant ncic --> - <scheme>calc_ncic_grid</scheme> <!-- Calculate ncic (number of cloud droplets?) in grid cell --> - <scheme>size_dist_param_liq</scheme> <!-- Calculate size distribution of cloud droplets --> - <scheme>micro_eff_radius_liq</scheme> <!-- Calculate the effective radius of a given cloud droplet distribution --> - <scheme>micro_eff_radius_rain</scheme> <!-- Calculate the effective radius of rain (assumed size distribution?) --> - <scheme>micro_eff_radius_snow</scheme> <!-- Calculate the effective radius of snow (assumed size distribution?) --> - <scheme>micro_eff_radius_graupel</scheme> <!-- Calculate the effective radius of graupel (only if MG microphysics version 3 or later is used) --> - <scheme>calc_niic_grid</scheme> <!-- Calculate niic (number of cloud ice crystals?) in grid cell --> - <scheme>size_dist_param_basic</scheme> <!-- Calculate the size distribution of ice crystals --> - <scheme>micro_eff_radius_ice</scheme> <!-- Calculate the effective radius of a given cloud ice distribution --> - <!-- +++++++++++++++++++++++++ --> - <scheme>calc_micro_column_vars</scheme> <!-- Calculate Liquid Water Path (LWP) and net column condensation --> - <scheme>calc_prec_efficiency</scheme> <!-- Calculate precipitation efficiency --> - <scheme>micro_diag_output</scheme> <!-- Calculate microphysics diagnostic variables, and output them to history file --> - <!-- **************************** --> - <scheme>massless_droplet_destroyer</scheme> <!-- Remove massless droplets, doesn't influences only grid-scale tendencies --> - </process_split> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - </partition> - <scheme>diag_clip_tend_writeout</scheme> <!-- Output water mass clipping diagnostics to history file --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>calc_prec_sum</scheme> <!-- Sum surface precipitation amounts over each subcycle loop --> - </subcycle> - <scheme>calc_prec_avg</scheme> <!-- Divide surface precipitation sum by number of "macmic" subcycle iterations --> - <scheme>modal_aero_calcsize_diag</scheme> <!-- Only if climatological aerosols are used instead of prognostic aerosols --> - <!-- Modal Aerosol water uptake --> <!-- Only if climatological aerosols are used instead of prognostic aerosols --> - <!-- **************************** --> - <!-- The commented-out schemes below are all included in the "modal_aero_wateruptake_dr" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>tropopause_find</scheme> Calculate tropopause height - <scheme>calc_h2so4_equilib_mixrat</scheme> Calculate Sulfuric acid phase equilibrium, if modal_strat_sulfate is True - <scheme>h2so4_equilib_diag</scheme> Output sulfer aerosol diagnostics to history file - <scheme>qsat_water</scheme> Calculate saturation vapor pressure with respect to liquid water - <scheme>relhum_calc</scheme> Calculate the relative humidity - <scheme>calc_atm_density</scheme> Calculate atmospheric density - <scheme>modal_aero_wateruptake_sub</scheme> Actual aerosol moisture up-take parameterization - <scheme>modal_aero_wetdens_calc</scheme> Calculate the wet density of aerosols - <scheme>modal_aero_wateruptake_diag</scheme> Calculate aerosol water uptake diagnostic variables, and output them to history file - ++++++++++++++++++++++++++++++++++ --> - <scheme>modal_aero_wateruptake_dr</scheme> - <!-- **************************** --> - <!-- Aerosol wet deposition --> - <!-- **************************** --> - <scheme>modal_aero_calcsize_sub</scheme> <!-- Calculate aerosol size distribution parameters --> - <scheme>modal_aero_wateruptake_dr</scheme> <!-- Repeat "Modal Aerosol water uptake" schemes shown above --> - <scheme>wetdep_prec_calc</scheme> <!-- Calculate precipitation amount that impacts wet deposition --> - <scheme>coarse_fact_calc</scheme> <!-- Calculate "f_act_conv" for coarse mode aerosols (note here the comments don't match the variables) --> - <subcycle loop="aerosol_dist_modes"> <!-- Loop over aerosol size distribution modes, CAM6 var = 'ntot_amode' --> - <subcycle loop="aerosol_phase"> <!-- Loop over aerosol phase types (interstitial vs cloud-borne), CAM6 var = 'lphase' --> - <scheme>aero_fact_calc</scheme> <!-- Calculate aerosol activation fraction (f_act_conv) depending on aerosol type --> - <scheme>wetdepa_v2</scheme> <!-- Actual aerosol wet deposition parameterization --> - <scheme>wetdep_diag_output</scheme> <!-- Calculate numerous different CLUBB diagnostic variables, and output them to history file --> - </subcycle> - </subcycle> - <scheme>ma_convproc_intr</scheme> <!-- Convective in-cloud aerosol removal parameterization, only used if convproc_do_aer is True --> - <scheme>set_srf_wetdep</scheme> <!-- Add aerosol deposition rates to host model surface fluxes --> - <!-- **************************** --> - <scheme>convtran</scheme> <!-- Actual ZM convective transport scheme, for constituents in cnst_is_convtran2 --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>diag_phys_writeout</scheme> <!-- Calculate generic atmospheric physics diagnostics and output them to history file --> - <scheme>diag_conv</scheme> <!-- Calculate generic precipitation and convection diagnostics and output them to history file --> - <scheme>cloud_diagnostics_calc</scheme> <!-- Calculate generic cloud diagnostics and output them to history file --> - <!-- RRTMG radiation --> - <!-- **************************** --> - <scheme>calc_solar_zenith_ang</scheme> <!-- Calculate the solar zenith angle for the given time step --> - <scheme>group_day_night</scheme> <!-- Determine which columns are in the day-side, vs night-side --> - <scheme>tropopause_find</scheme> <!-- Calculate tropopause height --> - <!-- The commented-out schemes below are all included in the "rrtmg_state_prepare" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>rrtmg_state_create</scheme> Create RRTMG state object - <scheme>calc_cldfprime</scheme> Calculate "prime" cloud fraction - <scheme>calc_ice_optics_sw</scheme> Calculate cloud ice shortwave optics (case structure, may need to be broken up) - <scheme>calc_liq_optics_sw</scheme> Calculate cloud liquid shortwave optics (case structure, may need to be broken up) - <scheme>calc_snow_optics_sw</scheme> Calculate snow shortwave optics - <scheme>calc_snow_optics_sw</scheme> Calculate graupel shortwave optics - <scheme>rrtmg_state_tau_add</scheme> Calculate and add various optical depths to the RRTMG state structure - <scheme>radiation_output_cld</scheme> Output optical depth diagnostics to history file - <scheme>calc_ice_optics_lw</scheme> Calculate cloud ice longwave optics (case structure, may need to be broken up) - <scheme>calc_liq_optics_lw</scheme> Calculate cloud liquid longwave optics (case structure, may need to be broken up) - <scheme>calc_snow_optics_lw</scheme> Calculate snow longwave optics - <scheme>calc_snow_optics_lw</scheme> Calculate graupel longwave optics - <scheme>get_variability</scheme> Calculate solar spectral irradiance scaling factors - ++++++++++++++++++++++++++++++++++ --> - <scheme>rrtmg_state_prepare</scheme> <!-- Prepare inputs for the "RRTMG" radiation scheme --> - <subcycle loop="rad_active_cnst"> <!-- Loop over radiatively active constituents, CAM6 var = 'n_diag' --> - <scheme>rrtmg_state_update</scheme> <!-- Add shortwave constiuent concentrations to RRTMG state structure --> - <scheme>aer_rad_props_sw</scheme> <!-- Gather/calculate aerosol shortwave optical properties (potentially provided by registry/framework?) --> - <scheme>rad_rrtmg_sw</scheme> <!-- Actual RRTMG shortwave radiation parameterization --> - <scheme>rad_sw_diag_output</scheme> <!-- Calculate shortwave diagnostic variables, and output them to history file --> - </subcycle> - <scheme>rad_cnst_out</scheme> <!-- Calculate radiatively active constituent diagnostic variables, and output them to history file --> - <subcycle loop="rad_active_cnst"> <!-- Loop over radiatively active constituents, CAM6 var = 'n_diag' --> - <scheme>rrtmg_state_update</scheme> <!-- Add longwave constiuent concentrations to RRTMG state structure --> - <scheme>aer_rad_props_lw</scheme> <!-- Gather/calculate aerosol longwave optical properties (potentially provided by registry/framework?) --> - <scheme>rad_rrtmg_lw</scheme> <!-- Actual RRTMG longwave radiation parameterization --> - <scheme>rad_lw_diag_output</scheme> <!-- Calculate longwave diagnostic variables, and output them to history file --> - </subcycle> - <scheme>cosp_input_prepare</scheme> <!-- Prepare inputs required for COSP. Only matters if COSP is active --> - <scheme>cosp_simulator</scheme> <!-- Actual COSP simulator paramaterization. Only matters if COSP is active --> - <scheme>rad_qdp_q_calc</scheme> <!-- Convert Q*dp to Q (potentially managed by registry/framework?) --> - <scheme>rad_data_write</scheme> <!-- Calculate additional radiation diagnostics, and output them to history file --> - <scheme>radheat_tend</scheme> <!-- Calculate net radiative heating tendencies --> - <scheme>radheat_diag_output</scheme> <!-- Calculate radiative heating diagnostic variables, and output them to history file --> - <scheme>rad_q_qdp_calc</scheme> <!-- Convert Q to Q*dp (potentially managed by registry/framework?) --> - <scheme>set_srf_net_sw</scheme> <!-- Add net shortwave surface flux to host model surface fluxes --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>tropopause_output</scheme> <!-- Calculate tropopause diagnostic variables, and output them to history file --> - <scheme>cam_export</scheme> <!-- Add various physics state variables to host model surface fluxes --> - <scheme>diag_export</scheme> <!-- Output various host model surface fluxes to history file --> - </time_split> - </group> - <group name="physics_ac"> - <time_split> - <!--cam6: diffusion=CLUBB, chem=trop_mam4 --> - <scheme>flux_avg_run</scheme> <!-- Smooth/average surface fluxes, but only if phys_do_flux_avg is True --> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found --> - <scheme>calc_flx_net</scheme> <!-- Accumulate net surface fluxes, which is necessary for spectral dycores --> - <!-- Chemistry emissisons --> - <!-- **************************** --> - <scheme>aero_model_emissions</scheme> <!-- Calculate aerosol emissions, and add them to the host model's surface inputs --> - <scheme>calc_MEGAN_fluxes</scheme> <!-- Calculate MEGAN fluxes, and add them to the host model's surface inputs and history files --> - <scheme>set_srf_emissions</scheme> <!-- Calculate surface chemistry emissions --> - <scheme>srf_emis_diag_output</scheme> <!-- Add surface chemistry emissions to host model's surface inputs and history files --> - <scheme>fire_emissions_srf</scheme> <!-- Calculate fire emissions, and add to host model's surface inputs --> - <!-- **************************** --> - <!-- Negative moisture/tracer check --> - <!-- **************************** --> - <scheme>qneg_surface</scheme> <!-- Modify surface moisture and heat fluxes to prevent negative moisture values, and output diagnostics - qneg4 in CAM6 --> - <!-- **************************** --> - <scheme>aoa_tracers_timestep_tend</scheme> <!-- Calculate age of air tracer tendencies. Also output tendencies to history file --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>co2_cycle_set_ptend</scheme> <!-- Calculate CO2 tendencies. Only matters if co2_flag or co2_readFlux_aircraft is True --> - <!-- Atmospheric Chemistry (MOZART), only matters if chem_is_active is True --> - <!-- **************************** --> - <scheme>short_lived_species_writeic</scheme> <!-- Write initial values for short-lived chemical species to history file, if requested by user --> - <scheme>get_curr_calday</scheme> <!-- Determine day of year --> - <scheme>chem_tropopause_find</scheme> <!-- Determine tropopause height (specific tropopause calculation depends on chem_use_chemtrop) --> - <scheme>neu_wetdep_tend</scheme> <!-- Calculate wet deposition rates via the "Neu" scheme --> - <scheme>chem_calc_cldw</scheme> <!-- Calculate total cloud water mass and droplet number --> - <scheme>gas_phase_chemdr</scheme> <!-- Calculate gas-phase chemical reaction tendencies --> - <scheme>nitro_srf_flx</scheme> <!-- Add nitrogen surface fluxes to host model surface fluxes (managed by registry/framework?) --> - <scheme>chem_diag_output</scheme> <!-- Calculate chemistry diagnostic variables, and output them to history file --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <!-- Vertical diffusion --> - <!-- **************************** --> - <scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor --> - <scheme>tint_calc</scheme> <!-- Interpolate air temperature to layer interface levels --> - <scheme>ubc_get_vals</scheme> <!-- Calcuate upper-level boundary conditions (depends on chemistry and model-top choice) --> - <scheme>set_top_tint_val</scheme> <!-- Calculate air temperature at top interface level --> - <scheme>rhoi_calc</scheme> <!-- Interpolate air density and dry air density to layer interface levels --> - <scheme>compute_tms</scheme> <!-- Calculate Turbulent Mountain Stress (TMS) tendency --> - <scheme>tms_diag_output</scheme> <!-- Calculate TMS diangostic variables, and output them to history file --> - <scheme>compute_blj</scheme> <!-- Calculate Sub-Grid Orgraphic (SGO) drag via Beljaars parameterization --> - <scheme>blj_diag_output</scheme> <!-- Calculate SGO diagnostic variables, and output them to history file --> - <scheme>theta_calc</scheme> <!-- Calculate potential temperature (managed by registry/framework?) --> - <scheme>virtem</scheme> <!-- Calculate virtual temperature (managed by registry/framework?) --> - <scheme>calc_ustar</scheme> <!-- Calculate friction velocity --> - <scheme>calc_obklen</scheme> <!-- Calculate Obhukov length --> - <scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False --> - <scheme>dse_top_calc</scheme> <!-- Calculate top-level dry static energy, but only if do_molec_diff is True and WACCM-X is False --> - <scheme>compute_molec_diff_wet</scheme> <!-- Calculate molecular diffusion of wet atmospheric constituents, if do_molec_diff is True --> - <scheme>compute_vdiff_wet</scheme> <!-- Calculate the vertical (eddy) diffusion of wet atmospheric constituents --> - <scheme>compute_molec_diff_dry</scheme> <!-- Calculate molecular diffusion of dry atmospheric constituents, if do_molec_diff is True --> - <scheme>compute_vdiff_dry</scheme> <!-- Calculate the vertical (eddy) diffusion of dry atmospheric constituents --> - <scheme>aero_srf_flx_add</scheme> <!-- Add surface aerosol fluxes to bottom model layer, but only if prog_modal_aero is True --> - <scheme>diff_flux_diag</scheme> <!-- Calculate diffusion variable diagnostics, if do_pbl_diags is False (is that correct?) --> - <scheme>diff_flux_tend_dry</scheme> <!-- Calculate vertical diffusion tendencies for "dry" quantities, and send them back to host model --> - <scheme>set_wet_to_dry</scheme> <!-- Convert mixing ratios from air + water vapor to dry air --> - <scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False --> - <scheme>diff_mass_check</scheme> <!-- Check mass conservation after vertical diffusion, and send error messages if check fails --> - <scheme>pbl_output</scheme> <!-- Write PBL diagnostic variables to history files --> - <!-- **************************** --> - <scheme>rayleigh_friction_tend</scheme> <!-- Calculate Rayleigh friction tendency --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <!-- Aerosol dry deposition --> - <!-- **************************** --> - <scheme>calcram</scheme> <!-- Calculate aerodynamic resistance and friction velocity --> - <scheme>calcram_diag_output</scheme> <!-- Write aerodynamic resistance and friction velocity to history file --> - <scheme>calc_atm_density</scheme> <!-- Calculate atmospheric density --> - <subcycle loop="dep_velocity_idx_34"> <!-- loop over deposition velocity (vlc) array index values 3 and 4 --> - <scheme>modal_aero_depvel_part</scheme> <!-- Calculate dry deposition velocity for cloud droplets --> - </subcycle> - <subcycle loop="aerosol_dist_modes"> <!-- Loop over aerosol size distribution modes, CAM6 var = 'ntot_amode' --> - <subcycle loop="aerosol_phase"> <!-- Loop over aerosol phase types (interstitial vs cloud-borne), CAM6 var = 'lphase' --> - <scheme>calc_aero_vars</scheme> <!-- Calculate aerosol mean wet radius and other properties --> - <subcycle loop="dep_velocity_idx_12" > <!-- loop over deposition velocity (vlc) array index values 1 and 2 --> - <scheme>modal_aero_depvel_part</scheme> <!-- Calculate dry deposition velocity for interstial aerosols --> - </subcycle> - <scheme>aero_tracer_indx</scheme> <!-- Determine aerosol tracer index (managed by registry/framework?) --> - <scheme>depvel_m_to_pa</scheme> <!-- Convert the deposition velocity from m/s to Pa/s, and write to history file (maanged by registry/framework?) --> - <scheme>dust_sediment_tend</scheme> <!-- Calculate host model tendencies and surface fluxes from dry deposition --> - <scheme>drydep_diag_output</scheme> <!-- Calculate dry deposition diagnostic variables, and output them to history file --> - </subcycle> - </subcycle> - <scheme>set_srf_drydep</scheme> <!-- Add dry deposition surface fluxes to host model, if aerodep_flx_prescribed is False --> - <!-- **************************** --> - <scheme>charge_balance</scheme> <!-- Enforce charge nuetrality, if chemistry simulates electrons --> - <!-- Gravit wave tendencies --> - <!-- **************************** --> - <!-- This interface depends heavily - on namelist inputs, with entire - blocks of code being used (or not) - depending on said namelist choices. - However, the general structure of these - code blocks is more or less the same, - so a "generic" scheme set is included - here, which will need to be expanded - out once "if-statement" like dependencies - can be added to suite definition files - like this one --> - <scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor --> - <scheme>gw_prof</scheme> <!-- Calculate layer interface densities and Brunt-Viasala frequencies (combine with other schemes?) --> - <!-- Generic gravity wave scheme order --> - <!-- +++++++++++++++++++++++++ --> - <scheme>effgw_calc</scheme> <!-- Calculate the efficiency of gravity wave momentum transfer --> - <scheme>gw_src_calc</scheme> <!-- Determine gravity wave sources --> - <scheme>gw_drag_prof</scheme> <!-- Solve for the drag profile with the gravity wave spectrum --> - <scheme>calc_taucd</scheme> <!-- Project stress into directional components --> - <scheme>egwdffi_tot_calc</scheme> <!-- add diffusion coefficients (manageable by registry/framework?) --> - <scheme>momentum_flux_calc</scheme> <!-- Calculate momentum fluxes/wind tendencies --> - <scheme>energy_change</scheme> <!-- Calculate atmospheric energy change --> - <scheme>energy_fixer</scheme> <!-- Ensure energy conservation --> - <scheme>gw_cam_update</scheme> <!-- Placeholder for CAM gravity wave updates and diagnostic output calculations --> - <!-- +++++++++++++++++++++++++ --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>lunar_tides_tend</scheme> <!-- Calculate horizontal wind tendencies due to M2 lunar tide, but only if apply_lunar_tides is True --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAP' --> - <scheme>nudging_timestep_tend</scheme> <!-- Apply nudging to horizontal winds, heat, and water vapor, and output diagnostics, but only if nudging is turned on. --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>set_dry_to_wet</scheme> <!-- Only matters if dycore is FV (LR) or SE --> - <!-- Dry air mass adjuster --> <!-- Only matters if dycore is FV (LR), otherwise this calculation is purely diagnostic --> - <!-- **************************** --> - <scheme>qfac_state_adjust</scheme> <!-- Adjust state variables based off the change in water vapor --> - <scheme>geopotential_dse</scheme> <!-- Calculate the temperatue and geopotential height using pressure and dry static energy --> - <!-- **************************** --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAM' --> - <scheme>dtcore_reset</scheme> <!-- Reset "dtcore" variable to equal temperature --> - <scheme>diag_phys_tend_writeout</scheme> <!-- Calculate physics diagnostic variables, and output them to history file --> - <scheme>clybry_fam_set</scheme> <!-- Set ClOy and BrOy mass mixig ratios. Only matters if chemistry package with Cly and Bry is used --> - </time_split> - </group> -</suite> diff --git a/suites/suite_cam6_silhs.xml b/suites/suite_cam6_silhs.xml deleted file mode 100644 index 9bd45239..00000000 --- a/suites/suite_cam6_silhs.xml +++ /dev/null @@ -1,379 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<suite name="cam6_silhs" version="1.0"> - <group name="physics_bc"> - <!--cam6: deep=ZM, shallow=CLUBB, macrop=CLUBB, microp=MG2, radiation=RRTMG, chem=trop_mam4 --> - <time_split> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. --> - <scheme>clybry_fam_adj</scheme> <!-- Only matters if chemistry package with Cly and Bry is used --> - <!-- Negative moisture/tracer check --> - <!-- **************************** --> - <scheme>qneg3</scheme> <!-- This scheme modifies the state directly. Combine with state check? --> - <!-- **************************** --> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found. --> - <scheme>diag_state_b4_phys_write</scheme> <!-- Diagnostics --> - <!-- energy and momentum fixer --> - <!-- **************************** --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBF' --> - <scheme>check_energy_fix</scheme> <!-- Only matters if dycore is FV (called "LR" in physics) or SE--> - <scheme>check_energy_cam_update_pre_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations before "chng" call. --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_energy_cam_update_post_chng</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations after "chng" call. --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pBP' --> - <!-- **************************** --> - <scheme>diag_conv_tend_ini</scheme> <!-- Initalizes convective-scheme diagnostic outputs --> - <scheme>calc_dtcore</scheme> <!-- diagnostic calculation. Could likely be included in energy fixer scheme. --> - <!-- Dry adiabatic adjustment --> - <!-- **************************** --> - <!-- Technically only needs temperature and humidity as inputs --> - <scheme>dadadj_calc_update</scheme> <!-- Actual dry adiabatic adjustment scheme, with placeholders for CAM accumulation calculations --> - <!-- **************************** --> - <!-- Zhang-Macfarlane deep convection scheme --> - <!-- **************************** --> - <scheme>zm_convr</scheme> <!-- Actual deep convection routine --> - <scheme>zm_convr_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>zm_conv_evap</scheme> <!-- Actual ZM rain evaporation scheme --> - <scheme>zm_conv_evap_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>momtran</scheme> <!-- Actual ZM momentum transport scheme --> - <scheme>momtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>convtran</scheme> <!-- Actual ZM convective transport scheme, for constituents in cnst_is_convtran1 --> - <scheme>convtran_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>sslt_rebin_adv</scheme> <!-- Only matters if certain sea salt species are present in chemistry package--> - <subcycle loop="cloud_macmic_num_steps"> <!-- Cloud macrophysics-microphysics loop --> - <!-- CLUBB turbulence, convection, and macrophysics --> - <!-- **************************** --> - <!-- The commented-out schemes below are all included in the "clubb_input_prepare" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>set_dry_to_wet</scheme> Convert mixing ratios from dry air to air + water vapor - <scheme>grid_size</scheme> Calculate grid-cell size - <scheme>clubb_dtime_calc</scheme> Calculate CLUBB time-step as function of host model time-step - <scheme>exner_clubb</scheme> Calculate Exner function using CLUBB definition - <scheme>clubb_thermo_vars</scheme> Calculate various thermodynamic variables needed for CLUBB (Theta-V, Theta-L, etc.) - <scheme>tropopause_findChemTrop</scheme> Calculate tropopause height - <scheme>clubb_vertical_grid_create_inv</scheme> Create CLUBB vertical grids, which is in the opposite order of CAM - <scheme>clubb_thermo_vars_grid</scheme> Calculate additional thermodynamic variables that are on the CLUBB vertical grid - <scheme>clubb_calc_ustar</scheme> Only matters for single-column mode - <scheme>setup_grid_heights_api</scheme> Re-calculate CLUBB grid heights - <scheme>setup_parameters_api</scheme> Re-calculate grid-dependent CLUBB parameters - <scheme>zt2zm_convert</scheme> Transition variables on thermodynamic levels to momentum levels - <scheme>clubb_calc_input_vars</scheme> Calculate additional CLUBB input variables - +++++++++++++++++++++++++++++++ --> - <scheme>clubb_input_prepare</scheme> <!-- Prepare inputs for the "CLUBB" turbulence/convection/macrophysics scheme --> - <scheme>clubb_var_vert_inv</scheme> <!-- Change order of vertical levels for CLUBB input variables --> - <subcycle loop="clubb_time_substep"> <!-- CLUBB sub-step loop (number of iterations should be calculated in the "clubb_dtime_calc" scheme), CAM6 var = 'clubb_nadv' --> - <scheme>stats_begin_timestep_api</scheme> <!-- Only matters if "l_stats" is True --> - <scheme>advance_clubb_core_api</scheme> <!-- Actual CLUBB parameterization scheme --> - <scheme>update_xp2_mc_intr</scheme> <!-- Only matters if "do_rainturb" is True --> - <scheme>calculate_thlp2_rad_intr</scheme> <!-- Only matters if "do_cldcool" is True --> - <scheme>stats_end_timestep_clubb</scheme> <!-- Only matters if "l_stats" is True --> - </subcycle> - <!-- The commented-out schemes below are all included in the "clubb_output_prepare" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>zm2zt_convert</scheme> Transition variables on momentum levels to thermodynamic levels - <scheme>clubb_calc_output_vars</scheme> Calculate additional CLUBB output variables - +++++++++++++++++++++++++++++++ --> - <scheme>clubb_output_prepare</scheme> <!-- Prepare CLUBB outputs for use in the host model --> - <scheme>clubb_var_vert_rev</scheme> <!-- Change order of vertical levels for CLUBB output variables back to host model ordering --> - <scheme>clubb_upper_diss</scheme> <!-- CLUBB energy and total water mass fixer --> - <scheme>clubb_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>liquid_macro_tend</scheme> <!-- Only matters if "clubb_do_liqsupersat" is True--> - <scheme>liquid_macro_CAM_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>conv_cond_detrain_calc</scheme> <!-- Calculate the host model cloud condensate and energy tendencies produced by convective detrainment --> - <scheme>conv_cond_detrain_cam_update</scheme> <!-- Placeholder for CAM updates and diagnostic output calculations --> - <scheme>set_wet_to_dry</scheme> <!-- Convert mixing ratios from air + water vapor to dry air --> - <scheme>clubb_diag_output</scheme> <!-- Calculate numerous different CLUBB diagnostic variables, and output them to history file --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <partition gen="subcol_generator_name" avg="subcol_averager_name"> - <process_split> - <!-- MG aerosol microphysics --> - <!-- **************************** --> - <scheme>hetfrz_classnuc_cam_save_cbaero</scheme> <!-- Save copy of cloud-borne aerosols (only needed if use_hetfrz_classnuc is True) --> - <scheme>aero_get_num_mmr</scheme> <!-- Collect particle number and mass mixing ratios for each aerosol species, unless already managed by framework --> - <scheme>aero_calc_wsub</scheme> <!-- Calculate subgrid-scale vertical velocity --> - <scheme>nucleate_ice_cam_calc</scheme> <!-- Calculate ice nucleation --> - <scheme>lcldm_min_check</scheme> <!-- Check that low cloud fraction is above threshold --> - <scheme>aero_cam_drop_activate</scheme> <!-- Calculate droplet activation --> - <scheme>aero_cam_contact_freezing</scheme> <!-- Calculate contact freezing --> - <scheme>ndrop_bam_ccn</scheme> <!-- Calculate bulk CCN concentration (only needed if clim_modal_aero is False) --> - <scheme>hetfrz_classnuc_cam_calc</scheme> <!-- Calculate heterogeneous freezing (only needed if use_hetfrz_classnuc is True) --> - <scheme>microp_aero_diag_output</scheme> <!-- Output diagnostics from MG aerosol microphysics. --> - <!-- **************************** --> - <!-- MG cloud microphysics --> - <!-- **************************** --> - <scheme>micro_mg_get_cols3_0</scheme> <!-- Determine atmospheric columns used by the MG2 microphysics schemes --> - <scheme>calc_incloud_LWP</scheme> <!-- Calculate in-cloud Liquid Water Path (LWP) before MG2 is run --> - <scheme>micro_calc_tropopause</scheme> <!-- Calculate the cold-point tropopause for use by the microphysics --> - <scheme>micro_mg_tend3_0</scheme> <!-- Actual MG2 cloud micro-physics parameterization scheme --> - <scheme>mg_calc_outputs</scheme> <!-- Calculate additional MG2 output variables and diagnostics --> - <scheme>calc_atm_density</scheme> <!-- Calculate atmospheric density --> - <!-- This section of code could likely be grouped together as one scheme (at least partially)--> - <!-- +++++++++++++++++++++++++ --> - <scheme>size_dist_param_liq</scheme> <!-- Calculate size distribution of cloud droplets --> - <scheme>micro_eff_radius_liq</scheme> <!-- Calculate the effective radius of a given cloud droplet distribution --> - <scheme>size_dist_param_liq_const</scheme> <!-- Calculate size distribution of cloud droplets assuming a constant ncic --> - <scheme>calc_ncic_grid</scheme> <!-- Calculate ncic (number of cloud droplets?) in grid cell --> - <scheme>size_dist_param_liq</scheme> <!-- Calculate size distribution of cloud droplets --> - <scheme>micro_eff_radius_liq</scheme> <!-- Calculate the effective radius of a given cloud droplet distribution --> - <scheme>micro_eff_radius_rain</scheme> <!-- Calculate the effective radius of rain (assumed size distribution?) --> - <scheme>micro_eff_radius_snow</scheme> <!-- Calculate the effective radius of snow (assumed size distribution?) --> - <scheme>micro_eff_radius_graupel</scheme> <!-- Calculate the effective radius of graupel (only if MG microphysics version 3 or later is used) --> - <scheme>calc_niic_grid</scheme> <!-- Calculate niic (number of cloud ice crystals?) in grid cell --> - <scheme>size_dist_param_basic</scheme> <!-- Calculate the size distribution of ice crystals --> - <scheme>micro_eff_radius_ice</scheme> <!-- Calculate the effective radius of a given cloud ice distribution --> - <!-- +++++++++++++++++++++++++ --> - <scheme>calc_micro_column_vars</scheme> <!-- Calculate Liquid Water Path (LWP) and net column condensation --> - <scheme>calc_prec_efficiency</scheme> <!-- Calculate precipitation efficiency --> - <scheme>micro_diag_output</scheme> <!-- Calculate microphysics diagnostic variables, and output them to history file --> - <!-- **************************** --> - <!-- SILHS subcolumn covariance --> - <!-- **************************** --> - <scheme>calc_total_moisture</scheme> <!-- Combine vapor and condensate (manageable by registry/framework)? --> - <scheme>calc_dry_static_density</scheme> <!-- Calculate the dry static density --> - <scheme>convert_omega_to_w</scheme> <!-- Convert pressure velocity to vertical velocity, manageable by registry/framework? --> - <scheme>convert_dse_to_temp</scheme> <!-- Convert dry static energy (DSE) to air temperature, manageable by registry/framework? --> - <scheme>exner_silhs</scheme> <!-- Calculate the Exner function according to SILHS (should be the same as CLUBB, but possible issues) --> - <scheme>thl_calc</scheme> <!-- Calculate liquid water potential temperature (theta-l) --> - <scheme>silhs_var_vert_inv</scheme> <!-- Change order of vertical levels for SILHS input variables, and add ghost point (should be manageable via the registry/meta file) --> - <scheme>silhs_get_subcol_wgts</scheme> <!-- Collect subcolumn weights for SILHS --> - <scheme>lh_microphys_var_covar_driver_api</scheme> <!-- Actual SILHS sub-column parameterization --> - <scheme>zero_upper_level</scheme> <!-- Set covariances above SILHS max altitude to zero --> - <!-- **************************** --> - <scheme>subcol_SILHS_fill_holes_conserv_calc</scheme> <!-- Prevent holes (values less than qmin) using mass-conserving adjustments --> - <scheme>massless_droplet_destroyer</scheme> <!-- Remove massless droplets, doesn't influences only grid-scale tendencies --> - <scheme>subcol_SILHS_hydromet_conc_tend_lim</scheme> <!-- Place limits on hydrometeor drop-size. Only used if SILHS is enabled. --> - </process_split> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - </partition> - <scheme>diag_clip_tend_writeout</scheme> <!-- Output water mass clipping diagnostics to history file --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>calc_prec_sum</scheme> <!-- Sum surface precipitation amounts over each subcycle loop --> - </subcycle> - <scheme>calc_prec_avg</scheme> <!-- Divide surface precipitation sum by number of "macmic" subcycle iterations --> - <scheme>modal_aero_calcsize_diag</scheme> <!-- Only if climatological aerosols are used instead of prognostic aerosols --> - <!-- Modal Aerosol water uptake --> <!-- Only if climatological aerosols are used instead of prognostic aerosols --> - <!-- **************************** --> - <!-- The commented-out schemes below are all included in the "modal_aero_wateruptake_dr" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>tropopause_find</scheme> Calculate tropopause height - <scheme>calc_h2so4_equilib_mixrat</scheme> Calculate Sulfuric acid phase equilibrium, if modal_strat_sulfate is True - <scheme>h2so4_equilib_diag</scheme> Output sulfer aerosol diagnostics to history file - <scheme>qsat_water</scheme> Calculate saturation vapor pressure with respect to liquid water - <scheme>relhum_calc</scheme> Calculate the relative humidity - <scheme>calc_atm_density</scheme> Calculate atmospheric density - <scheme>modal_aero_wateruptake_sub</scheme> Actual aerosol moisture up-take parameterization - <scheme>modal_aero_wetdens_calc</scheme> Calculate the wet density of aerosols - <scheme>modal_aero_wateruptake_diag</scheme> Calculate aerosol water uptake diagnostic variables, and output them to history file - ++++++++++++++++++++++++++++++++++ --> - <scheme>modal_aero_wateruptake_dr</scheme> - <!-- **************************** --> - <!-- Aerosol wet deposition --> - <!-- **************************** --> - <scheme>modal_aero_calcsize_sub</scheme> <!-- Calculate aerosol size distribution parameters --> - <scheme>modal_aero_wateruptake_dr</scheme> <!-- Repeat "Modal Aerosol water uptake" schemes shown above --> - <scheme>wetdep_prec_calc</scheme> <!-- Calculate precipitation amount that impacts wet deposition --> - <scheme>coarse_fact_calc</scheme> <!-- Calculate "f_act_conv" for coarse mode aerosols (note here the comments don't match the variables) --> - <subcycle loop="aerosol_dist_modes"> <!-- Loop over aerosol size distribution modes, CAM6 var = 'ntot_amode' --> - <subcycle loop="aerosol_phase"> <!-- Loop over aerosol phase types (interstitial vs cloud-borne), CAM6 var = 'lphase' --> - <scheme>aero_fact_calc</scheme> <!-- Calculate aerosol activation fraction (f_act_conv) depending on aerosol type --> - <scheme>wetdepa_v2</scheme> <!-- Actual aerosol wet deposition parameterization --> - <scheme>wetdep_diag_output</scheme> <!-- Calculate numerous different CLUBB diagnostic variables, and output them to history file --> - </subcycle> - </subcycle> - <scheme>ma_convproc_intr</scheme> <!-- Convective in-cloud aerosol removal parameterization, only used if convproc_do_aer is True --> - <scheme>set_srf_wetdep</scheme> <!-- Add aerosol deposition rates to host model surface fluxes --> - <!-- **************************** --> - <scheme>convtran</scheme> <!-- Actual ZM convective transport scheme, for constituents in cnst_is_convtran2 --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>diag_phys_writeout</scheme> <!-- Calculate generic atmospheric physics diagnostics and output them to history file --> - <scheme>diag_conv</scheme> <!-- Calculate generic precipitation and convection diagnostics and output them to history file --> - <scheme>cloud_diagnostics_calc</scheme> <!-- Calculate generic cloud diagnostics and output them to history file --> - <!-- RRTMG radiation --> - <!-- **************************** --> - <scheme>calc_solar_zenith_ang</scheme> <!-- Calculate the solar zenith angle for the given time step --> - <scheme>group_day_night</scheme> <!-- Determine which columns are in the day-side, vs night-side --> - <scheme>tropopause_find</scheme> <!-- Calculate tropopause height --> - <!-- The commented-out schemes below are all included in the "rrtmg_state_prepare" scheme --> - <!-- ++++++++++++++++++++++++++++++ - <scheme>rrtmg_state_create</scheme> Create RRTMG state object - <scheme>calc_cldfprime</scheme> Calculate "prime" cloud fraction - <scheme>calc_ice_optics_sw</scheme> Calculate cloud ice shortwave optics (case structure, may need to be broken up) - <scheme>calc_liq_optics_sw</scheme> Calculate cloud liquid shortwave optics (case structure, may need to be broken up) - <scheme>calc_snow_optics_sw</scheme> Calculate snow shortwave optics - <scheme>calc_snow_optics_sw</scheme> Calculate graupel shortwave optics - <scheme>rrtmg_state_tau_add</scheme> Calculate and add various optical depths to the RRTMG state structure - <scheme>radiation_output_cld</scheme> Output optical depth diagnostics to history file - <scheme>calc_ice_optics_lw</scheme> Calculate cloud ice longwave optics (case structure, may need to be broken up) - <scheme>calc_liq_optics_lw</scheme> Calculate cloud liquid longwave optics (case structure, may need to be broken up) - <scheme>calc_snow_optics_lw</scheme> Calculate snow longwave optics - <scheme>calc_snow_optics_lw</scheme> Calculate graupel longwave optics - <scheme>get_variability</scheme> Calculate solar spectral irradiance scaling factors - ++++++++++++++++++++++++++++++++++ --> - <scheme>rrtmg_state_prepare</scheme> <!-- Prepare inputs for the "RRTMG" radiation scheme --> - <subcycle loop="rad_active_cnst"> <!-- Loop over radiatively active constituents, CAM6 var = 'n_diag' --> - <scheme>rrtmg_state_update</scheme> <!-- Add shortwave constiuent concentrations to RRTMG state structure --> - <scheme>aer_rad_props_sw</scheme> <!-- Gather/calculate aerosol shortwave optical properties (potentially provided by registry/framework?) --> - <scheme>rad_rrtmg_sw</scheme> <!-- Actual RRTMG shortwave radiation parameterization --> - <scheme>rad_sw_diag_output</scheme> <!-- Calculate shortwave diagnostic variables, and output them to history file --> - </subcycle> - <scheme>rad_cnst_out</scheme> <!-- Calculate radiatively active constituent diagnostic variables, and output them to history file --> - <subcycle loop="rad_active_cnst"> <!-- Loop over radiatively active constituents, CAM6 var = 'n_diag' --> - <scheme>rrtmg_state_update</scheme> <!-- Add longwave constiuent concentrations to RRTMG state structure --> - <scheme>aer_rad_props_lw</scheme> <!-- Gather/calculate aerosol longwave optical properties (potentially provided by registry/framework?) --> - <scheme>rad_rrtmg_lw</scheme> <!-- Actual RRTMG longwave radiation parameterization --> - <scheme>rad_lw_diag_output</scheme> <!-- Calculate longwave diagnostic variables, and output them to history file --> - </subcycle> - <scheme>cosp_input_prepare</scheme> <!-- Prepare inputs required for COSP. Only matters if COSP is active --> - <scheme>cosp_simulator</scheme> <!-- Actual COSP simulator paramaterization. Only matters if COSP is active --> - <scheme>rad_qdp_q_calc</scheme> <!-- Convert Q*dp to Q (potentially managed by registry/framework?) --> - <scheme>rad_data_write</scheme> <!-- Calculate additional radiation diagnostics, and output them to history file --> - <scheme>radheat_tend</scheme> <!-- Calculate net radiative heating tendencies --> - <scheme>radheat_diag_output</scheme> <!-- Calculate radiative heating diagnostic variables, and output them to history file --> - <scheme>rad_q_qdp_calc</scheme> <!-- Convert Q to Q*dp (potentially managed by registry/framework?) --> - <scheme>set_srf_net_sw</scheme> <!-- Add net shortwave surface flux to host model surface fluxes --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>tropopause_output</scheme> <!-- Calculate tropopause diagnostic variables, and output them to history file --> - <scheme>cam_export</scheme> <!-- Add various physics state variables to host model surface fluxes --> - <scheme>diag_export</scheme> <!-- Output various host model surface fluxes to history file --> - </time_split> - </group> - <group name="physics_ac"> - <time_split> - <!--cam6: diffusion=CLUBB, chem=trop_mam4 --> - <scheme>flux_avg_run</scheme> <!-- Smooth/average surface fluxes, but only if phys_do_flux_avg is True --> - <scheme>physics_state_check</scheme> <!-- Only if state_debug_checks is True. This scheme only looks for infs/nans, and kills the model if found --> - <scheme>calc_flx_net</scheme> <!-- Accumulate net surface fluxes, which is necessary for spectral dycores --> - <!-- Chemistry emissisons --> - <!-- **************************** --> - <scheme>aero_model_emissions</scheme> <!-- Calculate aerosol emissions, and add them to the host model's surface inputs --> - <scheme>calc_MEGAN_fluxes</scheme> <!-- Calculate MEGAN fluxes, and add them to the host model's surface inputs and history files --> - <scheme>set_srf_emissions</scheme> <!-- Calculate surface chemistry emissions --> - <scheme>srf_emis_diag_output</scheme> <!-- Add surface chemistry emissions to host model's surface inputs and history files --> - <scheme>fire_emissions_srf</scheme> <!-- Calculate fire emissions, and add to host model's surface inputs --> - <!-- **************************** --> - <!-- Negative moisture/tracer check --> - <!-- **************************** --> - <scheme>qneg4</scheme> <!-- Modify surface moisture and heat fluxes to prevent negative moisture values, and output diagnostics --> - <!-- **************************** --> - <scheme>aoa_tracers_timestep_tend</scheme> <!-- Calculate age of air tracer tendencies. Also output tendencies to history file --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <scheme>co2_cycle_set_ptend</scheme> <!-- Calculate CO2 tendencies. Only matters if co2_flag or co2_readFlux_aircraft is True --> - <!-- Atmospheric Chemistry (MOZART), only matters if chem_is_active is True --> - <!-- **************************** --> - <scheme>short_lived_species_writeic</scheme> <!-- Write initial values for short-lived chemical species to history file, if requested by user --> - <scheme>get_curr_calday</scheme> <!-- Determine day of year --> - <scheme>chem_tropopause_find</scheme> <!-- Determine tropopause height (specific tropopause calculation depends on chem_use_chemtrop) --> - <scheme>neu_wetdep_tend</scheme> <!-- Calculate wet deposition rates via the "Neu" scheme --> - <scheme>chem_calc_cldw</scheme> <!-- Calculate total cloud water mass and droplet number --> - <scheme>gas_phase_chemdr</scheme> <!-- Calculate gas-phase chemical reaction tendencies --> - <scheme>nitro_srf_flx</scheme> <!-- Add nitrogen surface fluxes to host model surface fluxes (managed by registry/framework?) --> - <scheme>chem_diag_output</scheme> <!-- Calculate chemistry diagnostic variables, and output them to history file --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <!-- Vertical diffusion --> - <!-- **************************** --> - <scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor --> - <scheme>tint_calc</scheme> <!-- Interpolate air temperature to layer interface levels --> - <scheme>ubc_get_vals</scheme> <!-- Calcuate upper-level boundary conditions (depends on chemistry and model-top choice) --> - <scheme>set_top_tint_val</scheme> <!-- Calculate air temperature at top interface level --> - <scheme>rhoi_calc</scheme> <!-- Interpolate air density and dry air density to layer interface levels --> - <scheme>compute_tms</scheme> <!-- Calculate Turbulent Mountain Stress (TMS) tendency --> - <scheme>tms_diag_output</scheme> <!-- Calculate TMS diangostic variables, and output them to history file --> - <scheme>compute_blj</scheme> <!-- Calculate Sub-Grid Orgraphic (SGO) drag via Beljaars parameterization --> - <scheme>blj_diag_output</scheme> <!-- Calculate SGO diagnostic variables, and output them to history file --> - <scheme>theta_calc</scheme> <!-- Calculate potential temperature (managed by registry/framework?) --> - <scheme>virtem</scheme> <!-- Calculate virtual temperature (managed by registry/framework?) --> - <scheme>calc_ustar</scheme> <!-- Calculate friction velocity --> - <scheme>calc_obklen</scheme> <!-- Calculate Obhukov length --> - <scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False --> - <scheme>dse_top_calc</scheme> <!-- Calculate top-level dry static energy, but only if do_molec_diff is True and WACCM-X is False --> - <scheme>compute_molec_diff_wet</scheme> <!-- Calculate molecular diffusion of wet atmospheric constituents, if do_molec_diff is True --> - <scheme>compute_vdiff_wet</scheme> <!-- Calculate the vertical (eddy) diffusion of wet atmospheric constituents --> - <scheme>compute_molec_diff_dry</scheme> <!-- Calculate molecular diffusion of dry atmospheric constituents, if do_molec_diff is True --> - <scheme>compute_vdiff_dry</scheme> <!-- Calculate the vertical (eddy) diffusion of dry atmospheric constituents --> - <scheme>aero_srf_flx_add</scheme> <!-- Add surface aerosol fluxes to bottom model layer, but only if prog_modal_aero is True --> - <scheme>diff_flux_diag</scheme> <!-- Calculate diffusion variable diagnostics, if do_pbl_diags is False (is that correct?) --> - <scheme>diff_flux_tend_dry</scheme> <!-- Calculate vertical diffusion tendencies for "dry" quantities, and send them back to host model --> - <scheme>set_wet_to_dry</scheme> <!-- Convert mixing ratios from air + water vapor to dry air --> - <scheme>pbl_diag_calc</scheme> <!-- Calculate PBL diagnositc variables, if do_pbl_diags is False --> - <scheme>diff_mass_check</scheme> <!-- Check mass conservation after vertical diffusion, and send error messages if check fails --> - <scheme>pbl_output</scheme> <!-- Write PBL diagnostic variables to history files --> - <!-- **************************** --> - <scheme>rayleigh_friction_tend</scheme> <!-- Calculate Rayleigh friction tendency --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>check_tracers_chng</scheme> <!-- Global tracer mass checker that kills model if error is large enough. --> - <!-- Aerosol dry deposition --> - <!-- **************************** --> - <scheme>calcram</scheme> <!-- Calculate aerodynamic resistance and friction velocity --> - <scheme>calcram_diag_output</scheme> <!-- Write aerodynamic resistance and friction velocity to history file --> - <scheme>calc_atm_density</scheme> <!-- Calculate atmospheric density --> - <subcycle loop="dep_velocity_idx_34"> <!-- loop over deposition velocity (vlc) array index values 3 and 4 --> - <scheme>modal_aero_depvel_part</scheme> <!-- Calculate dry deposition velocity for cloud droplets --> - </subcycle> - <subcycle loop="aerosol_dist_modes"> <!-- Loop over aerosol size distribution modes, CAM6 var = 'ntot_amode' --> - <subcycle loop="aerosol_phase"> <!-- Loop over aerosol phase types (interstitial vs cloud-borne), CAM6 var = 'lphase' --> - <scheme>calc_aero_vars</scheme> <!-- Calculate aerosol mean wet radius and other properties --> - <subcycle loop="dep_velocity_idx_12" > <!-- loop over deposition velocity (vlc) array index values 1 and 2 --> - <scheme>modal_aero_depvel_part</scheme> <!-- Calculate dry deposition velocity for interstial aerosols --> - </subcycle> - <scheme>aero_tracer_indx</scheme> <!-- Determine aerosol tracer index (managed by registry/framework?) --> - <scheme>depvel_m_to_pa</scheme> <!-- Convert the deposition velocity from m/s to Pa/s, and write to history file (maanged by registry/framework?) --> - <scheme>dust_sediment_tend</scheme> <!-- Calculate host model tendencies and surface fluxes from dry deposition --> - <scheme>drydep_diag_output</scheme> <!-- Calculate dry deposition diagnostic variables, and output them to history file --> - </subcycle> - </subcycle> - <scheme>set_srf_drydep</scheme> <!-- Add dry deposition surface fluxes to host model, if aerodep_flx_prescribed is False --> - <!-- **************************** --> - <scheme>charge_balance</scheme> <!-- Enforce charge nuetrality, if chemistry simulates electrons --> - <!-- Gravit wave tendencies --> - <!-- **************************** --> - <!-- This interface depends heavily - on namelist inputs, with entire - blocks of code being used (or not) - depending on said namelist choices. - However, the general structure of these - code blocks is more or less the same, - so a "generic" scheme set is included - here, which will need to be expanded - out once "if-statement" like dependencies - can be added to suite definition files - like this one --> - <scheme>set_dry_to_wet</scheme> <!-- Convert mixing ratios from dry air to air + water vapor --> - <scheme>gw_prof</scheme> <!-- Calculate layer interface densities and Brunt-Viasala frequencies (combine with other schemes?) --> - <!-- Generic gravity wave scheme order --> - <!-- +++++++++++++++++++++++++ --> - <scheme>effgw_calc</scheme> <!-- Calculate the efficiency of gravity wave momentum transfer --> - <scheme>gw_src_calc</scheme> <!-- Determine gravity wave sources --> - <scheme>gw_drag_prof</scheme> <!-- Solve for the drag profile with the gravity wave spectrum --> - <scheme>calc_taucd</scheme> <!-- Project stress into directional components --> - <scheme>egwdffi_tot_calc</scheme> <!-- add diffusion coefficients (manageable by registry/framework?) --> - <scheme>momentum_flux_calc</scheme> <!-- Calculate momentum fluxes/wind tendencies --> - <scheme>energy_change</scheme> <!-- Calculate atmospheric energy change --> - <scheme>energy_fixer</scheme> <!-- Ensure energy conservation --> - <scheme>gw_cam_update</scheme> <!-- Placeholder for CAM gravity wave updates and diagnostic output calculations --> - <!-- +++++++++++++++++++++++++ --> - <!-- **************************** --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>lunar_tides_tend</scheme> <!-- Calculate horizontal wind tendencies due to M2 lunar tide, but only if apply_lunar_tides is True --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAP' --> - <scheme>nudging_timestep_tend</scheme> <!-- Apply nudging to horizontal winds, heat, and water vapor, and output diagnostics, but only if nudging is turned on. --> - <scheme>check_energy_chng</scheme> <!-- Global integral checker required for certain diagnostic outputs --> - <scheme>set_dry_to_wet</scheme> <!-- Only matters if dycore is FV (LR) or SE --> - <!-- Dry air mass adjuster --> <!-- Only matters if dycore is FV (LR), otherwise this calculation is purely diagnostic --> - <!-- **************************** --> - <scheme>qfac_state_adjust</scheme> <!-- Adjust state variables based off the change in water vapor --> - <scheme>geopotential_dse</scheme> <!-- Calculate the temperatue and geopotential height using pressure and dry static energy --> - <!-- **************************** --> - <scheme>calc_te_and_aam_budgets</scheme> <!-- Managed by host model? Diagnostic output suffix = 'pAM' --> - <scheme>dtcore_reset</scheme> <!-- Reset "dtcore" variable to equal temperature --> - <scheme>diag_phys_tend_writeout</scheme> <!-- Calculate physics diagnostic variables, and output them to history file --> - <scheme>clybry_fam_set</scheme> <!-- Set ClOy and BrOy mass mixig ratios. Only matters if chemistry package with Cly and Bry is used --> - </time_split> - </group> -</suite> diff --git a/suites/suite_cam7.xml b/suites/suite_cam7.xml index 7351223d..85c5d8de 100644 --- a/suites/suite_cam7.xml +++ b/suites/suite_cam7.xml @@ -7,15 +7,19 @@ <!-- After gmean, output global mean energy diagnostics --> <scheme>check_energy_gmean_diagnostics</scheme> - <!-- Add global mean energy difference as heating (diff between gmean and save_teout) --> + <!-- + Global energy fixer (check_energy_fix) + Add global mean energy difference as heating (diff between gmean and save_teout) + --> <scheme>check_energy_zero_fluxes</scheme> <scheme>check_energy_fix</scheme> <scheme>apply_heating_rate</scheme> <scheme>geopotential_temp</scheme> - - <!-- Check that energy and water change matches the boundary fluxes --> + <!-- Check that energy and water change matches the boundary fluxes, update global energy --> <scheme>check_energy_scaling</scheme> <scheme>check_energy_chng</scheme> + <!-- Global energy fixer diagnostics (must run after check_energy_chng which updates global energies, but before zero_fluxes zeroes out boundary fluxes from energy fixer) --> + <scheme>check_energy_fix_diagnostics</scheme> <!-- Dry Adiabatic Adjustment --> <scheme>dadadj</scheme>