NCAR / ccpp-physics

GFS physics for CCPP
Other
58 stars 145 forks source link

change cloud radiation property calculations #968

Closed Qingfu-Liu closed 1 year ago

Qingfu-Liu commented 1 year ago

Calculations of the cloud radiative properties are modified in both RRTMG and RRTMGP. In the new code, the variables 1) cloud liquid water, 2) cloud ice water, 3) rain water, 4) snow water, 5) convective cloud water, are included in the cloud cover and cloud radiative flux calculations in both radiation schemes. The changes are: RRTMG: convective cloud water (liquid + ice) is added in the cloud radiative flux calculation RRTMGP: rainwater and convective cloud water are added in the cloud cover calculation, and graupel is removed in both cloud cover and cloud radiative flux calculations

Qingfu-Liu commented 1 year ago

The following two files are modified: 1) radiation_clouds.f 2) GFS_rrtmgp_cloud_mp.F90

dustinswales commented 1 year ago

@Qingfu-Liu It seems that your code base is not up-to-date with NCAR/main. Just looking at the changes to GFS_rrtmgp_cloud_mp.F90, it appears that all of the recent doxygen documentation introduced by @mzhangw was removed.

My I ask what the motivation is for these changes to the GP cloud coupling? It seems that you are adding back in the "cloud-fraction smearing", something that we don't need, nor want, to do in RRTMGP.

You add a new routine to compute the Xu-Randall cloud fraction, replacing the call to an existing, and more general, routine used to compute Xu-Randall cloud-fraction throughout this module.

Before calling this routine you modify the cloud condensate as follows:

Qingfu-Liu commented 1 year ago

Hi Dustin, First, the PR is closed, but I am happy to receive your comments. Here is the answer to some of your questions: 1) I did not see that the convective cloud is counted twice Xu-Randall scheme only calculates the cloud fraction, it does not calculate the cloud water/ice water path. Variable "clwf" is only used to calculate the cloud fraction. In the code "rrtmgp_sw_cloud_optics.F90" and "rrtmgp_lw_cloud_optics.F90", only cloud radiative flux is calculated for convective clouds. I did not find anywhere you calculated the cloud cover for convective cloud water in the radiation code. Can you tell me which subroutine calculates the cloud cover for convective cloud water? 2) I saw Man's change, but I am not sure if the changes are new or old, and I plan to change it later (after reviewer's comments). 3) I change the cloud cover calculation (and a new subroutine for Xu-Randall) and remove the graupel in both the cloud cover and flux calculations, in order to be consistent with the cloud cover and flux calculation the same way as the current RRTMG. If you do not like it, I can add an option to create an EMC version, you can keep your original version. Qingfu

On Tue, Sep 20, 2022 at 12:46 PM dustinswales @.***> wrote:

@Qingfu-Liu https://github.com/Qingfu-Liu It seems that your code base is not up-to-date with NCAR/main. Just looking at the changes to GFS_rrtmgp_cloud_mp.F90 https://github.com/NCAR/ccpp-physics/commits/main/physics/GFS_rrtmgp_cloud_mp.F90, it appears that all of the recent doxygen documentation introduced by @mzhangw https://github.com/mzhangw was removed.

My I ask what the motivation is for these changes to the GP cloud coupling? It seems that you are adding back in the "cloud-fraction smearing", something that we don't need, nor want, to do in RRTMGP.

You add a new routine https://github.com/NCAR/ccpp-physics/pull/968/files#diff-fe35732cf13d25c68d7e8a7029e7f3402394b525f0a3a1383a2855280b063fe2R889 to compute the Xu-Randall cloud fraction, replacing the call to an existing, and more general https://github.com/NCAR/ccpp-physics/blob/9a0871dd5842c1379ff6a50d5080d13c7afd3315/physics/GFS_rrtmgp_cloud_mp.F90#L772, routine used to compute Xu-Randall cloud-fraction throughout this module.

Before calling this routine you modify the cloud condensate as follows:

  • q = q(cld_liq)+q(cld_ice)+q(cld_rain)+q(cld_snow+cld_grpl)

  • q = q(cld_liq)+q(cld_ice)+q(cld_rain)+q(cld_snow)+ q(cld_cnv) Removing the groupel, adding in convective condensate. This is problem since GP adds in the convective cloud later on, so by doing this you are adding the convective cloud twice.

— Reply to this email directly, view it on GitHub https://github.com/NCAR/ccpp-physics/pull/968#issuecomment-1252625887, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGTS6UT7OVVSE6LG4X47BHTV7HS5DANCNFSM6AAAAAAQRHPURA . You are receiving this because you were mentioned.Message ID: @.***>

dustinswales commented 1 year ago

@Qingfu-Liu Sorry, there's a lot going on under the hood that I should've highlighted earlier regarding the differences in cloud coupling between G and GP.

In GFS_v16 physics, clouds are treated the same in RRTMG and RRTMGP, where the radiation only sees one cloud, a cloud that has grid-mean cloudiness (e.g. Thompson, GFDL) blended with whatever other subgridscale cloudiness (SAMF, GF, MYNN) happens to be active and coupled to the radiation. Starting with GFS_v17, the RRTMGP coupling doesn't blend all of the active cloud types into one, but rather each are treated independently.

When using RRTMG, only one set of cloud radiative properties (LWP, IWP, Reffice, Reffliq) are provided, which are used internally to compute the cloud-optical properties (cld_tau, cld_ssa, cld_omega). These cloud-optical properties are combined with the optical properties from other contributors (gaseous atmosphere, aerosols) to compute the fluxes. In this case the total optical path seen by the solvers is _tau_tot = tau_cld + tau_aerosol + tau_gaseous, where taucld contains the contributions from all active clouds.

With RRTMGP the number of cloud types explicitly seen by the radiation can be extended such that, for example in the v17 coupling, _tau_tot = tau_cld_thompson + tau_cld_convective + tau_cld_PBL + tau_aerosol + taugaseous.

Why is this important for this PR? You are doing a combination of the two above methods, where you are adding the convective cloud condensate to the grid-mean cloud condensate in RRTMGP, but since GP is designed to treat these separately, the convective cloud-radiative properties are still being computed later on as well. So you are doing something like, _tau_tot = tau_cld + tau_cld_convective + tau_cld_PBL + tau_aerosol + tau_gaseous, where taucld contains the contributions from the gridmean and convective clouds.

As for the cloud-fraction subroutine, cloud_fraction_mass_flx_3, this is same code that already existed in cloud_mp_thompson().

In RRTMG the Xu-Randall cloud-fraction is computed in many places, which is not great practice. Within the GP module there is a general Xu-Randall routine that is invoked by several mp schemes. I say "general" because it's not dependent on model choices. For example, this Xu-Randall function doesn't care about lmfdeep2 or if it's value is overwritten in the case when the relative humidity is equal to one. In the GP implementation, this type of information is outside of Xu-Randall and included a step above as part of the mp logic. This separates the steps in the problem being addressed, allowing for common code to be shared among schemes, and hopefully reduces coding errors.

dustinswales commented 1 year ago

@Qingfu-Liu With all that being said, it EMC wants the option to use RRTMGP with the same exact cloud-coupling as is in RRTMG, that can easily be done, we did it for v16. I just wanted to emphasize that we don't want to do everything in RRTMGP the same way as was done in RRTMG way. GP was designed to be flexible and handle an arbitrary number of clouds, we should use that.

Qingfu-Liu commented 1 year ago

Hi Dustin, The code changes for convective cloud do not impact the calculations of tau_tot = tau_cld_thompson + tau_cld_convective + tau_cld_PBL + tau_aerosol + tau_gaseous The variable "clwf" is only used to calculate the cloud fraction, the change does not impact any of the variables LWP, IWP, Reffice, Reffliq. I think for cloud fraction calculation, adding the convective cloud water to the calculation is a good physics choice. Qingfu

On Tue, Sep 20, 2022 at 5:16 PM dustinswales @.***> wrote:

@Qingfu-Liu https://github.com/Qingfu-Liu With all that being said, it EMC wants the option to use RRTMGP with the same exact cloud-coupling as is in RRTMG, that can easily be done, we did it for v16. I just wanted to emphasize that we don't want to do everything in RRTMGP the same way as was done in RRTMG way. GP was designed to be flexible and handle an arbitrary number of clouds, we should use that.

— Reply to this email directly, view it on GitHub https://github.com/NCAR/ccpp-physics/pull/968#issuecomment-1252922097, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGTS6UQY2IKF2Y2NY2BEBOTV7ISTRANCNFSM6AAAAAAQRHPURA . You are receiving this because you were mentioned.Message ID: @.***>

yangfanglin commented 1 year ago

@dustinswales @Qingfu-Liu To clarify, the goal is not to revert the more advanced cloud-radiation coupling in RRTMGP back to that in RRTMG. As Qingfu presented last time at the physics group meeting, we noticed there were discrepancies, in both RRTMG and RRTMGP, between the MP hydrometers and convective cloud water used for cloud fraction computation and that used in radiative transfer. I discussed with Qingfu and we wanted to make them consistent within RRTMG, and independently within RRTMGP as well. I hope this clarify the issue a little bit. Let's check to see if this is doable in RRTMGP.

dustinswales commented 1 year ago

@Qingfu-Liu LWP, IWP, Reffice, Reffliq are computed using the Xu-Randall cloud-fraction, which uses the cloud condensate. So if you change the cloud condensate, you are changing the cloud-radiative properties that the radiation sees.