ufs-community / ccpp-physics

UFS fork for CCPP
Other
4 stars 34 forks source link

How to shut off parameterized mixing of tracers #47

Open aschuh opened 1 year ago

aschuh commented 1 year ago

I'm tasked with putting passive tracers into UFS. I'm adding a few tracers into the field_table and diag_table and dumping into the tracer arrays in UFS. It appears to be working. However, I'm getting a small continuous loss of global tracer mass (0.5ppm per 6 hrs on 400ppm bgd) and local unmixing of flat tracer fields. I've noticed a lot spurious concs near the top few model levels. I'd like to investigate to what degree this is caused by advection in FV3 (probably smaller but not insignificant piece), or possibly parameterized mixing of the tracers by either the PBL or convection routines. I'd essentially like to know how to turn off/on any parameterized mixing schemes in order to reduce the model to pure advection by FV3. For now, I'm using the FV3_GFS_v17_p8 scheme w /the merra2_thompson as the RT sandbox choice. I'm assuming I'll need to remove/comment_out pieces of the following physics scheme file? Does anybody know which ones are relevant? And as I move to other physics suites, how should I approach this same question?

#####################

<?xml version="1.0" encoding="UTF-8"?>

GFS_time_vary_pre GFS_rrtmg_setup GFS_rad_time_vary GFS_phys_time_vary GFS_suite_interstitial_rad_reset GFS_rrtmg_pre GFS_radiation_surface rad_sw_pre rrtmg_sw rrtmg_sw_post rrtmg_lw_pre rrtmg_lw rrtmg_lw_post GFS_rrtmg_post GFS_suite_interstitial_phys_reset GFS_suite_stateout_reset get_prs_fv3 GFS_suite_interstitial_1 GFS_surface_generic_pre GFS_surface_composites_pre dcyc2t3 GFS_surface_composites_inter GFS_suite_interstitial_2 sfc_diff GFS_surface_loop_control_part1 sfc_nst_pre sfc_nst sfc_nst_post noahmpdrv sfc_sice GFS_surface_loop_control_part2 GFS_surface_composites_post sfc_diag sfc_diag_post GFS_surface_generic_post GFS_PBL_generic_pre satmedmfvdifq GFS_PBL_generic_post gml_ghg_emi_wrapper GFS_GWD_generic_pre unified_ugwp unified_ugwp_post GFS_GWD_generic_post GFS_suite_stateout_update ozphys_2015 h2ophys get_phi_fv3 GFS_suite_interstitial_3 GFS_DCNV_generic_pre samfdeepcnv GFS_DCNV_generic_post GFS_SCNV_generic_pre samfshalcnv GFS_SCNV_generic_post GFS_suite_interstitial_4 cnvc90 GFS_MP_generic_pre mp_thompson_pre gml_ghg_wrapper mp_thompson mp_thompson_post GFS_MP_generic_post maximum_hourly_diagnostics GFS_stochastics phys_tend
dustinswales commented 1 year ago

Hi @aschuh, the "turning off" of parameterizations is not directly supported at the moment, but that's not to say it's not possible, or in the pipeline. If you simply cut out pieces of a supported SDF, like the one above, there's no guarantee that it will work or produce sensible results. In addition to the supported SDF, there are accompanying supported namelists (SCM, UFSa and UFSb) that need to adjusted.

However, if you want to go in to the code and comment/add some code for testing purposes, I can provide some guidance.

A little background information on the schemes in this SDF, some schemes directly update the internal physics state (time-splitting), whereas some save the tendencies and update the internal state later (process-splitting). So to turn things off, or zero out the evolution of the internal physics state, you need to do different things for different types of schemes. For example, in the PBL scheme (sa-TKE-EDMF; process-split), the tracer tendencies are updated here. The interstitial variable with the standard name "tendency_of_vertically_diffused_tracer_concentration" is then applied in GFS_suite_stateout_update. Then for the convection schemes (time-split), the interstitial "convective_transportable_tracers" is modified within [samfdeepcnv.f] (https://github.com/ufs-community/ccpp-physics/blob/ufs/dev/physics/samfdeepcnv.f) and samfshalcnv.f.

I think these are the relevant pieces for this suite, and will differ by SDF, but hopefully this helps get you going.