Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose 3D heating rates from radiation multi-calls as diagnostics #60

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

spencerkclark
Copy link
Member

@spencerkclark spencerkclark commented Jan 8, 2025

Description

#51 introduced the machinery to compute and output radiation diagnostics from SHiELD with scaled CO2 concentration. However, it only provided diagnostics for the surface and top of atmosphere fluxes. Having vertically resolved heating rate information can also be valuable. This PR makes the mostly boilerplate / plumbing updates needed to expose the 3D heating rates computed by the radiation multi-calls as diagnostics in a similar way.

The usage is the same as that described in #51, though one must also specify gfs_physics_nml.ldiag3d = .true.. The multi-call diagnostics exposed have names of the form:

  • gfs_phys/tendency_of_air_temperature_due_to_longwave_heating_with_scaled_co2_1
  • gfs_phys/tendency_of_air_temperature_due_to_shortwave_heating_with_scaled_co2_1
  • gfs_phys/tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_with_scaled_co2_1
  • gfs_phys/tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_with_scaled_co2_1

As we do with the existing versions of these diagnostics—i.e. those with the model-active CO2 concentration—we scale their values by the appropriate ratio of $c_p$ to the moist specific heat relevant to the configuration of the dynamical core to ensure that what is output is consistent with how the tendencies would be felt by the rest of the model.

Note these are diagnostics-manager-controlled fields, meaning that time aggregation (e.g. snapshot versus interval-averaged) can be configured through the diagnostics table.

How Has This Been Tested?

As in #51 this has been tested to ensure that:

  • Using a scale factor of 1.0 produces radiative flux diagnostics that bitwise-reproduce the main radiative flux diagnostics.
  • Using other scale factors, e.g. 0.0 and 4.0, produces plausible results if we compare to results with a scale factor of 1.0.
  • Running with these multiple diagnostic radiation calls does not change the evolution of the model.

This notebook illustrates the first two bullet points of these tests.

Difference between 4xCO2 and 1xCO2

2025-01-08-vertical-profile-of-heating-rate-perturbations

Difference between 0xCO2 and 1xCO2

2025-01-08-vertical-profile-of-heating-rate-perturbations-0xCO2

Checklist:

Please check all whether they apply or not

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

Copy link
Contributor

@lharris4 lharris4 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me. Excellent testing and validation!

@spencerkclark
Copy link
Member Author

Thanks @lharris4!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants