Conversation
This PR implements multiple diagnostic bucket reset periods for total totprcpb and convective cnvprcpb preciptitation variables by combining different accumulation amounts into an additional dimension with number_of_diagnostic_buckets. More bucket diagnostics (e.g., snow, ice, freezing ice, graupel) could be added to this list. Note this PR does not affect the accumulation of physics tendencies or radiative fluxes. This PR also removes unused bucket-related variables. No need to pass fhzero and cnvprcpb as arguments in GWD and SCNV schemes, respectively.
climbfuji
left a comment
There was a problem hiding this comment.
Thanks @matusmartini !
|
@matusmartini @climbfuji I'm wondering if this would be better targeted to ufs/dev. Diagnostics and their buckets are generally more of a host-controlled thing. While it certainly has tentacles into the physics code as evidenced here, perhaps it would be better served to have an associated UFSATM PR to go with this to discuss with other developers that are interested in the diagnostics piece. |
|
I agree that a discussion should include CCPP users and developers from all organizations, perhaps best at the Wedneday CCPP physics meetings. However, the development workflow that was laid out in the past clearly has each organization contribute its changes back to the authoritative repository. The changes will then be propagated to the other models. |
Understood RE: dev workflow. It just seems like there is a larger question here with respect to handling diagnostics that is larger than just physics, hence my confusion on how best to proceed with this particular PR. Adding one more diagnostic bucket is simple enough, and, if UFS devs don't care to have different fhzero values, then that is easy enough to set the new value from the existing one in GFS_typedefs. However, there may be a question as to whether a particular host requiring different diagnostics (that have a need to be calculated within the physics code) have separate interstitials. If this really is a one-time change (or very infrequent), then keeping the same interstitials for UFS/NEPTUNE is probably still the best course, but if NRL envisions more differences between UFS and NEPTUNE diagnostics, at what point would it make sense to carry different interstitials? |
There is also Steve's comment in the ESM Standard Names repo about climate models that may want to CHANGE frequency of accumulations during long runs ... and a long time ago we discussed that CCPP should provide a diagnostics module (which it doesn't yet, and may not for some time). IMO it would be nice to discuss this at one of the next CCPP Physics meetings. If this might be useful for the UFS, then we can proceed with adding it to the same set interstitial scheme. Otherwise, we reconsider what the best course of action is? |
|
@matusmartini Thanks for these changes. I view the bucket interval, and in general accumulating diagnostics, as a host/interstitial issue. So this solution works for me since you are accumulating outside of the primary scheme and emptying the buckets on the host side. My only suggestion would be to change |
The buckets are for diagnostic purposes only. Are you suggesting to combine data for diagnostics with interstitial data (that isn't really interstitial, because it crosses groups). The latter would likely be allocated and managed by capgen instead of the host model? |
|
After thinking about this some more, I'll approve these changes as-is because the actual code changes are completely transparent to the host except for the need to define In this context though, these changes are quite limited (only 2 of the many diagnostic variables). It is clear to me that there is an obvious need for a more thorough diagnostic solution. Rather than every host having to do their own bucket management, I really like the idea of the CCPP framework providing a solution, although I don't think that there are funds/time to add this ATM. If one were to extend the idea presented in this PR, it would look something like the following:
|
@climbfuji |
@grantfirl I agree, but with a slight twist. |
|
@matusmartini @climbfuji This is combined into #1178 for testing |
Description of Changes:
Currently the accumulation period for clearing diagnostics can be specified by a single value in
fhzerofor all cumulative diagnostics (physics tendencies, radiative fluxes, and precipitation amounts). This PR implements multiple diagnostic reset periods for totaltotprcpband convectivecnvprcpbpreciptitation variables by combining different accumulation amounts into an additional dimension withnumber_of_diagnostic_buckets. More bucket diagnostics (e.g., snow, ice, freezing ice, graupel) could be added to this list.Note this PR does not affect the accumulation of physics tendencies or radiative fluxes.
This PR also removes unused bucket-related variables. No need to pass
fhzeroandcnvprcpbas arguments in GWD and SCNV schemes, respectively.Tests Conducted:
None, but used in NEPTUNE.
Dependencies:
At minimum, this update will require following changes in https://github.com/NOAA-EMC/ufsatm
In
ccpp/data/GFS_typedefs.meta, adding:And adding the second dimension:
for
totprcpbandcnvprcpb.In NEPTUNE, we also added a new namelist parameter
fhzero_precipto specify accumulations (e.g., 3, 6, 12, 24 hours):and
GFS_diag_type-bound procedurediag_bucket_zero.Documentation:
None.
Issue:
None, but a related issue is ESCOMP/ESMStandardNames#130 if standard_name needs bucket length information as part of the diagnostics name.